Tehát azt ígértem, hogy a project lezárása után elkezdjük az ismerkedést az symfonyval. Az első kérdés a letöltés után, hogy ok, mit hol találok?
Az app könyvtárban találhatóak a beállítófájlok, cache és a kernel. A kernel az mvc szemléletben felépített modulok (bundle-ök) betöltéséért, futtatásáért felel.
A bin könyvtárban lévő vendors fájl, a gyökérben lévő deps és deps.lock fájlok felelősek a symfony frissítéséért git tárolókból. A vendors a futtatható parancsfájl, a deps meg tárolja a függőségeket. Ide kell felvenni a szükséges paramétereket akkor, ha új 3rd party eszközre lenne szükségünk. Későbbiekben a symfonyban egy új csomagkezelést fognak bevezetni, ami nagyjából hasonlít a linuxokban megismert csomagkezelésre. Függőségeket lehet vele definiálni és a saját kódjainkat csomagokba szervezni. További infó az composerről.
Az src könyvtárban lesznek a kódjaink. A bundle egy komponens a symfonyban, amit mi írtunk. src/cégnév/projectnév/bundleneveBundle a bundle elérési útvonala. Ezzel az útvonallal (ami egyben namespace is) később, bizonyos alap összetevők kiszervezhetőek a vendors mappába is. A bundle Controller mappája tartalmazza a kontrollereket. A controller fájl és osztály suffixe minden esetben Controller. A bundle php fájl ami még szükséges, a többi mappának nem kötelező léteznie.
Vendor mappába frissülnek le a fentebb emlegetett komponensek. Symfony és 3rd party kiterjesztések. Itt is megfigyelhető egyébként a bundle szerű felépítés, a Symfony is egy bundle.
Web DocRoot. De ez lehet akármi.
OK! Most már megtalálom nagyjából a dolgokat a fájlrendszerben, hogyan kezdjek neki?
Symfony environment-ek
A environment-ek különböztetik meg a különféle futásokat. Így tudunk csinálni egy rendszerre dev, test, prod(uction) environmenteket. De akár egy symfony kódbázisra ráépíthetünk különféle projecteket, létrehozva ezzel projectneve1_dev, projectneve1_prod, projectneve2_dev … elnevezésű environmenteket. Az environmentek nevét a belépő fájl, az alap telepítéseben a web mappa docroot app.php és app_dev.php fájlja tartalmazza. Azt is itt írjuk le, hogy az adott environment debug módban fut-e (lásd kernel.debug paraméter később), vagy sem.
app.php 9. sor
$kernel = new AppKernel(‘prod’, false);
app_dev.php 15. sor
$kernel = new AppKernel(‘dev’, true);
A web mappát lemásolva és ezeket a paramétereket átírva új environmentet hozhatunk létre. Mondjuk egy új weboldalt.
A konzolos parancsok esetében (app/console a belépési pont) az –env kapcsolóban mi kézzel adjuk meg, hogy milyen environmentet akarunk futtatni. Ha lényeges akkor a további kapcsolókban a debug módot is megadhatjuk (cache újraépítésénél lényeges pl).
Environmentenként betöltődő bundle-ök.
Következő lépésként még azt is szeretnénk megadni, hogy mely bundle-ök töltődjenek be az egyes futások alkalmával. Ezt beállítani az app/AppKernel.php fájlban van lehetőségünk.
app/AppKernel.php 22. sor
if (in_array($this->getEnvironment(), array('dev', 'test'))) {
illetve
app/AppKernel.php 32-35. sor
public function registerContainerConfiguration(LoaderInterface $loader)
{
$loader->load(__DIR__.'/config/config_'.$this->getEnvironment().'.yml');
}
Az első kódban mutatott ponton ágaz(hat)nak el a különféle environmentek. Itt egy egyszerű switch szerkezettel el tudjuk különíteni a különféle environmenteket. A második kód mutatja, hogy az environment nevétől függően, hol keresi a belépő beállító fájlt az app config mappában.
Korábban az app és web mappábat úgy ahogy van másoltam, és úgy hoztam létre új elágazást. De szervesen összetartozó, ugyanakkor mégis külön részegységet alkotó environmentek esetén ez egy kicsit szorosabb integrációt tud eredményezni és karbantartani is egyszerűbb.
Legközelebb nekilátunk egy minta project és néhány tucat bundle létrehozásának.
Olvasnivaló:
How to Master and Create new Environments