Mercurial > pub > Impl
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 |