Mercurial > pub > Impl
view Lib/IMPL/Class/MemberInfo.pm @ 369:7c784144d2f1
Implemented object metadata class, cleanup
author | cin |
---|---|
date | Mon, 09 Dec 2013 17:35:34 +0400 |
parents | 4ddb27ff4a0b |
children |
line wrap: on
line source
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