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 |
