Mercurial > pub > Impl
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 свойства будут |
