Egy példa a fejlesztési blog Zend Framework 2
Az elmúlt néhány évben, a munkám van kötve a használata CMS Drupal. de a szabadidejében, és tanultam csak szórakozásból elindított projektek Pythonic keretek Django. Lombik és Twisted. Most úgy döntöttem, hogy megtanulják az alapokat a két vagy három legjobb a PHP számára, akik szeretnének, és először úgy döntött, hogy megtanulják a Zend Framework 2 és Yii.
Emésztésével az összes információ, én arra a következtetésre jutott, hogy a hivatalos bemutató, hogy a keretrendszer száraz:
- ez nem azt mondta a munka a felhasználókkal, ülések, és a hozzáférési jogok
- csak rövid ideig tartják ilyen alapvető része a keret mint ServiceManager,
- mint egy interfész használatával az adatbázishoz mintázat vitatott táblázat Gateway (és annak megfelelő végrehajtása keretében,),
- használja a beépített sablon keret, ami után Jinja 2. Python tűnik, meglehetősen kényelmetlen és primitív,
- stb
Ennek eredményeként, többé-kevésbé kielégítő funkcionális alkalmazás, képes voltam létrehozni elolvasása után a könyvet.
Ebben a cikkben szeretnék adni egy példát a fejlődés egy egyszerű blog, lesz némi eltérés a hivatalos bemutató. Először megpróbálom azokra a kérdésekre, amelyek a tanulmány tűnt számomra nem eléggé nyilvánosságra a hivatalos bemutató. Ezen kívül, azt fogja használni bizonyos technológiával, alternatívát azoknak használt Zend Framework, alapértelmezés:
- Az első (aktuális) részben megvizsgálom a szerkezet ZendSkeletonApplication,
- A második rész a modul teszi ki a saját fejlesztés (formák, a munka adatbázisokat a Tan ORM, edzés megtekintése csatlakozó)
- A harmadik részben kapja dolgozni felhasználók.
A szöveg a cikk néha a forrás külső alkalmazások vagy fájlok automatikusan generálja az összeállítást. Az adattárak ilyen fájlok hiányoznak, ez a mélyebb vizsgálatot fejlesztettek a bemutató alkalmazás, akkor telepíteni kell a szükséges szoftvert a saját.
ZendSkeletonApplication
(A megfelelő beállítást, php composer.phar paranccsal lehet egyszerűen helyettesíteni zeneszerző. De később ebben a cikkben adok az első lehetőség, mint egy sokoldalú)
Miután a teljesítmény, akkor kap az alkalmazás szerkezete a következő (I maradt csak a legérdekesebb könyvtárak és fájlok):
Nézzük részletesen elemezni az újonnan létrehozott könyvtárak és fájlok.
A szerkezet a projekt
composer.json
Kezdjük composer.json fájlt a projekt gyökér. Tart az alábbi űrlapot:
Ebben a fájlban meg az alkalmazás használandó paraméterek összeállító. A legérdekesebb része ez a config részben a szükség, amely tartalmazza a listát a külső könyvtárak, hogy az alkalmazás függ. Most a lista függőségek csak Zend Framework 2, de a jövőben, akkor hozzá itt néhány függőségek: Tan, gally, és mások. Hozzáadása után egy új függőségi elegendő lesz teljesíteni a konzol parancsot:
Zeneszerző és töltse le a szükséges könyvtárakat. Minden külső függőségek adunk a könyvtárban eladó. Most már láthatjuk, hogy a könyvtárban Zend Framework és zeneszerző.
dokumentum gyökér
Document_root a bejelentés nem a projekt gyökér, és az állami könyvtárban. Itt látható a index.php - a belépési pont a projekt, és ez a munka egy könyvtárat, hogy a webszerver kell konfigurálni.
Index.php végez számos fontos feladatot, két legérdekesebb ezek közül a kapcsolatot a külső könyvtárak, az alkalmazás betöltése során konfiguráció, és futtatni.
A külső könyvtárak végrehajtott init_autoloader.php fájlt a gyökere a projekt, ami viszont a gyártó / autoload.php és utána automatikusan generált Zeneszerző vendor / zeneszerző / autoaload_real.php fájlt. Ebben a fájlban AutoLoad meghatározott módszerek letöltött Composer külső könyvtárak. Amikor tehát kódolni a modulok kapcsolódni fog névterek jellegű Zend \ nézet \ Model \ ViewModel PHP tudni fogja, hogy mely fájlokat kell keresni ezeket névterek.
Betölti az alkalmazás konfigurációs fájl és futtatja. A folyamat inicializálása a kérelmet (a módszer hívja Zend \ MVC \ Application :: init ()) létrehoz ServiceManager - a legfontosabb célja használják számos részén a kérelmet. Alapértelmezett ServisMenedzher létrehoz egy másik kulcs objektumot - EventManager. A jövőben, ha fogunk létrehozni saját modulokat a saját beállításait, tájékoztatni fogjuk ServisMenedzheru milyen más tárgyakat kell létrehozni a mi modult.
Mintegy ServisMenedzhere később beszélünk, most vessünk egy közelebbi pillantást config könyvtárban. Ez application.config.php fájlt. egy tömböt ad vissza az alkalmazás konfiguráció, amely meg tudja mondani egy csomó érdekes dolgot.
A tömb tartalmaz egy listát a modulokat modulok, most már csak egy engedélyezett az alkalmazás modul, de lesznek még a jövőben.
Module_listener_options tömb tartalmaz két érdekes elem: tömbök és module_paths config_glob_paths.
Array module_paths megmondja, hogy hol találja a plug-inek alapértelmezés szerint a könyvtárakban az eladóval - külső függőségek és modul - lesz modulok általunk kifejlesztett a projekthez.
Config_glob_paths tartalmaz maszk utak a konfigurációs fájlok modul. A reguláris kifejezés 'config / autoload / .php' azt jelenti, hogy az összes fájl kerül letöltésre module_name..php fajok global.php, local.php config / autoload könyvtárban.
Így először betölti a beállításokat a config / application.config.php fájlt, majd betölti a beállításokat a config fájl / autoload / .php és az utolsó betöltött előre megadott beállításokat a modul szintjén (megbeszéljük később).
Ha a config / autoload két beállítás a fájl azonos modul: globális és lokális (module_name.global.php és module_name.local.php), akkor az első lépés betöltött globális fájlt, és a helyi utána, hogy van, a helyi beállítások elsőbbséget élveznek a globális.
local.php fájlokat és * .local.php alapértelmezett .gitignore a fájl tartalmazza (ha egy másik verziókezelő rendszert, akkor kell hozzá egy kivételt kézzel), és csak akkor kell használni megfelelő beállítási csak a jelenlegi környezetben. Azaz, ha van egy projekt egyik vagy másik kísérletben számos különböző platformon: gyártási, vizsgálati és fejlesztési platformok, a globális alkalmazás beállításait kell tárolni vonatkozó adatokat az összes ilyen helyeket, és a helyi - egyedi minden helyszínen, például adatokat az adatbázis eléréséhez.
Eltekintve a globális és a teljes alkalmazás konfigurációs fájlok, minden modul lehet saját konfigurációs fájl. Az ilyen modulok konfigurációs fájlok betöltése abban a sorrendben, amelyben a meghatározott lista az aktív modulok application.config.php fájlt. Így, ha szeretne egy modult, hogy felülírja a beállításokat egy másik modul, a modul alacsonyabbnak kell lennie a listán.
Az utolsó fontos, és még nem vették figyelembe könyvtár olyan könyvtár modulokat. Ez a könyvtár lesz modulok által kifejlesztett minket a kérelmet. Együtt ZendSkeletonApplication jön egy modult az alkalmazás, de mielőtt tanulmányozza annak szerkezetét, nézzük megérteni, hogy az ilyen ServiceManager és miért van szükség rá.
ServiceManager
A regisztrált vállalkozások ServisMenedzhere vagy module.config.php default.conf konfigurációs fájl service_manager szakasz vagy Module.php a getServiceConfig () metódus, ez így néz ki (például másolt a dokumentációt):
A fenti konfiguráció ServisMenedzhera bármelyik vezérlő, akkor most hívja a kódot, mint például:
és a $ user_form objektum tartalmazza a megfelelő formában.
Most itt az ideje, hogy visszatérjen a modul bejelentés belépő ZendSkeletonApplication.
alkalmazási modul
Könyvtárfa ez a modul az alábbiak szerint:
Kezdjük Module.php. Ez a fájl mondja az osztály modul 3 módszer:
Kód onBootstrap () metódust ez a modul felelős a Segment típusú szolgáltatás útvonal (utak típusok alább).
getAutoloaderConfig () metódus megadja a kernel keretet, hol található a forráskód a modul:
A jelenlegi esetben a könyvtár modulok / Application / src / Application.
A getConfig () metódus visszaadja az elérési utat a modul beállításai:
Ez a fájl vissza egy tömbben beállítások a következő adatokat tartalmazza:
- tömbelem router - tartalmazó fájl listáját által kiszolgált útvonalakon a modul és a listát a vezérlők az egyes útvonalakat.
- view_manager tartalmazza az elérési utat a sablonokat, hogy fogja használni az alkalmazást, és számos további beállításait egy sablont.
- service_manager - objektumok listáját, amelyeket meg kell inicializálni ServisMenedzherom.
- Számos egyéb beállításokat.
két útvonal meghatározása a bejelentés modul beállításai:
Alkalmazás modulnak egyetlen vezérlő IndexController () egyetlen ekshenom indexAction (), amely visszaadja a üdvözlő oldal címére. Az oldal megjelenítéséhez sablonokat használnak, amelyek tekintettel a modul könyvtár.
Ezen a ponton szeretném befejezni az első része a cikket. A második és a harmadik mi zaymomsya fejlődő kis modult, és csatlakozzon a rendszer néhány külső.