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