Mercurial > pub > Impl
diff 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 |
line wrap: on
line diff
--- a/Lib/IMPL/Web/Application.pm Thu Mar 18 17:58:33 2010 +0300 +++ b/Lib/IMPL/Web/Application.pm Fri Mar 19 20:06:12 2010 +0300 @@ -14,7 +14,7 @@ BEGIN { public property handlerError => prop_all; - public property factoryAction => prop_all; + public property actionFactory => prop_all; public property handlersQuery => prop_all | prop_list; public property responseCharset => prop_all; public property options => prop_all; @@ -30,7 +30,7 @@ sub CTOR { my ($this) = @_; - $this->factoryAction('IMPL::Web::Application::Action') unless $this->factoryAction; + $this->actionFactory('IMPL::Web::Application::Action') unless $this->actionFactory; $this->responseCharset('utf-8') unless $this->responseCharset; } @@ -39,7 +39,7 @@ while (my $query = $this->FetchRequest()) { - my $action = $this->factoryAction->new( + my $action = $this->actionFactory->new( query => $query, application => $this, ); @@ -72,8 +72,15 @@ =head1 SYNOPSIS +=begin code + require MyApp; -MyApp->spawn('app.config')->Run(); + +my $instance = spawn MyApp('app.config'); + +$instance->Run(); + +=end code =head1 DESCRIPTION @@ -82,13 +89,94 @@ Процесс обработки запроса состоит из следующих частей -1. Получение cgi запроса -2. Вызов модуля для инициализации объекта действия -3. Инициализация контекста выполнения -4. Выполнение запроса -5. Преобразование полученных данных в тело ответа +=over + +=item 1 + +Получение cgi запроса + +=item 2 +Создание объекта C<IMPL::Web::Application::Action> +=item 3 +Формирование цепочки вызовов при помощи C<< IMPL::Web::Application::Action->ChainHandler >> + +=item 4 + +Выполнение запроса C<< IMPL::Web::Application::Action->Invoke >> =cut + +Также приложение поддерживает отложенное создание объектов, которые по первому обращению +к свойствам. Это реализовано в базовом классе C< IMPL::Configuration >. Для настройки +активаторов можно использовать свойство C<options>, в которое должен быть помещен хеш +со ссылками на активаторы, см. пример ниже C<CONFIGURATION>. + +=head2 CONFIGURATION + +Ниже приведен пример конфигурации приложения + +=begin code xml + +<?xml version="1.0" encoding="UTF-8"?> +<Application id='app' type="Test::Web::Application::Instance"> + + <!-- Begin custom properties --> + <name>Sample application</name> + <dataSource type='IMPL::Config::Activator' id='ds'> + <factory>IMPL::Object</factory> + <parameters type='HASH'> + <db>data</db> + <user>nobody</user> + </parameters> + </dataSource> + <securityMod type='IMPL::Config::Activator'> + <factory>IMPL::Object</factory> + <parameters type='HASH'> + <ds refid='ds'/> + </parameters> + </securityMod> + <!-- End custom properties --> + + <!-- direct access to the activators --> + <options type="HASH"> + <dataSource refid='ds'/> + </options> + + <!-- Set default output encoding, can be changed due query handling --> + <responseCharset>utf-8</responseCharset> + + <!-- Actions creation configuration --> + <actionFactory type="IMPL::Object::Factory"> + + <!-- Construct actions --> + <factory>IMPL::Web::Application::Action</factory> + <parameters type='HASH'> + + <!-- with special responseFactory --> + <responseFactory type='IMPL::Object::Factory'> + + <!-- Where resopnses have a special streamOut --> + <factory>IMPL::Web::Application::Response</factory> + <parameters type='HASH'> + + <!-- in memory dummy output instead of STDOUT --> + <streamOut>memory</streamOut> + + </parameters> + </responseFactory> + </parameters> + </actionFactory> + + <!-- Query processing chain --> + <handlersQuery type="IMPL::Object::List"> + <item type="IMPL::Web::QueryHandler::PageFormat"> + <templatesCharset>cp1251</templatesCharset> + </item> + </handlersQuery> +</Application> + +=end code xml +