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;
|
|
7
|
|
8 BEGIN {
|
|
9 public property RequestFactory => prop_all;
|
|
10 public property ContextInitializers => prop_all;
|
|
11 }
|
|
12
|
|
13 # custom factory
|
|
14 sub new {
|
|
15 my ($self,$file) = @_;
|
|
16
|
|
17 return $self->LoadXMLFile($file);
|
|
18 }
|
|
19
|
|
20 sub Run {
|
|
21 my ($this) = @_;
|
|
22
|
|
23 while (my $request = $this->fetch_request()) {
|
|
24 my $context = $this->prepare_context($request);
|
|
25 $context->invoke($request);
|
|
26 }
|
|
27 }
|
|
28
|
|
29 1;
|
|
30
|
|
31 =pod
|
|
32
|
|
33 =head1 SYNOPSIS
|
|
34
|
|
35 require MyApp;
|
|
36 MyApp->instance('app.config')->Run();
|
|
37
|
|
38 =head1 DESCRIPTION
|
|
39
|
|
40 Зкземпляр приложения содержит в себе глобальные настройки, реализует контроллер запросов,
|
|
41
|
|
42 Получая запрос из источника запросов, создает контекст выполнения запроса
|
|
43 затем выполняет запрос в указанном контексте.
|
|
44
|
|
45 Контекст формируется сначала из запроса, а затем посредством набора инициализаторов
|
|
46
|
|
47 =cut
|