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 |