| 62 | 1 package IMPL::Web::QueryHandler; | 
|  | 2 | 
| 65 | 3 use base 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 | 
|  | 32 Базовый класс для обработчиков запросов. | 
|  | 33 | 
| 65 | 34 =head1 SYNOPSIS | 
|  | 35 | 
|  | 36 Простой вариант | 
|  | 37 | 
|  | 38 =begin code | 
|  | 39 | 
|  | 40 package MyHandler; | 
|  | 41 | 
|  | 42 use base qw(IMPL::Web::QueryHandler); | 
|  | 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 | 
|  | 62 Вызывается механизмом обработки запроса, для передачи управления обработчику. Данная реализация | 
| 65 | 63 проверяет контекст вызова, если как статический метод, то создает экземпляр класса и вызывает | 
| 62 | 64 у созданного объекта метод C< Invoke > с параметрами C< $action >, C< $nextHandler >. | 
|  | 65 | 
| 65 | 66 При создании нового объекта в конструктор передается именованый параметр C<action>. | 
|  | 67 | 
|  | 68 Если метод был вызван у объекта, то управление передается методу C< Process >. | 
|  | 69 | 
|  | 70 =over | 
| 62 | 71 | 
| 65 | 72 =item C< $action > | 
|  | 73 | 
|  | 74 Экземпляр запроса | 
| 62 | 75 | 
| 65 | 76 =item C< $nextHandler > | 
|  | 77 | 
|  | 78 Делегат для вызова следующего обработчика. Вызывается без параметров, но следующему обработчику | 
| 62 | 79 втоматически будут переданы необходимые параметры. | 
|  | 80 | 
|  | 81 =back | 
|  | 82 | 
| 65 | 83 =back | 
|  | 84 | 
| 62 | 85 =cut |