PHP este cea mai folosită limbă pentru programarea pe web. Aici sunt treizeci de bune practici pentru începători care doresc să obțină o înțelegere mai fermă a fundamentelor.
Nota editorului: Seria "Cele mai bune practici" a fost copilul meu pentru trei articole acum. Cu toate acestea, datorită concentrării mele asupra seriei de videoclipuri CI, am decis să dau această intrare următoare lui Glen. După ce am spus asta, nu sunt foarte bun să-mi țin gura închisă! Am crezut că ar fi distractiv să adăugați sporadic câteva rebuturi la sfaturile lui. Sper că nu-i deranjează!
Apropo, dacă nu sunteți încrezător în implementarea personală a unor astfel de lucruri, puteți găsi experți PHP pe Envato Studio pentru a vă ajuta. Aceștia pot remedia erorile sau pot personaliza site-ul pentru dvs. și sunt dezvoltatori cu experiență, astfel încât aceștia să respecte cele mai bune practici în timpul finalizării lucrării.
Experți PHP pe Envato StudioDacă sunteți nou la PHP, atunci este timpul să vă familiarizați cu minunata că este manualul PHP. Manualul PHP este incredibil de amănunțit și are comentarii cu adevărat utile după fiecare articol. Înainte de a pune întrebări sau de a încerca să găsiți o problemă pe cont propriu, economisiți puțin timp și doar îndreptați direct la manual. Cotele sunt răspunsul la întrebarea dvs. este deja cuibărit într-un articol util pe site-ul PHP.net.
Eroarea de raportare în PHP este foarte utilă. Veți găsi bug-uri în codul dvs. pe care probabil că nu le-ați văzut mai devreme, deoarece nu toate bug-urile mențin aplicația de lucru. Există diferite niveluri de strictețe în raportarea pe care o puteți utiliza, dar E_ALL vă va arăta cele mai multe erori, critice și avertismente deopotrivă.
Odată ce ați primit aplicația pentru producție, veți dori să dezactivați raportarea erorilor sau vizitatorii dvs. vor vedea erori ciudate pe care nu le înțeleg.
IDE-urile (Integrated Development Mediums) sunt instrumente utile pentru orice dezvoltator. În timp ce nu sunt pentru toată lumea, un IDE are cu siguranță locul său. IDE-urile furnizează instrumente cum ar fi
Și multe alte caracteristici. Există o mulțime de IDE-uri excelente care susțin PHP.
Puteți învăța multe despre PHP doar experimentând cu cadre PHP. Cadrele ca CakePHP sau CodeIgniter vă permit să creați rapid aplicații PHP, fără a trebui să fiți un expert cu PHP. Într-un fel, ele sunt aproape ca și roțile de antrenament PHP care vă arată ce ar trebui să arate o aplicație PHP și vă vor arăta concepte de programare valoroase (cum ar fi separarea logicii de proiectare etc.).
Există și câteva cadre specializate disponibile pe piața Envato, precum Blaze și Frameworx.
RĂSPUNS: Eu personal nu aș recomanda ca începătorii să folosească un cadru. Aflați mai întâi principiile fundamentale. :)
DRY înseamnă "Nu te repetă" și este un concept de programare valoros, indiferent de limbaj. Programarea DRY, așa cum sugerează și numele, vă asigură că nu scrieți coduri redundante. Iată un exemplu de la Reinhold Weber:
Acest cod ...
$ mysql = mysql_connect ('localhost', 'reinhold', 'secret_hash'); mysql_select_db ("wordpress") sau mor ("nu poate selecta DB");
acum cu abordarea DRY:
$ db_host = 'localhost'; $ db_user = 'rețineți'; $ db_password = 'secret_hash'; $ db_database = 'wordpress'; $ mysql = mysql_connect ($ db_host, $ db_user, $ db_password); mysql_select_db ($ db_database);
Puteți citi mai multe despre principiul de programare DRY aici și aici.
Dacă nu folosiți dungi și spații albe în codul dvs., rezultatul arată ca o pictura Jackson Pollack. Asigurați-vă că codul dvs. este ușor de citit și ușor de căutat, pentru că, în mod sigur, veți face schimbări în viitor. IDE-urile și editorii avansați de text pot adăuga automat indentarea.
Îmbunătățirea aplicațiilor dvs. nu este altceva decât o separare a diferitelor componente ale codului în diferite părți. Acest lucru vă permite să modificați cu ușurință codul dvs. în viitor. Scriitorul NETTUTS, Jason Lengstorf, a scris un articol excelent despre modul în care puteți aplica aplicațiile dvs. PHP pentru o întreținere mai ușoară.
Deseori, programatorii încearcă să ia comenzi rapide când declară PHP. Iată câteva dintre cele comune:
echo "Hello world"; ?> ="Hello world"; ?> <% echo "Hello world"; %>
În timp ce acestea salvează câteva personaje, toate aceste metode sunt depreciate și neoficiale. Stick cu standardul deoarece va fi garantat că va fi susținut în toate versiunile viitoare.
Namingul nu este doar pentru binele vostru. Nu e nimic mai rău decât să încerci să-ți găsești drumul prin convențiile nonsensice ale numelui altor programatori. Ajută-te și altele folosind nume care au sens pentru clasele și funcțiile dvs..
În afară de utilizarea spațiului alb și a indentărilor pentru a separa codul, veți dori, de asemenea, să utilizați comentarii inline pentru a adnota codul. Veți mulțumi mai târziu când trebuie să vă întoarceți și să găsiți ceva în cod sau dacă nu vă puteți aminti ce a făcut o anumită funcție. De asemenea, este util pentru oricine altcineva care trebuie să vă uite codul.
MySQL este cel mai popular tip de bază de date de utilizat cu PHP (deși nu este singurul). Dacă doriți să configurați un mediu local pentru a vă dezvolta și testa aplicațiile PHP pe computer, examinați instalarea MAMP (Mac) sau WAMP (Windows). Instalarea MySQL pe calculatorul propriu poate fi un proces obositor și ambele pachete software sunt instalări de tip MySQL. Curățenie și simplă.
Punerea unei limite de timp pe scripturile dvs. PHP este un lucru foarte critic. Există momente în care script-urile dvs. vor eșua, iar atunci când o vor face, veți dori să utilizați funcția set_time_limit pentru a evita buclele infinite și timpul de conectare la baza de date. Set_time_limit plasează o limită de timp pentru numărul maxim de secunde pe care îl va rula un script (implicit este 30). După această perioadă de timp, este aruncată o eroare fatală.
Programarea orientată pe obiecte (OOP) utilizează obiecte pentru a reprezenta părți ale aplicației. Nu numai că OOP este un mod de a vă rupe codul în secțiuni logice separate, de asemenea, reduce redarea codului și face mult mai ușor să îl modificați în viitor. Dacă doriți să aflați mai multe, DevArticles are o mare scriere în programarea orientată pe obiecte cu PHP.
Este mai eficient de utilizat singur citate în șiruri de caractere, deoarece parserul nu trebuie să treacă prin cod pentru a căuta caractere evadate și alte lucruri pe care ghilimele duble permit. Încercați întotdeauna să utilizați citare simple ori de câte ori este posibil.
RĂSPUNS: De fapt, asta nu este neapărat adevărat. Testele de testare arată că, atunci când testați șiruri fără variabile, există beneficii clare în utilizarea acestora ghilimele duble.
Phpinfo este un lucru minunat. Prin crearea pur și simplu a unui fișier PHP care a
și lăsându-l pe server undeva, puteți afla instantaneu totul despre mediul dvs. de server. Cu toate acestea, o mulțime de începători vor plasa un fișier care conține phpinfo () în webroot-ul serverului. Aceasta este o practică cu adevărat nesigură și, dacă ochii curioși pot avea acces, ar putea să-l vadă pe serverul tău. Asigurați-vă că phpinfo () se află într-un loc sigur și, ca măsură suplimentară, ștergeți-l după ce ați terminat.
Dacă aplicația are loc pentru introducerea de către utilizatori, trebuie să presupuiți întotdeauna că vor încerca să introducă codul obraznic. (Nu presupunem că utilizatorii dvs. sunt oameni răi, este doar o mentalitate bună). O modalitate excelentă de a vă păstra hacker-ul gratuit este să vă inițializați întotdeauna variabilele pentru a vă proteja site-ul de atacurile XSS. PHP.net are un exemplu de formular securizat corespunzător cu variabile inițializate:
Mulți începători din domeniul PHP încearcă să plângă adesea date delicate precum parolele în baza de date fără a aplica nici o criptare. Luați în considerare utilizarea MD5 pentru criptarea parolelor înainte de a le pune în baza de date.
echo md5 ('myPassword'); // renders - deb1536f480475f7d593219aa1afd74c
Obiecții Rețineți, totuși, că hashurile MD5 au fost compromise de mult timp. Sunt absolut mai sigure decât nu, dar, cu ajutorul unei "mese de curcubeu" enorme, hackerii pot să facă referire la hash. Pentru a adăuga și mai multă siguranță, vă recomandăm să adăugați și o sare. O sare este, în esență, un set suplimentar de caractere pe care îl adăugați la șirul utilizatorului.
Dacă întâmpinați dificultăți în planificarea și modificarea bazelor de date pentru aplicațiile dvs. PHP, vă recomandăm să utilizați un instrument de vizualizare a bazei de date. Utilizatorii MySQL pot lucra cu DBDesigner și MySQL Workbench pentru a vă proiecta vizual bazele de date.
Tamponarea rezultatelor este o modalitate simplă de a îmbunătăți foarte mult performanța și viteza scriptului dvs. PHP. Fără tampon de ieșire, scriptul dvs. va arăta HTML-ul în pagină așa cum este procesat - în bucăți. Adăugarea bufferingului de ieșire permite PHP să stocheze HTML-ul ca variabilă și să-l trimită browser-ului într-o singură bucată.
Pentru a activa tamponarea de ieșire, pur și simplu adăugați ob_start () ca în partea de sus a fișierului.
Rebuttal: Deși nu este necesar, este în general considerat a fi o practică bună să mergem înainte și să adăugăm "ob_end_flush ();" precum și în partea de jos a documentului. P.S. Doriți să comprimați HTML-ul? Pur și simplu înlocuiți "ob_start ();" cu "ob_start ('ob_gzhandler')";Pentru mai multe informații, consultați acest articol Dev-tips.
fără titlu
Dacă nu scăpați de personajele dvs. folosite în șiruri SQL, codul dvs. este vulnerabil la injecțiile SQL. Puteți evita acest lucru fie folosind mysql_real_escape_string, fie folosind declarații pregătite.
Iată un exemplu de mysql_real_escape_string în acțiune:
$ username = mysql_real_escape_string ($ GET ['nume de utilizator']);
și o declarație pregătită:
$ id = $ _GET ['id']; $ statement = $ conexiune-> pregăti ("SELECT * FROM tbl_members WHERE id =?"); instrucțiunea $ -> bind_param ("i", $ id); $ Declarație> execute ();
Folosind declarații pregătite, nu încorporăm niciodată datele introduse de utilizator direct în interogarea noastră. În schimb, folosim metoda "bind_param" pentru a lega valorile (și a scăpa) la interogare. Este mult mai sigur și, mai ales, mai rapid atunci când executați simultan mai multe declarații CRUD.
Citiți mai multe despre crearea de aplicații PHP securizate la Nettuts.
Dacă scrieți obiecte orientate spre PHP, atunci puteți utiliza maparea relațională a obiectului (ORM). ORM vă permite să convertiți date între baze de date relaționale și limbi de programare orientate pe obiecte. Pe scurt: ORM vă permite să lucrați cu bazele de date în același mod în care lucrați cu clase și obiecte în PHP.
Există o mulțime de biblioteci ORM pentru PHP precum Propel, iar ORM este construit în cadre PHP cum ar fi CakePHP.
Caching-ul bazat pe baze de date PHP-uri este o idee excelentă pentru a îmbunătăți încărcarea și performanța scenariului dvs. Nu este cu adevărat dificil să creați și să preluați fișiere statice de conținut cu ajutorul prietenului nostru bun ob_start (). Iată un exemplu preluat de la Snipe.net:
// TOP al scriptului tău $ cachefile = 'cache /' basename ($ _ SERVER ['SCRIPT_URI']); $ cachetime = 120 * 60; // 2 ore // Servi din cache dacă este mai mic decât $ cachetime dacă (file_exists ($ cachefile) && (time () - $ cachetime < filemtime($cachefile))) include($cachefile); echo ""; exit; ob_start (); // pornirea tamponului de ieșire // script-ul dvs. PHP normal și conținutul HTML aici // BOTTOM al scriptului dvs. $ fp = fopen ($ cachefile, 'w'); // deschideți fișierul cache pentru scrierea fwrite ($ fp, ob_get_contents ()); // salvați conținutul tamponului de ieșire în fișierul fclose ($ fp); // închideți fișierul ob_end_flush (); // trimiteți ieșirea către browser
Acest cod de cod va utiliza o versiune stocată în cache a unei pagini cu o vechime mai mică de 2 ore.
Dacă doriți un sistem de caching mai robust, există câteva scripturi de cache pentru PHP care ar putea fi mai complete decât exemplul de mai sus.
Datele cookie, ca orice date transmise pe Web, pot fi dăunătoare. Puteți valida datele cookie fie cu htmlspecialchars (), fie mysql_real_escape_string ().
În afară de utilizarea sistemelor de memorare a cache-urilor de baze de date, cum ar fi Memcached, este posibil să doriți să încercați și un sistem templating pentru a crește performanța în aplicațiile dvs. PHP. Smarty este un sistem de template-uri robust, care a încorporat-o în cache.
Profilarea codului dvs. cu un instrument precum xdebug vă poate ajuta să identificați rapid blocajele și alte probleme potențiale din codul dvs. PHP. Unele IDE-uri precum Netbeans au capacități de profilare PHP, de asemenea.
Odată ce ați scos frânghiile PHP, puteți începe să învățați despre codificarea la un standard. Există diferențe între standardele existente (de exemplu, Zend și Pear), iar găsirea și păstrarea acestora va contribui la coerența codării pe termen lung.
Luați o lovitură de performanță când includeți funcții în interiorul buclelor. Cu cât este mai mare bucla pe care o aveți, cu atât va dura mai mult timpul de execuție. Luați în plus timpul și linia de cod și plasați funcția în afara bucla.
Nota editorului: Gândiți-vă în acest fel. Încercați să eliminați cât mai multe operații din bucla posibilă. Chiar trebuie să creați acea variabilă pentru fiecare iterație a buclă? Chiar trebuie să creați funcția de fiecare dată? Desigur că nu. :)
Unii oameni preferă să facă codul lor mai atrăgător prin copierea variabilelor predefinite la variabilele cu nume mai mici. Acest lucru este redundant și ar putea dubla memoria scriptului dvs. Codul Google are exemple proaste și bune de utilizare variabilă:
Rău
$ description = strip_tags ($ _ POST ['descriere']); echo $ description;
Bun
ecou strip_tags ($ _ POST ['description']);
Respingere: Referindu-se la comentariul despre "dublarea memoriei", aceasta este de fapt o concepție greșită. PHP implementează gestionarea memoriei "copy-on-write". Acest lucru înseamnă în principiu că puteți atribui o valoare la cât mai multe variabile pe care le doriți, fără a fi nevoiți să vă faceți griji cu privire la datele de fapt fiind copiat. Deși este susceptibil ca exemplul "bun" exemplificat mai sus să facă pentru un cod mai curat, mă îndoiesc că este mai rapid.
În timp ce se pare că este un lucru bun de simț, mulți oameni nu actualizează PHP ori de câte ori ar trebui. Există o mulțime de creșteri de performanță între PHP 4 și PHP 5. Verificați-vă serverul pentru a vă asigura că sunteți la curent.
Orice modalitate prin care puteți reduce numărul interogărilor de bază de date, cu atât va fi mai eficient scriptul dvs. PHP. Există instrumente cum ar fi Stace (Unix) și Process Explorer (Windows) care vă permit să găsiți procese redundante și cum le puteți combina.
Este doar natura umană să vrea să ascundă faptul că nu știm prea multe despre un anumit subiect. Nimănui nu-i place să fie n00b! Dar cum vom învăța fără să ne întrebăm? Simțiți-vă liber să utilizați forumuri, IRC, StackOverflow pentru a pune întrebări mai detaliate despre dezvoltatorii PHP. Site-ul PHP are o pagină despre obținerea ajutorului PHP.
Aveți vreun răzbunare propriu? Sunt sigur că o faceți! Să începem dezbaterea.