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
|