62
|
1 package IMPL::Web::QueryHandler;
|
|
2
|
166
|
3 use parent qw(IMPL::Object IMPL::Object::Autofill IMPL::Object::Serializable);
|
62
|
4 use IMPL::Class::Property;
|
|
5
|
|
6 __PACKAGE__->PassThroughArgs;
|
|
7
|
|
8 use IMPL::Exception;
|
|
9
|
|
10 sub Invoke {
|
|
11 my ($self,$action,$nextHandler) = @_;
|
|
12
|
65
|
13 if (not ref $self) {
|
62
|
14 return $self->new( action => $action )->Invoke($action,$nextHandler);
|
|
15 } else {
|
|
16 return $self->Process($action,$nextHandler);
|
|
17 }
|
|
18 }
|
|
19
|
|
20 sub Process {
|
77
|
21 die new IMPL::NotImplementedException("The method isn't implemented", __PACKAGE__, 'Process');
|
62
|
22 }
|
|
23
|
|
24 1;
|
|
25
|
|
26 __END__
|
|
27
|
|
28 =pod
|
|
29
|
65
|
30 =head1 NAME
|
62
|
31
|
180
|
32 Базовый класс для обработчиков запросов.
|
62
|
33
|
65
|
34 =head1 SYNOPSIS
|
|
35
|
180
|
36 Простой вариант
|
65
|
37
|
|
38 =begin code
|
|
39
|
|
40 package MyHandler;
|
|
41
|
166
|
42 use parent qw(IMPL::Web::QueryHandler);
|
65
|
43
|
|
44 sub CTOR {
|
|
45 my ($this,%args) = @_;
|
|
46
|
|
47 }
|
|
48
|
|
49 sub Process {
|
|
50 my ($this,$action,$nextHandler) = @_;
|
|
51
|
|
52 }
|
|
53
|
|
54 =end code
|
|
55
|
62
|
56 =head1 MEMBERS
|
|
57
|
|
58 =over 4
|
|
59
|
|
60 =item C< Invoke($action,$nextHandler) >
|
|
61
|
180
|
62 Вызывается механизмом обработки запроса, для передачи управления обработчику. Данная реализация
|
|
63 проверяет контекст вызова, если как статический метод, то создает экземпляр класса и вызывает
|
|
64 у созданного объекта метод C< Invoke > с параметрами C< $action >, C< $nextHandler >.
|
62
|
65
|
180
|
66 При создании нового объекта в конструктор передается именованый параметр C<action>.
|
65
|
67
|
180
|
68 Если метод был вызван у объекта, то управление передается методу C< Process >.
|
65
|
69
|
|
70 =over
|
62
|
71
|
65
|
72 =item C< $action >
|
|
73
|
180
|
74 Экземпляр запроса
|
62
|
75
|
65
|
76 =item C< $nextHandler >
|
|
77
|
180
|
78 Делегат для вызова следующего обработчика. Вызывается без параметров, но следующему обработчику
|
|
79 втоматически будут переданы необходимые параметры.
|
62
|
80
|
|
81 =back
|
|
82
|
65
|
83 =back
|
|
84
|
180
|
85 =cut
|