Zastanawiam sie ostatnio, co jest lepszym rozwiazaniem w perspektywie wiekszej aplikacji:
<?php $aConfig['system']['db']['host'] = '127.0.0.1'; $oConfig = new Config($aConfig); // Rozwiazanie 1. $host = $oConfig->system->db->host; // Rozwiazanie 2. $host = $oConfig->get('system', 'db', 'host'); ?>
Moim zdaniem pierwsze rozwiazanie jest 'ladniejsze' i duzo bardziej wygodne. No i zaczynaja sie schody:
<?php $host = $oConfig->system->jakas_nieistniejaca_zmienna->host; // Zwroci NOTICE informuujace o tym, ze nastepuja odwolanie do nieistniejacego obi
ektu - no bo zachowa sie jak: null->host; $host = $oConfig->get('System', 'nieistneijaca_zmienna', 'host'); // Zwroci po prostu null bez zadnego bladu. ?>
Ok. pojawia sie magiczne __isset(). Ale:
<?php ?>
Kod:
<?php class ParametersHolder { private $_aParameters; private $_bValidIterationPointer; { foreach($aParameters as $sKey => $mValue) { $this->_aParameters[$sKey] = new ParametersHolder($mValue); else $this->_aParameters[$sKey] = $mValue; } } public function __get($sParameter) { } public function __set($sParameter, $mValue) { $this->_aParameters[$sParameter] = new ParametersHolder($mValue); else $this->_aParameters[$sParameter] = $mValue; } public function __isset($sParameter) { } } ?>
Co o tum uwazacie? Moze macie lepszy sposob?
Adrian.