Mercurial > pub > Impl
comparison Lib/IMPL/Class/Meta.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 | eb3e9861a761 |
children | 59e5fcb59d86 |
comparison
equal
deleted
inserted
replaced
164:eb3e9861a761 | 165:76515373dac0 |
---|---|
105 | 105 |
106 =begin code | 106 =begin code |
107 | 107 |
108 package InfoMeta; | 108 package InfoMeta; |
109 | 109 |
110 use base qw(IMPL::Object IMPL::Object::Autofill); | 110 use parent qw(IMPL::Object IMPL::Object::Autofill); |
111 use IMPL::Class::Property; | 111 use IMPL::Class::Property; |
112 | 112 |
113 __PACKAGE__->PassThroughArgs; | 113 __PACKAGE__->PassThroughArgs; |
114 | 114 |
115 BEGIN { | 115 BEGIN { |
116 public property name => prop_get | owner_set; | 116 public property name => prop_get | owner_set; |
117 } | 117 } |
118 | 118 |
119 package InfoExMeta; | 119 package InfoExMeta; |
120 use base qw(InfoMeta); | 120 use parent qw(InfoMeta); |
121 | 121 |
122 __PACKAGE__->PassThroughArgs; | 122 __PACKAGE__->PassThroughArgs; |
123 | 123 |
124 BEGIN { | 124 BEGIN { |
125 public property description => prop_all; | 125 public property description => prop_all; |
213 которые могут быть изменены или заменены субклассами. | 213 которые могут быть изменены или заменены субклассами. |
214 | 214 |
215 =begin code | 215 =begin code |
216 | 216 |
217 package Foo; | 217 package Foo; |
218 use base qw(IMPL::Class::Meta); | 218 use parent qw(IMPL::Class::Meta); |
219 | 219 |
220 __PACKAGE__->class_data( info => { version => 1 } ); # will be default for all subclasses | 220 __PACKAGE__->class_data( info => { version => 1 } ); # will be default for all subclasses |
221 | 221 |
222 sub say_version { | 222 sub say_version { |
223 my ($self) = @_; | 223 my ($self) = @_; |
224 | 224 |
225 print $self->class_data('info')->{version}; | 225 print $self->class_data('info')->{version}; |
226 } | 226 } |
227 | 227 |
228 package Bar; | 228 package Bar; |
229 use base qw(Foo); | 229 use parent qw(Foo); |
230 | 230 |
231 __PACKAGE__->class_data('info')->{ language } = 'English'; | 231 __PACKAGE__->class_data('info')->{ language } = 'English'; |
232 | 232 |
233 package main; | 233 package main; |
234 | 234 |
247 изменение которых не коснется ни базового класса, ни соседей. | 247 изменение которых не коснется ни базового класса, ни соседей. |
248 | 248 |
249 =begin code | 249 =begin code |
250 | 250 |
251 package Foo; | 251 package Foo; |
252 use base qw(IMPL::Class::Meta); | 252 use parent qw(IMPL::Class::Meta); |
253 | 253 |
254 __PACKAGE__->static_accessor( info => { version => 1 } ); | 254 __PACKAGE__->static_accessor( info => { version => 1 } ); |
255 | 255 |
256 package Bar; | 256 package Bar; |
257 use base qw(Foo); | 257 use parent qw(Foo); |
258 | 258 |
259 __PACKAGE__->info->{language} = 'English'; # Foo->info->{language} will become 'English' to!!! | 259 __PACKAGE__->info->{language} = 'English'; # Foo->info->{language} will become 'English' to!!! |
260 __PACKAGE__->info({language => 'English'}); # will define own 'info' but will loose original data. | 260 __PACKAGE__->info({language => 'English'}); # will define own 'info' but will loose original data. |
261 | 261 |
262 =end code | 262 =end code |