Mercurial > pub > Impl
diff lib/IMPL/Class/MemberInfo.pm @ 407:c6e90e02dd17 ref20150831
renamed Lib->lib
author | cin |
---|---|
date | Fri, 04 Sep 2015 19:40:23 +0300 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/IMPL/Class/MemberInfo.pm Fri Sep 04 19:40:23 2015 +0300 @@ -0,0 +1,84 @@ +package IMPL::Class::MemberInfo; +use strict; + +use IMPL::Const qw(:prop); +BEGIN { + our @ISA = qw(IMPL::Object::Accessor); +} + +require IMPL::Object::Accessor; +require IMPL::Exception; + +# использовать ClassPropertyImplementor не получится, поскольку он будет +# создавать экземпляры PropertyInfo, который не доописан (в нем не определены +# члены) +__PACKAGE__->mk_accessors( + qw( + name + access + class + attributes + ) +); + +our %CTOR = ( + 'IMPL::Object::Accessor' => undef +); + +sub CTOR { + my $this = shift; + + die new IMPL::Exception('The name is required for the member') unless $this->name; + die new IMPL::Exception('The class is required for the member') unless $this->class; + + $this->attributes({}) unless defined $this->attributes; + $this->access(3) unless $this->access; +} + +1; + +__END__ + +=pod + +=head1 NAME + +C<IMPL::Class::MemberInfo> - информация о члене класса. + +=head1 DESCRIPTION + +Данный класс является базовым для таких классов как C<IMPL::Class::PropertyInfo>, C<IMPL::Class::MethodInfo> и +предназначен для хренения метаданных. + +Данный класс наследуется от C<IMPL::Object::Accessor> и не содержит в себе метаданных о своих членах. + +=head1 MEMBERS + +=over + +=item C<[get,set] name> + +Имя члена. + +=item C<[get,set] access> + +Default public. + +Атрибут доступа ( public | private | protected ) + +=item C<[get,set] class> + +Класс владелец + +=item C<[get,set] attributes> + +Дополнительные атрибуты + +=item C<Implement()> + +При реализации собственного субкласса, данный метод может быть переопределен для +реализации дополнительной обработки (например, создание методов доступа для свойств). + +=back + +=cut