| 49 | 1 package IMPL::Class::MemberInfo; | 
|  | 2 use strict; | 
|  | 3 | 
| 278 | 4 use IMPL::Const qw(:prop); | 
|  | 5 BEGIN { | 
|  | 6     our @ISA = qw(IMPL::Object::Accessor); | 
|  | 7 } | 
|  | 8 | 
|  | 9 require IMPL::Object::Accessor; | 
| 49 | 10 require IMPL::Exception; | 
|  | 11 | 
| 278 | 12 # использовать ClassPropertyImplementor не получится, поскольку он будет | 
|  | 13 # создавать экземпляры PropertyInfo, который не доописан (в нем не определены | 
|  | 14 # члены) | 
| 49 | 15 __PACKAGE__->mk_accessors( | 
|  | 16     qw( | 
| 275 | 17         name | 
|  | 18         access | 
|  | 19         class | 
|  | 20         attributes | 
| 49 | 21     ) | 
|  | 22 ); | 
| 278 | 23 | 
|  | 24 our %CTOR = ( | 
|  | 25     'IMPL::Object::Accessor' => undef | 
|  | 26 ); | 
| 49 | 27 | 
|  | 28 sub CTOR { | 
|  | 29     my $this = shift; | 
| 278 | 30 | 
| 275 | 31     die new IMPL::Exception('The name is required for the member') unless $this->name; | 
|  | 32     die new IMPL::Exception('The class is required for the member') unless $this->class; | 
| 49 | 33 | 
| 275 | 34     $this->attributes({}) unless defined $this->attributes; | 
|  | 35     $this->access(3) unless $this->access; | 
| 49 | 36 } | 
|  | 37 | 
| 163 | 38 1; | 
|  | 39 | 
|  | 40 __END__ | 
|  | 41 | 
|  | 42 =pod | 
|  | 43 | 
|  | 44 =head1 NAME | 
|  | 45 | 
| 180 | 46 C<IMPL::Class::MemberInfo> - информация о члене класса. | 
| 163 | 47 | 
|  | 48 =head1 DESCRIPTION | 
|  | 49 | 
| 180 | 50 Данный класс является базовым для таких классов как C<IMPL::Class::PropertyInfo>, C<IMPL::Class::MethodInfo> и | 
|  | 51 предназначен для хренения метаданных. | 
| 163 | 52 | 
| 180 | 53 Данный класс наследуется от C<IMPL::Object::Accessor> и не содержит в себе метаданных о своих членах. | 
| 163 | 54 | 
|  | 55 =head1 MEMBERS | 
|  | 56 | 
|  | 57 =over | 
|  | 58 | 
| 275 | 59 =item C<[get,set] name> | 
| 163 | 60 | 
| 180 | 61 Имя члена. | 
| 163 | 62 | 
| 275 | 63 =item C<[get,set] access> | 
| 163 | 64 | 
|  | 65 Default public. | 
| 49 | 66 | 
| 180 | 67 Атрибут доступа ( public | private | protected ) | 
| 163 | 68 | 
| 275 | 69 =item C<[get,set] class> | 
| 163 | 70 | 
| 180 | 71 Класс владелец | 
| 163 | 72 | 
| 275 | 73 =item C<[get,set] attributes> | 
| 163 | 74 | 
| 180 | 75 Дополнительные атрибуты | 
| 163 | 76 | 
|  | 77 =item C<Implement()> | 
|  | 78 | 
| 180 | 79 При реализации собственного субкласса, данный метод может быть переопределен для | 
|  | 80 реализации дополнительной обработки (например, создание методов доступа для свойств). | 
| 163 | 81 | 
|  | 82 =back | 
|  | 83 | 
|  | 84 =cut |