1. Inițializarea Yii :: app ()
A se vedea, în www / index.php care conțin astfel de linii
În curs de dezvoltare linia 2, codul
întoarcere În linia 12, ținând cont de legătura dinamică se efectuează CWebApplication nou ($ config);
Dacă te duci la o clasă părinte, puteți găsi că
Clasa de CWebApplication extinde CApplication.
Linia 7 este numit Yii :: setApplication ($ acest);. dar dacă te uiți clasa Yii și societatea mamă YiiBase. puteți vedea modul în care variabila rezultat este inițializat pentru a proiecta Yii :: app ()
class Yii extinde YiiBase <>
Acum este clar că inițializarea unei CWebApplication această entitate stabilită într-o YiiBase variabilă privată :: $ _ app. care este disponibil prin apelarea Yii :: app ()
A fost inițializarea
2. Utilizarea Yii :: app () -> modul sau Yii :: app () -> componenta
Încă o dată, uita-te la CApplication clasă
Metoda de configurare ($ config) de date este de formare care vor fi necesare mai târziu pentru apeluri, cum ar fi un (de exemplu) Yii :: app () -> db
Să ne uităm la clasa modulului, care se realizează astfel de provocări logica
Să încercăm să descifreze apelul Yii :: app () -> db
Așa cum am arătat, Yii :: app () - este esența tip CWebApplication. dar nu are proprietăți publice $ db. PHP este atât de magie __get metoda () din CModule clasă de bază. (A se vedea „metode magice“ în documentația)
Astfel, proprietățile CWebApplication-> db nu există și se numește CModule -> __ get ( 'db'). Codul apoi constată că componenta provocare este posibilă.
Metoda CModule-> hasComponent ( „db“) controalele care au fost stabilite anterior unele setări specificate prin protected / config / modul main.php sau un alt fișier de configurare. Dacă este așa, atunci este numit CModule-> getComponent ( 'db'.). care provoaca Yii :: createComponent ($ config). în cazul în care $ config - găsit componentele setările specificate, de exemplu, parametrii conexiunii bazei de date pentru componenta db
Să vedem ce face Yii :: createComponent ($ config)
Metoda complicată. Esența ei este esența unui nou instanțierea dintr-o clasa 5 sau 6 moduri. Faptul că această metodă CModule :: createComponent () poate fi apelată de oriunde și are o mulțime de opțiuni pentru evaluarea parametrilor.
Deci, CModule :: createComponent () a creat și a returnat o nouă entitate. Iar la ieșirea din CModule metodei :: getComponent () substanța rezultată este înregistrată într-o matrice CModule -> _ componente denumite „db“.
Toate apelurile ulterioare la Yii :: app () -> db va verifica instantsiinovannoy entitate în CModule matrice -> _ componente [ „db“] și să-l utilizați, în cazul în care este găsit
Call Yii :: app () -> db
A. dinamic inițializează componente, după cum este necesar
B. Reglează datele sale, care pot fi determinate prin chastnovti protejate fișier de configurare / config / main.php
componenta B. inițializează o singură dată pentru fiecare ciclu de aplicații PHP
Sper că am explicat în mod clar componenta de inițializare leneș a mecanismului