Acest tutorial din două părți vă va face să funcționeze cu frameworkul Fuel PHP. Vom începe cu elementele de bază și apoi vom trece la câteva subiecte mai avansate în partea a doua! Să începem.
Combustibilul este un nou cadru PHP construit special pentru PHP 5.3, care utilizează arhitectura MVC testată și testată pentru separarea logică a codurilor și combină cele mai bune idei ale unor cadre existente cu îmbunătățiri și idei proprii. O versiune finala v1.0 a fost lansata abia recent, dar, deja, framework-ul are o mare urmarire dupa noua luni de dezvoltare grea. Acest articol vă va face să vă grăbiți cu privire la modul de a face site-uri cu combustibil - dar, în primul rând, să vorbim puțin despre arhitectură.
Arhitectura MVC (Model-View-Controller) este utilizată de multe cadre existente, cum ar fi CodeIgniter, Zend Framework, Symphony și Ruby on Rails. Dacă sunteți familiarizat cu oricare dintre aceste cadre, aveți un început!
Pentru cei care sunt noi în această arhitectură, MVC este o abordare a separării codului dvs. în funcție de rolul pe care îl joacă în aplicația dvs. În fluxul de aplicații, acesta începe cu un controler care este încărcat de combustibil. Se execută apoi o metodă care determină ce date să fie recuperate utilizând un model. Odată ce acest lucru se face, controlorul poate decide ce Vizualizări să se încarce (dacă este cazul). Vizualizările conțin rezultatele pe care vizitatorii dvs. le pot vedea, răspunsurile AJAX sau mesajele de eroare.
O explicație mai aprofundată a MVC din perspectiva combustibilului poate fi găsită în documentația MVC privind combustibilul; așa că vom trece la lucrurile bune.
Vom începe cu unele dintre elementele de bază pentru a obține noi utilizatori. Dacă unele dintre aceste lucruri par a fi evidente, vă rugăm să treceți în jos pentru a obține unele dintre caracteristicile mai interesante.
Instalarea este la fel de simplă ca și printarea unei copii de la GitHub sau descărcarea unui ZIP de pe site. Puteți utiliza, de asemenea, o instalare cu o singură linie dacă utilizați un sistem * nix, cum ar fi Linux, Mac OS X etc., care necesită să ruleze Git. Instalarea Git este destul de ușoară și face lucrurile mult mai ușoare pe măsură ce vă dezvoltați aplicațiile:
$ curl get.fuelphp.com/oil | SH
Aceasta va instala o versiune foarte limitată a "uleiului", care este numele utilitarului de linie de comandă pe care îl puteți folosi când lucrați cu aplicații de combustibil. Această versiune dezbrăcată poate fi utilizată pentru a crea aplicații:
$ ulei creează blog
Acest lucru va crea un dosar blog în directorul dvs. curent, care va conține cadrul de bază. Dacă întâmpinați probleme, atunci aruncați o privire la instrucțiunile de instalare mai detaliate.
Presupunând că ai executat această comandă în radacina web a serverelor locale, ar trebui să fim capabili să căutăm http: // localhost / test / publice și vedeți pagina de întâmpinare.
Rădăcina cererii dvs. trebuie să conțină trei elemente principale:
În combustibil / avem câteva dosare importante:
Partea importantă aici este aplicația / dosarul:
Înainte de a trece prin orice altă teorie, să scriem un cod.
Să ștergem combustibil / app / clase / controler / welcome.php
controler și face propriile noastre, numit hello.php
.
În acest fișier, adăugați următorul cod:
clasa Controller_Hello extinde Controller funcția publică action_index () echo "Hello World!";
Acum, dacă ne căutăm http: //localhost/test/public/index.php/hello, ar trebui să vedeți "Hello World!" ieșiți în browser. action_ prefix
ne spune că aceasta este o metodă care poate fi redirecționată și nu un apel invers sau altă metodă partajată și înseamnă că puteți utiliza nume de metode, cum ar fi "lista", fără ca PHP să fie confuz.
Dacă vrem ca acest controler să fie controlerul nostru "rădăcină" în loc de cel dispărut acum welcome.php
, trebuie doar să ne deschidem combustibil / app / config / routes.php
și schimbați cale_rootă
ca astfel:
rândul de întoarcere ('_root_' => 'hello', // ruta implicită);
Faceți un fișier combustibil / app / opinii / hello.php
si adauga:
Salut!
Hei , cum stă treaba?
Apoi, modificați puțin controlerul:
clasa Controller_Hello extinde Controller funcția publică action_index () echo "Hello World!"; funcția publică action_buddy ($ name = 'buddy') $ this-> response-> body = Vizualizare :: factory ('hello', array ('name' => $ name,);
Acum, dacă încărcați http: //localhost/test/public/index.php/hello/buddy sau http: //localhost/test/public/index.php/hello/buddy/John , veți vedea numele $
variabila fiind trecută de la metodă la vedere. In esenta extrage()
este rulat pe vedere.
După cum puteți vedea, combustibilul poate face cheia de bază Controller / View din cutie, dar dacă vrem să facem mult mai mult, va trebui să facem câteva modificări de configurare de bază. Să începem prin deschidere combustibil / app / config / config.php
și setarea câtorva lucruri:
/ ** * index_file - Numele fișierului principal de bootstrap. * * Setați acest lucru la fals sau eliminați dacă utilizați mod_rewrite. * / 'index_file' => 'index.php',
Daca ai mod_rewrite
instalat, putem schimba această valoare ca fiind un șir gol, care ne va permite să eliminăm index.php
de la URL-urile noastre. Există un fișier .htaccess în public / care va susține acest lucru.
Apoi trebuie să configuram configurația bazei de date, care, din motive de acest tutorial, vom presupune că este MySQL. Creați baza de date cu desktop-ul GUI, phpMyAdmin sau linia de comandă etc:
mysql> a crea baza de date blog_example;
Deschide combustibil / app / config / db.php
și setați Combustibil :: DEZVOLTARE
array, cum ar fi:
Combustibil :: DEVELOPMENT => array ('type' => 'mysql', 'connection' => array (hostname '=>' localhost ' , 'password' => 'yourmysqlpassword', 'persistent' => false,), 'table_prefix' => ',' charset '=>' utf8 ',' caching '=> false,' profiling '=> false),
În continuare, permiteți activarea funcției ORM
și AUTH
pachet prin necomentarea următoarelor linii:
/ ** * Aceste pachete sunt încărcate la pornirea combustibilului. Puteți să le specificați în * în felul următor: * * array ('auth'); // Aceasta presupune că pachetele se află în PKGPATH
* * // Utilizați acest format pentru a specifica calea spre pachet explicit * array (* array ('auth' => PKGPATH.'auth / ') *); * / 'pachetele' => array ('orm', 'auth'),
Acest pas este necesar numai dacă doriți să le utilizați - ceea ce în acest tutorial vom fi.
Ultimul pas al configurației este crearea unei gazde virtuale. Tu nu nevoie pentru a face acest lucru, dar înseamnă că puteți utiliza o adresă URL reală și eliminați /public/
din adresele URL ale dvs. Dacă utilizați Apache, atunci o bucată simplă ca aceasta ar trebui să facă truc:
DocumentRoot / home / phil / Site-uri / blog / public ServerName local.blog Opțiuni Toate AllowOverride Toate
Dacă a fost un site live, am adăugat numele serverului ca "myawesomeblog.com" în loc de "local.blog", dar acest lucru funcționează pentru demo-ul nostru. Odată ce ați adăugat "127.0.0.1 local.blog" la dvs.
/ etc / hosts
fișier ar trebui să fie gata să plece. Dacă doriți să săriți peste acest pas, ajustați apoi URL-urile din acest articol.
Cu această înțelegere de bază a modului în care funcționează controlorii, vizualizările și configurația, probabil că ați putea intra în documentație și puteți începe destul de repede, dar pentru a merge într-adevăr, cel mai bun mod trebuie să fie schela.
Lemnul nu este un concept nou și este cel mai bine cunoscut pentru locul său în cadrul Ruby on Rails. Este, în esență, o modalitate foarte simplă de a crea un cod bazat pe câteva ipoteze prin linia de comandă. Doriți să adăugați, să editați și să ștergeți o entitate pe care o denumiți și să o oferiți câmpuri. Se face prin ulei și subcomandă "petrolul generează schele
"
Deci, dacă vrem să construim un blog de bază, trebuie doar să scriem "$ oil g scaffold titlu post: string șir: varchar [250] body: text
"Uleiul va fi foarte verbose despre ceea ce face și vă va spune toate fișierele create:
Crearea modelului: /home/phil/Sites/blog/fuel/app/classes/model/post.php Crearea migrării: /home/phil/Sites/blog/fuel/app/migrations/001_create_posts.php Crearea controlerului: / home / phil / Site / blog / fuel / app / classes / controller / posts.php Crearea vizualizării: /home/phil/Sites/blogfuel/app/views/posts/index.php Crearea vizualizării: / home / phil / combustibil / app / views / posts / view.php Crearea vizualizării: /home/phil/Sites/blog/fuel/app/views/posts/create.php Crearea vizualizării: / home / phil / Site / blog / fuel / app / views / posts / edit.php Crearea vizualizării: /home/phil/Sites/blog/fuel/app/views/posts/_form.php Crearea vizualizării: / home / phil / Sites / blog / fuel / app / views / template. php
Notă: Modelele generate de schele utilizează pachetul ORM, deci asigurați-vă că este activat așa cum este descris mai sus.
Veți vedea aici un model numit "post
", o migrare (mai mult pe cele ulterioare) un controler"posturi
"și o mulțime de puncte de vedere. Câmpurile sunt toate generate pe baza argumentelor furnizate, care sunt numele_campului: fieldtype [optional lungime]
. Pentru titlu
, am folosit ": string" care, atâta timp cât utilizați MySQL, va fi alias : Varchar [255]
, dar orice tip de DB este suportat.
Cu această comandă trebuie să ne conducem migrațiile. O migrare este o serie de modificări care trebuie făcute într-o bază de date. Acest lucru devine util când mai mulți dezvoltatori lucrează la un proiect, deoarece fiecare dezvoltator poate adăuga o migrare și puteți rula o singură comandă pentru a vă asigura că copia dvs. locală este actualizată. Nu mai există erori de "câmp lipsă" sau "tabel nu există" după tragerea ultimei copii de dezvoltare!
Pentru a rula această migrare, tastați pur și simplu:
$ ulei rafina migra Migrate la ultima versiune: 1.
Acum puteți vedea ce a făcut Oil pentru dvs. prin a merge la http://local.blog/posts
Dacă doriți să creați separat controlere, modele și migrații și nu toate împreună, puteți face acest lucru cu ușurință regulator de ulei g
, uleiul g migrează
, modelul uleiului g
, etc.
Probabil ați observat, în pasul de mai sus, că Petru a creat un fișier:
Crearea vederii: /home/phil/Sites/blog/fuel/app/views/template.php
Acest lucru va fi creat atunci când executați pentru prima oară o comandă pentru schele deoarece toate vizualizările sunt înfășurate cu un "șablon" sau "aspect" - care este un antet și subsol care înfășoară conținutul. Pentru a trece de la designul implicit, tot ce trebuie să faceți este să editați acest șablon, să includeți propriul CSS, să adăugați un logo și să introduceți metadatele care vă plac.
Când creați controale noi, manual, puteți extinde "Controller_Template
"în loc de cele obișnuite"Controlor
'pentru a avea acest șablon înfășurat în jurul oricărui afișaj încărcat în controler.
Dacă doriți să utilizați un șablon diferit pentru un controler, schimbați pur și simplu șablon $
proprietate la ceva diferit.
Utilizatorii de clasă extinde Controller_Template public $ template = 'alternative';
Aceasta va folosi combustibil / app / opinii / alternative.php
vizualizați fișierul în loc de cel obișnuit combustibil / app / opinii / template.php
.
Unul dintre aspectele cele mai importante ale oricărei aplicații este prezentarea formularului. Acesta este modul în care datele sunt capturate de la un utilizator; ar putea fi un login, un comentariu, un coș de cumpărături de checkout etc. Acest lucru este făcut cu HTML în mod normal, dar Fuel vă oferă câteva metode utile pentru a face acest proces mult mai ușor. Ele sunt opționale, deci dacă sunteți un fanaj HTML, continuați apoi, dar pentru a accelera lucrurile, citiți mai departe:
titlu: "));
rezumat: "));
corp: "), array ('cols' => 60, 'rânduri' => 8));
Aceasta este o formă foarte simplă care va funcționa cu ambele crea
și Editați | ×
. Pentru fiecare intrare, dacă se poate găsi o potrivire în POST
o va folosi; în caz contrar, va căuta $ postare
variabilă și introduceți valoarea (bună pentru editare).
Avantajul real al acestor ajutoare nu vine din sintaxa mai curată, așa cum ați putea crede, ci prin faptul că permite cadrului să înfășoare în mod programatic formularul. Acest lucru înseamnă că combustibilul poate încorpora automat atributele în toate formele pentru a vă asigura că datele trimit în setul de caractere corespunzător și activați CRSF
(Falsificarea solicitărilor între site-uri) în mod automat.
Validarea este o modalitate simplă de a vă asigura că anumite informații au fost furnizate într-o formă de depunere în mod corect. Se poate potrivi cu anumite tipare, tipuri de date sau condiții și va contribui la îmbunătățirea integrității sau a datelor.
În mod implicit, validarea nu este utilizată de Schele, deoarece este complicat să se facă presupuneri despre ceea ce dezvoltatorul se așteaptă să fie păstrat în date. Din acest motiv, validarea este opțională, dar este ușor de adăugat în controlerele dvs. generate sau de a lucra cu de la zero.
Să aruncăm o privire asupra modului în care metoda "Creați postare" poate căuta blogul nostru:
funcția publică action_create ($ id = null) if (Input :: method () == 'POST') $ val = Validare :: fabrică (); // Adăugați un câmp pentru titlu, dați-i eticheta "Titlu" și faceți-o necesară $ val-> add ('titlu', 'Titlu') -> add_rule ('obligatoriu'); // Acum adăugați un alt câmp pentru rezumat și cereți-l să conțină cel puțin 10 și cel mult 250 de caractere $ val-> add ('summary', 'Summary') -> add_rule ('required') -> add_rule ('min_length ', 10) -> add_rule (' max_length ', 250); $ val-> add ('body', 'Article body') -> add_rule ('necesar'); dacă ($ val-> run ()) // Efectuați o postare pe baza inputului (array) $ post = Model_Post :: factory ($ val-> validated ()); // Încercați și salvați-l dacă ($ post-> save ()) Session :: set_flash ('notice', 'Post post #'. $ Post-> id. '); altceva Session :: set_flash ('notice', 'Nu am putut salva postul'); Răspuns: redirect ("posturi"); altceva $ this-> template-> set ('eroare', $ val-> erori ()); $ this-> template-> title = "Mesaje"; $ this-> template-> content = Vizualizare :: fabrică ('posts / create');
Putem vedea aici că spunem clasei de validare - care este autoloadă ca toate clasele) în care domenii ne pasă. Apoi atribuim reguli și le acordăm etichete pentru a le citi. Dacă $ Val-> run ()
este Adevărat
, noi facem un nou Model_Post
utilizând fabrica și trimiteți $ Val-> validate ()
care conține o serie de date trimise. Cu aceasta, putem pur și simplu salva instanța, care folosește ORM pentru a face totul pentru tine.
Dacă se întoarce oricare dintre regulile de validare fals
, atunci $ Val-> run ()
va eșua și ni se va da o serie de erori $ Val-> erori ()
pe care le putem trimite înapoi utilizatorului. Valoarea implicită template.php
caută o notă de "notă" de flashdata (parte a clasei de sesiune) sau doar date de vizualizare normală și poate emite un șir sau un matrice, astfel încât aceasta funcționează perfect.
Folosind cunoștințele dvs. de validare și formare a formelor, puteți începe să faceți orice aplicații bazate pe controler care vă plac.
Sarcini sunt similare cu controlorii, dar nu pot fi accesate prin intermediul unei adrese URL sau direcționate în nici un fel. În schimb, acestea sunt difuzate prin intermediul "rafinarea uleiului
"subcomandă în terminal.Aceasta este minunat pentru crearea de script-uri interactiv shell care au acces la codul dvs. de bază și face crearea de locuri de muncă sigure cron o briza.
Unele cadre vă sugerează să le folosiți wget
, răsuci
sau ceva similar pentru a rula un controler pentru a face o lucrare cron, dar acest lucru poate duce la posibile probleme de securitate sau consistență cu cron de locuri de muncă fiind epuizate în timp pentru a provoca rezultate dăunătoare sau neașteptate. În acest fel, este protejat complet de lumea exterioară.
Pentru un exemplu de sarcină, aruncați o privire la "roboți
"sarcină în combustibil / app / sarcini / robots.php
:
Roboti de clasă funcția statică publică publică ($ speech = null) if (! isset ($ speech)) $ speech = 'UTILUI TOATE UMANII!'; $ eye = \ Cli :: culoare ("*", "roșu"); \\ "," albastru "). \ n". \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ " ) \ n ". \ n". \ n "\ n" \ n "\ n" : culoare ("/ \\ # \\ \\ _____ / / # \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\" / ___ / | | | | | | \\ ___ \\ | | | | | | | | | | __ | \\ _ | | _ | _ | | _ / | __ | // \\\ \ <\\ _//^\\\\_ /> // \\\\\\ || / | \\ || / | | | | | --- | | --- | | --- | | --- | | | | | | ___ | | ___ | / \\ / \\ | _____ | | _____ | | HHHHH | | HHHHH | "," albastru ");
Pentru a rula acest lucru glumeţ sarcină doar tastați "uleiuri roboți
"sau"ulei ro roboți "ucide toate soareci"
"pentru ca robotul să spună altceva.
Dacă ați urmat fiecare pas, ați instalat combustibilul, ați învățat unde merg fișierele importante, ați configurat o instalare de bază pentru a rula pe Apache cu mod_rewrite
(și alte servere funcționează bine), și au creat controale și vizualizări simple folosind formulare și validare. Cu schele disponibile pentru a genera codul pentru a alege în afară, ar trebui să existe o mulțime de cod de învățat de la!
În acest moment, ar trebui să aveți suficiente cunoștințe pentru a juca și a crea câteva aplicații foarte simple - adică până la partea a doua a acestei serii, unde vom trece prin procesul de creare și extindere a controlorilor de bază pentru a crea separarea frontend / backend. De asemenea, vom examina ORM avansate, driverele de autentificare și încărcările de fișiere. Rămâneți aproape!