Skip to content
This repository was archived by the owner on Jul 8, 2020. It is now read-only.
Laborci Gergely edited this page Aug 10, 2017 · 3 revisions

Env(ironment)

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.

Env::load();

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.

Env::get(string $key = null);

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

phlex px:getenv

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.

Clone this wiki locally