Mercurial > pub > Impl
comparison Lib/IMPL/Object.pm @ 165:76515373dac0
Added Class::Template,
Rewritten SQL::Schema
'use parent' directive instead of 'use base'
author | wizard |
---|---|
date | Sat, 23 Apr 2011 23:06:48 +0400 |
parents | e6447ad85cb4 |
children | d1676be8afcc |
comparison
equal
deleted
inserted
replaced
164:eb3e9861a761 | 165:76515373dac0 |
---|---|
1 package IMPL::Object; | 1 package IMPL::Object; |
2 use strict; | 2 use strict; |
3 | 3 |
4 use base qw(IMPL::Object::Abstract); | 4 use parent qw(IMPL::Object::Abstract); |
5 | 5 |
6 sub surrogate { | 6 sub surrogate { |
7 bless {}, ref $_[0] || $_[0]; | 7 bless {}, ref $_[0] || $_[0]; |
8 } | 8 } |
9 | 9 |
28 =head1 SINOPSYS | 28 =head1 SINOPSYS |
29 | 29 |
30 =begin code | 30 =begin code |
31 | 31 |
32 package Foo; | 32 package Foo; |
33 use base qw(IMPL::Object); | 33 use parent qw(IMPL::Object); |
34 | 34 |
35 sub CTOR { | 35 sub CTOR { |
36 my ($this,$arg) = @_; | 36 my ($this,$arg) = @_; |
37 print "Foo: $arg\n"; | 37 print "Foo: $arg\n"; |
38 } | 38 } |
39 | 39 |
40 package Bar; | 40 package Bar; |
41 use base qw(IMPL::Object); | 41 use parent qw(IMPL::Object); |
42 | 42 |
43 sub CTOR { | 43 sub CTOR { |
44 my ($this,$arg) = @_; | 44 my ($this,$arg) = @_; |
45 print "Bar: $arg\n"; | 45 print "Bar: $arg\n"; |
46 } | 46 } |
47 | 47 |
48 package Baz; | 48 package Baz; |
49 use base qw(Foo Bar); | 49 use parent qw(Foo Bar); |
50 | 50 |
51 our %CTOR = ( | 51 our %CTOR = ( |
52 Foo => sub { my %args = @_; $args{Mazzi}; }, | 52 Foo => sub { my %args = @_; $args{Mazzi}; }, |
53 Bar => sub { my %args = @_; $args{Fugi}; } | 53 Bar => sub { my %args = @_; $args{Fugi}; } |
54 ); | 54 ); |
55 | 55 |
56 package Composite; | 56 package Composite; |
57 use base qw(Baz Foo Bar); | 57 use parent qw(Baz Foo Bar); |
58 | 58 |
59 our %CTOR = ( | 59 our %CTOR = ( |
60 Foo => undef, | 60 Foo => undef, |
61 Bar => undef | 61 Bar => undef |
62 ); | 62 ); |
102 | 102 |
103 =back | 103 =back |
104 | 104 |
105 =head1 Cavearts | 105 =head1 Cavearts |
106 | 106 |
107 Нужно заметить, что директива C<use base> работает не совсем прозрачно, если в нашем примере | 107 Нужно заметить, что директива C<use parent> работает не совсем прозрачно, если в нашем примере |
108 класс C<Composite> наследуется от C<Baz>, а затем C<Foo>, то наследование от | 108 класс C<Composite> наследуется от C<Baz>, а затем C<Foo>, то наследование от |
109 C<Foo> не произойдет поскольку он уже имеется в C<Baz>. Вот не задача:) | 109 C<Foo> не произойдет поскольку он уже имеется в C<Baz>. Вот не задача:) |
110 | 110 |
111 =cut | 111 =cut |