comparison Lib/IMPL/Web/Application.pm @ 67:9f5795a10939

Documentation, minor fixes
author wizard
date Fri, 19 Mar 2010 20:06:12 +0300
parents 2840c4c85db8
children 2f31ecabe9ea
comparison
equal deleted inserted replaced
66:f47f93534005 67:9f5795a10939
12 12
13 __PACKAGE__->PassThroughArgs; 13 __PACKAGE__->PassThroughArgs;
14 14
15 BEGIN { 15 BEGIN {
16 public property handlerError => prop_all; 16 public property handlerError => prop_all;
17 public property factoryAction => prop_all; 17 public property actionFactory => prop_all;
18 public property handlersQuery => prop_all | prop_list; 18 public property handlersQuery => prop_all | prop_list;
19 public property responseCharset => prop_all; 19 public property responseCharset => prop_all;
20 public property options => prop_all; 20 public property options => prop_all;
21 } 21 }
22 22
28 } 28 }
29 29
30 sub CTOR { 30 sub CTOR {
31 my ($this) = @_; 31 my ($this) = @_;
32 32
33 $this->factoryAction('IMPL::Web::Application::Action') unless $this->factoryAction; 33 $this->actionFactory('IMPL::Web::Application::Action') unless $this->actionFactory;
34 $this->responseCharset('utf-8') unless $this->responseCharset; 34 $this->responseCharset('utf-8') unless $this->responseCharset;
35 } 35 }
36 36
37 sub Run { 37 sub Run {
38 my ($this) = @_; 38 my ($this) = @_;
39 39
40 while (my $query = $this->FetchRequest()) { 40 while (my $query = $this->FetchRequest()) {
41 41
42 my $action = $this->factoryAction->new( 42 my $action = $this->actionFactory->new(
43 query => $query, 43 query => $query,
44 application => $this, 44 application => $this,
45 ); 45 );
46 46
47 $action->response->charset($this->responseCharset); 47 $action->response->charset($this->responseCharset);
70 70
71 =pod 71 =pod
72 72
73 =head1 SYNOPSIS 73 =head1 SYNOPSIS
74 74
75 =begin code
76
75 require MyApp; 77 require MyApp;
76 MyApp->spawn('app.config')->Run(); 78
79 my $instance = spawn MyApp('app.config');
80
81 $instance->Run();
82
83 =end code
77 84
78 =head1 DESCRIPTION 85 =head1 DESCRIPTION
79 86
80 Зкземпляр приложения содержит в себе глобальные настройки, реализует контроллер запросов, 87 Зкземпляр приложения содержит в себе глобальные настройки, реализует контроллер запросов,
81 в качестве источника запросов используется CGI или иной совместимый модуль. 88 в качестве источника запросов используется CGI или иной совместимый модуль.
82 89
83 Процесс обработки запроса состоит из следующих частей 90 Процесс обработки запроса состоит из следующих частей
84 91
85 1. Получение cgi запроса 92 =over
86 2. Вызов модуля для инициализации объекта действия
87 3. Инициализация контекста выполнения
88 4. Выполнение запроса
89 5. Преобразование полученных данных в тело ответа
90 93
94 =item 1
91 95
96 Получение cgi запроса
92 97
98 =item 2
99
100 Создание объекта C<IMPL::Web::Application::Action>
101
102 =item 3
103
104 Формирование цепочки вызовов при помощи C<< IMPL::Web::Application::Action->ChainHandler >>
105
106 =item 4
107
108 Выполнение запроса C<< IMPL::Web::Application::Action->Invoke >>
93 109
94 =cut 110 =cut
111
112 Также приложение поддерживает отложенное создание объектов, которые по первому обращению
113 к свойствам. Это реализовано в базовом классе C< IMPL::Configuration >. Для настройки
114 активаторов можно использовать свойство C<options>, в которое должен быть помещен хеш
115 со ссылками на активаторы, см. пример ниже C<CONFIGURATION>.
116
117 =head2 CONFIGURATION
118
119 Ниже приведен пример конфигурации приложения
120
121 =begin code xml
122
123 <?xml version="1.0" encoding="UTF-8"?>
124 <Application id='app' type="Test::Web::Application::Instance">
125
126 <!-- Begin custom properties -->
127 <name>Sample application</name>
128 <dataSource type='IMPL::Config::Activator' id='ds'>
129 <factory>IMPL::Object</factory>
130 <parameters type='HASH'>
131 <db>data</db>
132 <user>nobody</user>
133 </parameters>
134 </dataSource>
135 <securityMod type='IMPL::Config::Activator'>
136 <factory>IMPL::Object</factory>
137 <parameters type='HASH'>
138 <ds refid='ds'/>
139 </parameters>
140 </securityMod>
141 <!-- End custom properties -->
142
143 <!-- direct access to the activators -->
144 <options type="HASH">
145 <dataSource refid='ds'/>
146 </options>
147
148 <!-- Set default output encoding, can be changed due query handling -->
149 <responseCharset>utf-8</responseCharset>
150
151 <!-- Actions creation configuration -->
152 <actionFactory type="IMPL::Object::Factory">
153
154 <!-- Construct actions -->
155 <factory>IMPL::Web::Application::Action</factory>
156 <parameters type='HASH'>
157
158 <!-- with special responseFactory -->
159 <responseFactory type='IMPL::Object::Factory'>
160
161 <!-- Where resopnses have a special streamOut -->
162 <factory>IMPL::Web::Application::Response</factory>
163 <parameters type='HASH'>
164
165 <!-- in memory dummy output instead of STDOUT -->
166 <streamOut>memory</streamOut>
167
168 </parameters>
169 </responseFactory>
170 </parameters>
171 </actionFactory>
172
173 <!-- Query processing chain -->
174 <handlersQuery type="IMPL::Object::List">
175 <item type="IMPL::Web::QueryHandler::PageFormat">
176 <templatesCharset>cp1251</templatesCharset>
177 </item>
178 </handlersQuery>
179 </Application>
180
181 =end code xml
182