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