Cu adoptarea pe scară largă a PHP, este aproape prea ușor să găsiți un script sau un fragment exact de ce ai nevoie. Din păcate, nu există niciun filtru cu privire la ceea ce este o "bună practică" și care este, bine ... nu atât de bine atunci când scrii un script PHP. Avem nevoie de surse de încredere, care au demonstrat că au o înțelegere solidă cu privire la cele mai bune practici din PHP.
Avem nevoie de masterat PHP pentru a ne arăta cele mai bune principii de urmat pentru programarea PHP de înaltă calitate.
Nu există o resursă mai bună decât creatorul PHP pentru a ști ce este capabil de PHP. Rasmus Lerdorf a creat PHP în 1995, și de atunci limba sa răspândit ca focul de foc prin comunitatea dezvoltatorilor, schimbând fața Internetului. Cu toate acestea, Rasmus nu a creat PHP cu această intenție. PHP a fost creat dintr-o nevoie de a rezolva problemele de dezvoltare web.
Și ca în cazul multor proiecte open source care au devenit populare, motivația nu a fost niciodată filozofică sau chiar narcisistă. A fost pur și simplu un caz de a avea nevoie de un instrument pentru a rezolva problemele legate de lumea reală. În 1994, opțiunile au fost destul de limitate în privința instrumentelor de dezvoltare web.
Cu toate acestea, nu puteți folosi PHP pentru tot. Lerdorf este primul care admite că PHP este într-adevăr doar un instrument în setul dvs. de instrumente, și că chiar și PHP are limitări.
Utilizați instrumentul potrivit pentru lucrare. Am întâlnit companii care au cumpărat complet în PHP, implementându-le absolut peste tot, dar nu a fost niciodată o limbă generală potrivită pentru fiecare problemă. Este cel mai acasă ca limbaj de scripting pentru Web.
Încercarea de a folosi PHP pentru tot nu este eficientă și cu siguranță nu este cea mai bună utilizare a timpului dvs. ca dezvoltator web. Nu vă fie teamă să utilizați alte limbi dacă PHP nu lucrează pentru proiectul dvs..
Nimeni nu trebuie să pună la îndoială autoritatea lui Matt Mullenweg cu PHP. El (alături de o comunitate turbulentă) a dezvoltat cel mai popular sistem de blogare de pe planetă: Wordpress. Dupa crearea Wordpress, Matt si compania au lansat Wordpress.com stelar, un site gratuit de bloguri, bazat pe software-ul blogging Wordpress MU pentru mai multe bloguri. La momentul acestei scrieri, Wordpress.com găzduiește peste 4 milioane de bloguri, iar utilizatorii lor au scris astăzi peste 140.000 de postări. (Puteți vedea statistici mai interesante despre utilizarea Wordpress.com aici.)
Dacă cineva știe cum să evalueze un site Web, este Matt Mullenweg. În 2006, Matt a oferit o perspectivă asupra structurii bazei de date a Wordpress și a explicat de ce Wordpress MU utilizează o tabelă separată MySQL pentru fiecare blog, spre deosebire de utilizarea unei mese uriase "monolitice" pentru toate blogurile.
Am testat această abordare pentru UM, dar am considerat că este prea scump să scadă un anumit punct. Cu structuri monolitice ai lovit un perete pe baza hardware-ului tău. În utilizatorii MU sunt împărțiți și pot fi împărțiți ușor, de exemplu pe WordPress.com avem utilizatorii împărțiți între 4096 de baze de date, care vă permit să scalați foarte ieftin și eficient la sute de mii și chiar milioane de utilizatori și la niveluri extrem de ridicate de trafic.
Posibilitatea migrării tabelelor permite codul și, în cele din urmă, blogurile să ruleze mult mai repede și să scadă mai ușor. Pe lângă unele cache-uri grele și utilizarea inteligentă a bazelor de date, Matt a arătat că site-uri extrem de populare precum Facebook și Wordpress.com pot rula din PHP și se pot ocupa de încărcarea incredibilă a traficului.
Dave Child este creatorul (teehee) din spatele site-ului recent adăugat Add Bytes (anterior ilovejackdaniels.com), care conține foile excelente ale lui Dave pentru multe limbi de programare. Dave a lucrat pentru multe companii de dezvoltare din Marea Britanie și sa stabilit ca o autoritate în lumea programării.
Dave oferă câteva sfaturi despre salvie în legătură cu scrierea codului securizat în PHP: Nu aveți încredere în utilizatorii dvs. Doar că te-ar putea răni.
Deci, regula principală a întregii dezvoltări web, și nu o pot sublinia suficient, este: Niciodată, vreodată, încredere în utilizatorii dvs. Să presupunem că fiecare singură bucată de date pe care site-ul dvs. o colectează de la un utilizator conține cod rău intenționat. Mereu. Aceasta include datele despre care credeți că ați verificat cu validarea de la client, de exemplu utilizând JavaScript. Dacă reușiți acest lucru, veți începe un început bun. Dacă securitatea PHP este importantă pentru dvs., acest punct unic este cel mai important de învățat.
Dave continuă să ofere exemple specifice de practici sigure în părțile unu, doi și trei ale seriei sale "Writing Secure PHP". Dar, ultima sa finalitate este:
În cele din urmă, fi complet și total paranoic.
Dacă vă presupuneți că site-ul dvs. nu va fi atacat niciodată sau nu se confruntă cu nici un fel de probleme, atunci când ceva nu merge bine, veți avea probleme mari. Dacă, pe de altă parte, presupuneți că fiecare vizitator pe site-ul dvs. este afară să vă aducă și sunteți în război permanent, vă veți ajuta să păstrați site-ul în siguranță și să fiți pregătiți în cazul în care lucrurile ar trebui să se înșele.
Ben Balbo a scris pentru site-ul Point, un site de tutorial foarte bine respectat pentru cei care caută dezvoltatorii și designerii. Este în comitet atât pentru Melbourne PHP User Group, cât și pentru Open Source Developers 'Club, așa că știe un lucru sau două despre limbă. Nu este o surpriză în ceea ce privește fundalul lui Ben ca dezvoltator și trainer al PHP, că el recomandă să pui puțin mai multă gândire și pregătire în cache PHP.
Dacă aveți un site web ocupat și predominant static - cum ar fi un blog - care este gestionat printr-un sistem de gestionare a conținutului, probabil va necesita mici modificări, dar poate beneficia de îmbunătățiri imense de performanță rezultate dintr-o mică investiție a timpului dvs. Configurarea memoriei cache pentru un site mai complex care generează conținut pe bază de utilizator, cum ar fi un portal sau un sistem de coș de cumpărături, se va dovedi puțin mai complicat și consumator de timp, dar beneficiile sunt încă limpezi.
Există multe tehnici diferite de caching în PHP, iar Ben atinge câteva din cele mai mari din articol, cum ar fi:
și multe altele. Din cauza naturii limbilor dinamice, cum ar fi PHP, caching-ul este esențial pentru a stoca acele părți ale paginii accesate frecvent și nu se schimbă des.
Când Chad Kieffer nu este ocupat de interfața cu interfața cu utilizatorii și administrează bazele de date, el oferă sfaturi de expertiză de la blogul său de 2 linguri. Din cauza vastului câmp de expertiză al lui Chad, el este adesea capabil să vadă imaginea de ansamblu pe care alți programatori ar putea să nu o aibă, mai ales când vine vorba de abordarea holistică pe care Chad o are în dezvoltarea unui site web. El se specializează în toate aspectele procesului de dezvoltare, astfel încât toate informațiile pe care le poate furniza împreună cu un întreg proiect vor fi utile.
Chad crede că folosirea unui IDE ca Eclipse PDT (pachetul de dezvoltare PHP al Eclipse) cu un amestec de șabloane și fragmente poate accelera într-adevăr timpul de întoarcere pe un proiect.
Calendarele ocupate, listele lungi de timp și termenele limită fac dificil pentru dezvoltatori să se familiarizeze cu unele dintre funcțiile avansate oferite de instrumentele lor. Aceasta este o rușine, deoarece unele caracteristici, cum ar fi Eclipse Templates, pot reduce într-adevăr timpul de codare și erori.
Bunul simț spune că, de fiecare dată când poți automatiza o sarcină, cu atât mai repede vei finaliza proiectul. Același lucru este valabil și pentru teoria lui Dan. De a lua timp pentru a crea șabloane pe care le veți folosi de peste si peste, veți economisi tone de timp automatizarea repere repere de codificare.
Folosind un IDE ca Eclipse și pachetul PDT, vei constata că timpul tău de dezvoltare se va accelera treptat. IDE-ul va închide parantezele automate, va adăuga aceste punct și virgulă și chiar vă va permite să depanați în cadrul editorului, fără a fi nevoie să încărcați pe server.
(Chad are un tutorial minunat pentru a începe cu Eclipse PDT și beneficiile unui IDE în general, dacă sunteți interesat).
În timp ce Joey Sochacki nu poate fi la fel de mare cu un nume ca Matt Mullenweg în comunitatea PHP, el este un dezvoltator web condus și împărtășește sfaturi pe care le-a luat de-a lungul drumului la blogul său Devolio.
Joey a constatat că, deși există o tona de filtrare care trebuie să se întâmple atunci când scrieți cod PHP, nu mulți programatori folosesc funcțiile de filtrare ale PHP.
Filtrarea datelor. Toți trebuie să o facem. Majoritatea, dacă nu toți, disprețuiesc să o facem. Cu toate acestea, cele mai multe sunt necunoscute pentru funcțiile filter_ * ale PHP, care ne permit să facem tot felul de filtrare și validare. Folosind funcțiile filter_ * ale PHP, putem valida și dezinfecta tipurile de date, adresele URL, adresele de e-mail, adresele IP, caracterele răsucite și multe altele, toate cu ușurință.
Filtrarea poate fi dificilă, dar acest ghid poate ajuta foarte mult. Cu ajutorul lui Joey veți învăța cum să instalați filtrele și să filtrați aproape orice, profitând de puterea de filtrare a PHP.
Întotdeauna a existat o dezbatere cu privire la utilizarea unui cadru PHP cum ar fi Zend, CakePHP, Code Igniter sau orice alt cadru. Există opțiuni și dezavantaje în folosirea uneia și mulți dezvoltatori au propriile opinii cu privire la posibilitatea de a merge sau nu pe acest drum.
Josh Sharp este un dezvoltator de web care își face pâinea și untul creând site-uri web pentru clienți. De aceea, ar trebui să aveți încredere în el atunci când spune că este o idee bună să folosiți un cadru PHP pentru a economisi timp și a elimina greșelile atunci când programați. De ce? Josh crede că este pentru că PHP este prea ușor de învățat.
Cu toate acestea, ușurința de utilizare a PHP este, de asemenea, căderea ei. Deoarece există mai puține restricții asupra structurii codului pe care îl scrieți, este mult mai ușor să scrieți codul rău. Dar există o soluție: utilizați un cadru.
Cadrele PHP contribuie la standardizarea modului în care programați și poate economisi o mulțime de timp în procesul de dezvoltare. Puteți citi mai multe despre beneficiul folosirii unui cadru PHP pe blogul lui Josh.
Contrar credinței lui Josh că ar trebui să se folosească un cadru PHP, Rasmus Lerdorf, Nașul lui PHP însuși, crede că cadrele nu sunt atât de mari. De ce? Deoarece acestea funcționează mult mai încet decât simpla PHP.
În timpul prezentării lui Rasmus la Drupalcon 2008, Rasmus a comparat timpii de răspuns cu o pagină PHP cu un exemplu simplu "Hello World" și a comparat-o cu câteva cadre PHP (diapozitive 24-32) și a arătat că cadrele PHP sunt mult mai lent decât drept PHP.
Puteți asculta sau viziona întreaga prezentare unde Rasmus prezintă pierderile de performanță cu cadrele PHP. Pe scurt, Rasmus arată că performanța are un impact major atunci când utilizați un cadru PHP, spre deosebire de utilizarea PHP pur.
[Notă: Dacă trebuie să utilizați un cadru PHP, Rasmus îi place codul Igniter cel mai bine, deoarece este "cel puțin ca un cadru"]
Jack Herrington nu este un străin pentru PHP și lumea dezvoltării. Pe lângă scrierea a peste 30 de articole pentru prestigiosul IBM developerWorks, Jack a publicat și cărți de programare precum PHP Hacks. Jack este un bona fide expert.
Herrington recomandă utilizarea procesării lot și cron pentru a aborda sarcinile care pot fi procesate în fundal. Utilizatorii de Web nu vor să aștepte mult timp pentru ca sarcinile să se finalizeze pe web. Există unele locuri de muncă care durează mai mult, care sunt mult mai potrivite pentru a fi făcut în fundal.
Desigur, în unele cazuri mici, este puțin mai ușor să declanșați un fir de ajutor pentru a vă ocupa de locurile de muncă mici. Dar este ușor de văzut că, prin utilizarea instrumentelor convenționale - cron, MySQL, PHP standardizate orientate pe obiecte și Pear :: DB - crearea de joburi batch în aplicațiile PHP este ușor de făcut, ușor de implementat și ușor de întreținut.
Jack crede în simplitate și, în loc să utilizeze filetarea pe servere, el folosește combinația simplă dintre cron, PHP și MySQL pentru a procesa sarcini în fundal.
Am facut amandoua si cred ca cron are avantajul principiului "Keep It Simple, Stupid" (KISS). Păstrează procesarea de fundal simplă. În loc să aveți o aplicație de procesare a mai multor sarcini care rulează pentru totdeauna și, astfel, nu poate pierde niciodată memoria, aveți un script batch simplu pe care cron-ul îl pornește. Scriptul determină dacă există ceva de făcut, face, apoi iese. Nu trebuie să vă faceți griji cu privire la scurgeri de memorie. Nu este nevoie să vă faceți griji că un fir se blochează sau se prinde într-o buclă infinită.
David Cummings își desfășoară propria companie de software specializată în sisteme de management al conținutului și a câștigat mai multe premii. Dacă cineva știe cum să dezvolte eficient o aplicație PHP, este Dave.
David a scris într-un articol SitePoint despre cele două sfaturi PHP pe care dorea să le fi învățat la început. Unul dintre sfaturi: Porniți imediat raportarea erorilor. Va economisi mult timp pe termen lung.
Cel mai important lucru pe care-l spun celor care folosesc PHP este de a transforma raportarea erorilor la nivelul lor maxim. De ce aș vrea să fac asta? În general, raportul de eroare este setat la un nivel care va ascunde multe lucruri mici precum:
- declarând o variabilă înainte de timp,
- cu referire la o variabilă care nu este disponibilă în acel segment de cod sau
- utilizând o definiție care nu este setată.
Acești factori s-ar putea să nu pară acea afacere mare - până când veți dezvolta programe structurate sau orientate pe obiecte cu funcții și clase. Prea des, scrierea codului fără raportarea erorilor ridicate ar costa ore, pe măsură ce ați scos funcții lungi care nu au funcționat deoarece o variabilă a fost gresită sau nu este accesibilă.
Raportarea erorilor poate face mult mai ușor să găsești motivul pentru o eroare. Un bug mic în cod poate fi identificat rapid dacă raportarea erorilor în PHP este activată. Economisiți-ți ceva timp și trăgând părul, permițând PHP să găsească bug-urile pentru tine.
Citiți postul anterior din această serie: 10 Principii ale Maestrilor CSS.
Glen Stansberry este un dezvoltator web și un blogger care sa luptat de mai multe ori decât ar dori să recunoască cu CSS. Puteți citi mai multe sfaturi despre dezvoltarea web la blogul său Web Jackalope.