Mercurial > pub > Impl
view Lib/IMPL/Web/QueryHandler.pm @ 142:4c9849f0f879
minor changes
author | wizard |
---|---|
date | Wed, 07 Jul 2010 17:30:40 +0400 |
parents | 9d24db321029 |
children | 4267a2ac3d46 |
line wrap: on
line source
package IMPL::Web::QueryHandler; use base qw(IMPL::Object IMPL::Object::Autofill IMPL::Object::Serializable); use IMPL::Class::Property; __PACKAGE__->PassThroughArgs; use IMPL::Exception; sub Invoke { my ($self,$action,$nextHandler) = @_; if (not ref $self) { return $self->new( action => $action )->Invoke($action,$nextHandler); } else { return $self->Process($action,$nextHandler); } } sub Process { die new IMPL::NotImplementedException("The method isn't implemented", __PACKAGE__, 'Process'); } 1; __END__ =pod =head1 NAME Базовый класс для обработчиков запросов. =head1 SYNOPSIS Простой вариант =begin code package MyHandler; use base qw(IMPL::Web::QueryHandler); sub CTOR { my ($this,%args) = @_; } sub Process { my ($this,$action,$nextHandler) = @_; } =end code =head1 MEMBERS =over 4 =item C< Invoke($action,$nextHandler) > Вызывается механизмом обработки запроса, для передачи управления обработчику. Данная реализация проверяет контекст вызова, если как статический метод, то создает экземпляр класса и вызывает у созданного объекта метод C< Invoke > с параметрами C< $action >, C< $nextHandler >. При создании нового объекта в конструктор передается именованый параметр C<action>. Если метод был вызван у объекта, то управление передается методу C< Process >. =over =item C< $action > Экземпляр запроса =item C< $nextHandler > Делегат для вызова следующего обработчика. Вызывается без параметров, но следующему обработчику втоматически будут переданы необходимые параметры. =back =back =cut