49
|
1 package IMPL::Web::Application;
|
|
2 use strict;
|
|
3 use warnings;
|
|
4
|
|
5 use base qw(IMPL::Object IMPL::Object::Singleton);
|
|
6 use IMPL::Class::Property;
|
57
|
7 use CGI;
|
49
|
8
|
|
9 BEGIN {
|
52
|
10 public property handlerError => prop_all;
|
57
|
11 public property factoryAction => prop_all;
|
49
|
12 }
|
|
13
|
|
14 # custom factory
|
|
15 sub new {
|
|
16 my ($self,$file) = @_;
|
|
17
|
|
18 return $self->LoadXMLFile($file);
|
|
19 }
|
|
20
|
|
21 sub Run {
|
|
22 my ($this) = @_;
|
|
23
|
|
24 while (my $request = $this->fetch_request()) {
|
57
|
25 my $response = new IMPL::Web::Application::Response(request => $request);
|
49
|
26 }
|
|
27 }
|
|
28
|
57
|
29 {
|
|
30 my $hasFetched = 0;
|
|
31
|
|
32 sub FetchRequest {
|
|
33 return undef if $hasFetched;
|
|
34 $hasFetched = 1;
|
|
35 return CGI->new();
|
|
36 }
|
|
37 }
|
|
38
|
49
|
39 1;
|
|
40
|
52
|
41 __END__
|
|
42
|
49
|
43 =pod
|
|
44
|
|
45 =head1 SYNOPSIS
|
|
46
|
|
47 require MyApp;
|
|
48 MyApp->instance('app.config')->Run();
|
|
49
|
|
50 =head1 DESCRIPTION
|
|
51
|
|
52 Зкземпляр приложения содержит в себе глобальные настройки, реализует контроллер запросов,
|
52
|
53 в качестве источника запросов используется CGI или иной совместимый модуль.
|
49
|
54
|
52
|
55 Процесс обработки запроса состоит из следующих частей
|
49
|
56
|
52
|
57 1. Получение cgi запроса
|
|
58 2. Вызов модуля для инициализации объекта действия
|
|
59 3. Инициализация контекста выполнения
|
|
60 4. Выполнение запроса
|
|
61 5. Преобразование полученных данных в тело ответа
|
|
62
|
|
63
|
|
64
|
49
|
65
|
|
66 =cut
|