Już gdzieś pisałem, ale co tam : P
Mam po prostu coś na kształt rejestru.
Parę prościutkich przykładów. Korzystam z obiektu
bramy o nazwie application_Helper
<?php
//kontekst aplikacji
$AHelper->getAppRegistry()->get("appName");
$AHelper->getAppRegistry()->get("cacheStatus");
$AHelper->getAppRegistry()->get("TEMPLATES", "paths"); // ścieżka do katalogu templates aplikacji
//kontekst modułu (mini-aplikacji np. system newsów)
$AHelper->getModRegistry($moduleName)->get("name");
//Można oczywiście uprościć
$appConfig=$AHelper->getAppRegistry();
//i stosować
$appConfig->get("appName");
?>
i jeszcze metoda application_Helper::getModRegistry(). Wprowadziłem kolekcję rejestrów (bo modułów jest przecież wiele)
<?php
public function getModRegistry($modName=false){
if ($modName==false){
$modName=$this->getReqRegistry()->get('module');
}
if (isset($this->moduleCollection)){ return $this->moduleCollection->getModRegistry($modName);
}
else{
$this->moduleCollection=module_registry_Collection::getInstance();
$this->moduleCollection->addModRegistry(new module_Registry($modName), $modName);
}
}
?>
Mniej więcej tak to wygląda. Mam jeszcze rejestry dla żądania (requestRegistry), sesji (sessionRegistry), ale w chwili obecnej są w fazie rozwoju i nie wiem, czy nie zmienię ich na coś innego. Nie używam natomiast globalnych stałych, choć kiedyś używałem.
Konfigurację trzymam w stringach XML, ale część (np ścieżki do katalogów) w gotowych tablicach
Polecam zatem jawne oddzielenie konfiguracji modułów od konfiguracji aplikacji.
Pozdrawiam.