U mnie obecnie wygląda to tak:
<?php namespace Lib; class Config { require('Config/config.php'); self::$con = $config[$var]; return(self::$con); } }
I w pliku php:
'host'=>'localhost', [..] ); [..]
<?php namespace Lib; class Config { require('Config/config.php'); self::$con = $config[$var]; return(self::$con); } }
'host'=>'localhost', [..] ); [..]
Config:read('mysql.login');
require_once 'Config/file.php';
{ }
class Blah { public function something() { Config::set('blah', 1); } }
Config::load('main_config.ini', 'bulka'); Config::load('lang_config.ini', 'chleb'); Config::load('local_lang.ini', 'mleko'); // ...
resources.db.host = localhost
resources.db.host = 10.1.1.1
Taka konstrukcja tworzy relację pomiędzy naszym obiektem, a klasą Config. Bezpośrednią (tj. opartą o klasę, a nie implementację interfejsu) relację, która w dodatku jest ukryta (nagle w środku kodu jest jakieś odwołanie). No to teraz lista problemów:
public function doSth() { // jakaś tam metoda naszego obiektu $maxSth = Config::get('...max'); // czy tam: $maxSth = Config::getInstance()->get('...max'); // dalszy ciąg naszej metody }
$myObject = new MyObject(); Config::set('....max', 12); $myAnotherObject = new MyObject();
<?php class Config { } }
$config = new Config(...); $someObject = new MyObject($config); $modifiedConfig = new Config($config); $modifiedConfig->set('...', '...'); $modifiedConfig->set('...2', '...2'); $anotherObject= new MyObject($modifiedConfig); // powiedzmy, że metoda doSth pobiera coś z conifga, np. $config->get('default_value') gdy nie podamy żadnego argumentu. $someObject->doSth(); $anotherObject->doSth(); // ----- $someObject = new MyObject(); // fajniej? $anotherObject = new MyObject(); // co tutaj? Modifikacja globalnego Config? Jeszcze da się to zrobić (patrz: mój wcześniejszy post) // tutaj jesteśmy już w tzw. ciężkiej dupie ;) $someObject->doSth(); $anotherObject->doSth();
{ } return self::$configs[$file]; }
<?php 'mysql'=>array( 'driver'=>'mysql', 'host'=>'localhost', 'dbname'=>'album', 'login'=>'root', 'password'=>'vertrigo' ) );
{ self::$configs[$file]= include_once('Config/'.$file.'.php'); } return self::$configs[$file]; }
Config::get('plik.mysql.host'); //wyswietli localhost
Config::get('plik.mysql'); //wyswietli tablice
{ if(null === $name) { return self::$configs; } { return self::$configs[$name]; } $cfg = &self::$configs; { { $cfg = &$cfg[$key]; } else { return null; } } return $cfg; }
class conf{ { do { { { { $array = $array[$key]; } else { break; } } else { return $array[$key]; } } else { break; } } return $default; } { return conf::path(self::$configs, $path, NULL, '.'); } }