Mercurial > pub > Impl
comparison Lib/IMPL/Web/QueryHandler.pm @ 62:c64bd1bf727d
Web application
Page query handler
| author | wizard |
|---|---|
| date | Fri, 12 Mar 2010 16:23:46 +0300 |
| parents | |
| children | 2840c4c85db8 |
comparison
equal
deleted
inserted
replaced
| 61:8d0ae27d15c1 | 62:c64bd1bf727d |
|---|---|
| 1 package IMPL::Web::QueryHandler; | |
| 2 | |
| 3 use base qw(IMPL::Object IMPL::Object::Autofill); | |
| 4 use IMPL::Class::Property; | |
| 5 | |
| 6 __PACKAGE__->PassThroughArgs; | |
| 7 | |
| 8 use IMPL::Exception; | |
| 9 | |
| 10 sub Invoke { | |
| 11 my ($self,$action,$nextHandler) = @_; | |
| 12 | |
| 13 if (not ref $self or UNIVERSAL::isa($self,'IMPL::Object::Factory')) { | |
| 14 return $self->new( action => $action )->Invoke($action,$nextHandler); | |
| 15 } else { | |
| 16 return $self->Process($action,$nextHandler); | |
| 17 } | |
| 18 } | |
| 19 | |
| 20 sub Process { | |
| 21 die new NotImplementedException("The method isn't implemented", __PACKAGE__, 'Process'); | |
| 22 } | |
| 23 | |
| 24 1; | |
| 25 | |
| 26 __END__ | |
| 27 | |
| 28 =pod | |
| 29 | |
| 30 =head1 DESCRIPTION | |
| 31 | |
| 32 Базовый класс для обработчиков запросов. | |
| 33 | |
| 34 =head1 MEMBERS | |
| 35 | |
| 36 =over 4 | |
| 37 | |
| 38 =item C< Invoke($action,$nextHandler) > | |
| 39 | |
| 40 Вызывается механизмом обработки запроса, для передачи управления обработчику. Данная реализация | |
| 41 проверяет как была вызвана, если как статический метод, то создает экземпляр класса и вызывает | |
| 42 у созданного объекта метод C< Invoke > с параметрами C< $action >, C< $nextHandler >. | |
| 43 | |
| 44 Если метод был вызван у объекта, то управление передается методу C< Process > | |
| 45 | |
| 46 C< $action > Экземпляр запроса | |
| 47 | |
| 48 C< $nextHandler > Делегат для вызова следующего обработчика. Вызывается без параметров, но следующему обработчику | |
| 49 втоматически будут переданы необходимые параметры. | |
| 50 | |
| 51 =back | |
| 52 | |
| 53 =cut |
