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