Mercurial > pub > Impl
annotate Lib/IMPL/Class/MemberInfo.pm @ 267:bbc0da7ef90e
*IMPL::Web::View refactoring
| author | cin |
|---|---|
| date | Thu, 17 Jan 2013 02:39:44 +0400 |
| parents | 2904da230022 |
| children | 6253872024a4 |
| rev | line source |
|---|---|
| 49 | 1 package IMPL::Class::MemberInfo; |
| 2 use strict; | |
| 165 | 3 use parent qw(IMPL::Object::Accessor); |
| 49 | 4 |
| 5 require IMPL::Exception; | |
| 6 | |
| 7 __PACKAGE__->mk_accessors( | |
| 8 qw( | |
| 9 Name | |
| 10 Access | |
| 11 Class | |
| 12 Frozen | |
| 13 Implementor | |
| 14 Attributes | |
| 15 ) | |
| 16 ); | |
| 17 __PACKAGE__->PassThroughArgs; | |
| 18 | |
| 19 sub CTOR { | |
| 20 my $this = shift; | |
| 21 | |
| 22 die new IMPL::Exception('The name is required for the member') unless $this->Name; | |
| 23 die new IMPL::Exception('The class is required for the member') unless $this->Class; | |
| 24 | |
|
59
0f3e369553bd
Rewritten property implementation (probably become slower but more flexible)
wizard
parents:
49
diff
changeset
|
25 $this->Attributes({}) unless defined $this->Attributes; |
| 49 | 26 $this->Frozen(0); |
| 27 $this->Access(3) unless $this->Access; | |
| 28 } | |
| 29 | |
| 30 sub Implement { | |
| 31 my ($this) = @_; | |
| 32 $this->Implementor->Make($this); | |
| 33 $this->Frozen(1); | |
| 34 $this->Class->set_meta($this); | |
| 35 return; | |
| 36 } | |
| 37 | |
| 236 | 38 sub access { |
| 39 goto &Access; | |
| 40 } | |
| 41 | |
| 42 sub name { | |
| 43 goto &Name; | |
| 44 } | |
| 45 | |
| 163 | 46 1; |
| 47 | |
| 48 __END__ | |
| 49 | |
| 50 =pod | |
| 51 | |
| 52 =head1 NAME | |
| 53 | |
| 180 | 54 C<IMPL::Class::MemberInfo> - информация о члене класса. |
| 163 | 55 |
| 56 =head1 DESCRIPTION | |
| 57 | |
| 180 | 58 Данный класс является базовым для таких классов как C<IMPL::Class::PropertyInfo>, C<IMPL::Class::MethodInfo> и |
| 59 предназначен для хренения метаданных. | |
| 163 | 60 |
| 180 | 61 Данный класс наследуется от C<IMPL::Object::Accessor> и не содержит в себе метаданных о своих членах. |
| 163 | 62 |
| 63 =head1 MEMBERS | |
| 64 | |
| 65 =over | |
| 66 | |
| 67 =item C<[get,set] Name> | |
| 68 | |
| 180 | 69 Имя члена. |
| 163 | 70 |
| 71 =item C<[get,set] Access> | |
| 72 | |
| 73 Default public. | |
| 49 | 74 |
| 180 | 75 Атрибут доступа ( public | private | protected ) |
| 163 | 76 |
| 77 =item C<[get,set] Class> | |
| 78 | |
| 180 | 79 Класс владелец |
| 163 | 80 |
| 81 =item C<[get,set] Frozen> | |
| 82 | |
| 180 | 83 Флаг невозможности внесения изменений |
| 163 | 84 |
| 85 =item C<[get,set] Attributes> | |
| 86 | |
| 180 | 87 Дополнительные атрибуты |
| 163 | 88 |
| 89 =item C<Implement()> | |
| 90 | |
| 180 | 91 Устанавливает C<Frozen> в C<1>, добавляет в метаданные класса. |
| 163 | 92 |
| 180 | 93 При реализации собственного субкласса, данный метод может быть переопределен для |
| 94 реализации дополнительной обработки (например, создание методов доступа для свойств). | |
| 163 | 95 |
| 96 =back | |
| 97 | |
| 98 =cut |
