Hogyan működik Yii

1. inicializálás Yii :: app ()

Lásd, a www / index.php tartalmazó ilyen vonalak


A fejlődő 2. sor, a kód


A 12-es vonal, figyelembe véve a dinamikus összekapcsolását végzi visszatérő új CWebApplication ($ config);

Ha megy a szülő osztály, akkor lehet találni, hogy
osztály CWebApplication kiterjed CApplication.


7. sor az úgynevezett Yii :: setApplication ($ this);. de ha megnézed Yii osztály és a szülő YiiBase. láthatjuk, hogy az eredmény-változó inicializálja tervezni Yii :: app ()
osztály Yii kiterjed YiiBase <>

Most már egyértelmű, hogy az inicializálás egy CWebApplication e szervezet székhelye privát változó YiiBase :: $ _ alkalmazást. amely elérhető a hívó Yii :: app ()

Ez volt az inicializálás

2. Az Yii :: app () -> modul vagy Yii :: app () -> komponens

Ismét, nézd meg a class CApplication


A configure mód ($ config) adatok képzést, hogy szükség lesz később, mint a hívások egy (például) Yii :: app () -> db

Nézzük meg a modul osztály, ami megvalósul az ilyen kihívások logika


Próbáljuk megfejteni a hívás Yii :: app () -> db

Amint azt már kimutatták, Yii :: app () - ez a lényege a típus CWebApplication. de nem nyilvános tulajdonságokat $ db. PHP annyira mágikus módszer __get () a bázis osztály CModule. (Lásd a „magic methods” a dokumentációban)

Így a tulajdonságait CWebApplication-> db nem létezik, és az úgynevezett CModule -> __ kap ( 'db'). A kód ezután megállapítja, hogy a kihívás összetevő teszi lehetővé.

Módszer CModule-> hasComponent ( „db”) ellenőrzi, hogy a korábban meghatározott bizonyos beállításokat megadott keresztül a védett / config / main.php módon, vagy egy másik konfigurációs fájlban. Ha igen, akkor az úgynevezett CModule-> getComponent (db. "). ami Yii :: createComponent ($ config). ahol a $ config - úgy találta, a megadott beállítások alkatrészek, például a paraméterei az adatbázis-kapcsolat az alkatrész db

Lássuk, mit tesz Yii :: createComponent ($ config)


Bonyolult eljárás. Lényege a lényege egy új példánya, egy osztály 5. vagy 6. módon. Az a tény, hogy ez a módszer CModule :: createComponent () hívható bárhonnan, és van egy csomó lehetőséget elhaladó paramétereket.

Tehát CModule :: createComponent () létrehozott, és visszatért egy új entitás. És a kilépés az eljárás CModule :: getComponent () a kapott anyag rögzítve van egy tömbben CModule -> _ komponensek nevű db ".

Minden ezt követő hívások Yii :: app () -> db ellenőrizni fogja instantsiinovannoy szervezet CModule tömbben -> _ alkatrészek [ „db”], és használja azt, ha ez talált

Hívjon Yii :: app () -> db
A. Dinamikus inicializálja komponenst, szükség szerint
B. Beállítja az adatokat, amelyeket meg lehet határozni chastnovti védett / config / main.php konfigurációs fájl
B. inicializálása komponens csak ciklusonként egyszer PHP alkalmazások

Remélem világosan kifejtette lusta inicializálása eleme a mechanizmus

Kapcsolódó cikkek