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