După articolul Cum se scrie un cadru pe php. un programator familiar mi-a pus această întrebare: cum șablonul din Yii. și anume face funcția ( "filename", $ variabile = array ())?
Dacă se îngropa în istoria PHP (și a fost scris ca o limbă perl templating), va fi clar, un motor de template mai bun decât limba în sine nu scrie pe ea. Smarty etc. biblioteci, limitate de API-ul lor. Și să lucreze cu ei amintind de povestea Active Record, pe care am descris într-un articol anterior.
Deci, cum se poate scrie un șablon simplu, cu aceeași funcționalitate ca și în Yii.
Vom crea o clasă și să descrie imediat metodele prin care va deține.
familiarizat cu aceste metode un programator de lucru cu Yii. Metoda de randare afișează întreaga pagină, inclusiv în spațiul de fișier $ filename conținut. Metoda renderPartial afișează pur și simplu conținutul $ fisier pe ecran. În esența sa, metoda pe care o consistentă renderPartial ($ filename) și renderPartial ( 'index') fac. Prin urmare, pentru un șablon, avem nevoie pentru a descrie această metodă.
Baza muncii sale includ conexiune simplă cerute de fișier și variabile să fie disponibile în propriul său, mai degrabă decât ca parte a unei matrice, utilizați funcția extract uitat
Pentru a conduce conținutul fișierului într-o variabilă, folosind metode bine-cunoscute cu ob_start () ob_get_clean (). Acestea sunt funcții care conduc ieșirea standard cu alte șine. Vorbind o altă limbă, acestea sunt tamponate de ieșire. La fel cum datele sunt plasate în clipboard-ul Windows. Mai multe informații despre acest lucru poate fi citit aici
și anume dacă parametrul
rămân neschimbate, atunci ei nu vor fi folosite. Dar dacă ar fi setat la fals, tot ce afișează fișierul $ filename.php nu va intra în mainstream, și va fi colectate și returnate de renderPartial. Nu este foarte convenabil!?
Asta e magia. Acum vom descrie metoda render
După cum sa menționat mai sus, metoda de apel dublu renderPartial. În primul rând, cu ieșire == fals, pentru fișierul țintă. A doua oară cu aceeași chemare, care a fost depusă în sine face. În fișierul main.php, conținutul fișierului filename.php $ va fi disponibil în conținutul $ variabila.
Nu e cel mai distractiv lucru pe care îl pot face. Ce se întâmplă dacă conținutul de $ variabila de a conduce instanță a clasei, a crea o metodă cu __toString. Va fi posibil să se facă render într-un mod normal. În primul rând, principal și apoi $ filename în ea. Așa cum ar trebui să fie.
Dar eu las la imaginația ta.
În cadrul articolelor despre scris, cadrul perfect pentru biciclete adăuga o clasă controler, aceste două metode. Distinge le va opțiune numai statice, în fața numelui metodei. El nu mai avem nevoie. Deoarece copia va fi creat pentru fiecare controler.
Încă nu forknuli acest cadru. Ce mai aștepți? Să facem un cadru ideal împreună.