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