comparison Lib/IMPL/Config.pm @ 58:a35b60b16a99

Configuration, late activation
author wizard
date Fri, 05 Mar 2010 20:14:45 +0300
parents 16ada169ca75
children b0c068da93ac
comparison
equal deleted inserted replaced
57:bf59ee1cd506 58:a35b60b16a99
81 my $name = $info->Name; 81 my $name = $info->Name;
82 $ctx->AddVar($name => $this->$name()) if $this->$name(); 82 $ctx->AddVar($name => $this->$name()) if $this->$name();
83 } 83 }
84 } 84 }
85 85
86 sub spawn {
87 goto &LoadXMLFile;
88 }
89
86 1; 90 1;
87 __END__ 91 __END__
88 92
89 =pod 93 =pod
90 94
97 use IMPL::Config::Class; 101 use IMPL::Config::Class;
98 102
99 BEGIN { 103 BEGIN {
100 public property SimpleString => prop_all; 104 public property SimpleString => prop_all;
101 public property MyClass => prop_all; 105 public property MyClass => prop_all;
106 public lazy property DataSource => prop_all, {type => 'App::DataSource', factory => sub {}};
102 } 107 }
103 108
104 sub CTOR { 109 sub CTOR {
105 my $this = shift; 110 my $this = shift;
106 $this->superCTOR(@_); 111 $this->superCTOR(@_);
107 112
108 $this->MyClass(new IMPL::Config::Class(Type => MyClass)) unless $this->MyClass; 113 $this->MyClass(new IMPL::Config::Class(Type => MyClass)) unless $this->MyClass;
109 } 114 }
115
116 # in some script
117
118 my $app = spawn App::Config('default.xml');
119
120 $app->Run();
110 121
111 =head1 DESCRIPTION 122 =head1 DESCRIPTION
112 123
113 Позволяет сохранить/загрузить конфигурацию. Также все классы конфигурации 124 Позволяет сохранить/загрузить конфигурацию. Также все классы конфигурации
114 должны наследоваться от данного класса, и все Public свойства будут 125 должны наследоваться от данного класса, и все Public свойства будут