Mercurial > pub > Impl
view Lib/IMPL/Web/Application.pm @ 64:259cd3df6e53
Doc generation
Minor fixes
author | wizard |
---|---|
date | Mon, 15 Mar 2010 17:45:13 +0300 |
parents | 76b878ad6596 |
children | 2840c4c85db8 |
line wrap: on
line source
package IMPL::Web::Application; use strict; use warnings; use base qw(IMPL::Config IMPL::Object::Singleton); require IMPL::Web::Application::Action; require IMPL::Web::Application::Response; use IMPL::Class::Property; use CGI; __PACKAGE__->PassThroughArgs; BEGIN { public property handlerError => prop_all; public property factoryAction => prop_all; public property handlersQuery => prop_all | prop_list; public property options => prop_all; } # custom factory sub new { my ($self,$file) = @_; return $self->LoadXMLFile($file); } sub CTOR { my ($this) = @_; $this->factoryAction('IMPL::Web::Application::Action') unless $this->factoryAction; } sub Run { my ($this) = @_; while (my $query = $this->FetchRequest()) { # todo: move a creation of the response to the ActionClass my $action = $this->factoryAction->new( query => $query, response => new IMPL::Web::Application::Response(query => $query), application => $this, ); $action->ChainHandler($_) foreach $this->handlersQuery; $action->Invoke(); $action->response->Complete; } } { my $hasFetched = 0; sub FetchRequest { return undef if $hasFetched; $hasFetched = 1; return CGI->new(); } } 1; __END__ =pod =head1 SYNOPSIS require MyApp; MyApp->spawn('app.config')->Run(); =head1 DESCRIPTION Зкземпляр приложения содержит в себе глобальные настройки, реализует контроллер запросов, в качестве источника запросов используется CGI или иной совместимый модуль. Процесс обработки запроса состоит из следующих частей 1. Получение cgi запроса 2. Вызов модуля для инициализации объекта действия 3. Инициализация контекста выполнения 4. Выполнение запроса 5. Преобразование полученных данных в тело ответа =cut