-
Notifications
You must be signed in to change notification settings - Fork 0
Env
Az Env objektum az egész rendszerben közös, legyen szó fejlesztői környezetekről, éles rendszerről, vagy cli alkalmazásról.
Egy alap App/Env.php-ben az alábbi sorokat találjuk:
class Env extends \Phlex\Sys\Environment {
protected function initialize() {
parent::initialize();
// definiálja a Logger-eket
ServiceManager::bind(LoggerInterface::class)
->sharedService(Log::class);
ServiceManager::bind(LoggerInterface::class, Access::class)
->sharedService(SqlLog::class);
ServiceManager::bind(LoggerInterface::class, Launcher::class)
->sharedService(RequestLog::class);
// létrehoz egy shared adatbázis szervízt
ServiceManager::bind('database')
->sharedService(Access::class, Env::get('database'));
}
}Az initialize metódus áll rendelkezésre ahhoz, hogy a saját beállításainkat megejtsd a környezeten, azaz, mint a fenti példában a szervízmenedzserhez hozzáadódnak a Loggerek, illetve egy adatbáziskapcsolat.
Az Env a nagyvilág felé csak egy statikus api-n keresztül kommunikál - ami belül természetesen egy singleton példányt hoz létre és azzal dolgozik.
Az alkalmazás inicializálásakor, legyen szó Cli interface-ről, vagy Webről, mindig az egyik első mozdulat az Env::load() metódus meghívása. Ebből egyik a fent említett load, ami betölti a config.php-ban tárolt adatokat és kiegészíti azokat még saját kulcsokkal.
A megfelelő kulcsokon levő adatok lekérdezése az Env::get($key) statikus metódus hívásával lehetséges. Ez a metódus hívható null paraméterrel is, ez esetben egy tömbbe adja vissza az összes rendelkezésre álló kulcsot. Ez utóbbi hívást ne használd, csak szervízfunckió céljából létezik, illetve ez szolgálja ki a
cli parancsot, ami kíírja az összes elérhető konfigurációüs változót.
Ezekután visszatérve a fenti inicializáló kód adatbázis szervíz deklaráló sorára:
ServiceManager::bind('database')
->sharedService(Access::class, Env::get('database'));A fenti sor rögzít egy database nevű szervízt, és az ahhoz szükséges kapcsolat url-t a config.php-ban rögzített database kulcsról veszi. Ha olyan kulcsot kérsz az Env-től, amivel nem rendelkezik kivételt fog dobni, így biztos lehetsz, hogy például több adatbázis kapcsolat kezelése esetén mindegyik adatbázis kapcsolatot rögzítetted a te saját config.php-dban is.