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 |