De ce 2013 este Anul PHP

2012 a fost un an excelent pentru comunitatea PHP, datorită numeroaselor caracteristici necorespunzătoare adăugate la versiunea 5.4, precum și nenumărate proiecte, avansând PHP la nivelul următor.

În acest articol, aș dori să revizuiesc câteva dintre problemele pe care oamenii le-au avut cu PHP în trecut și să ofere o privire asupra motivului pentru care 2013 poate fi doar anul PHP!


De ce este ostilitatea?

Acest lucru poate veni ca o surpriză pentru dvs., dar mulți oameni au sentimente negative față de dezvoltatorii PHP, iar limba în ansamblu. Probabil știți exact ce vreau să spun, dacă ați luat în considerare învățarea Ruby în ultimii câțiva ani, datorită unui anumit sens al presiunii de la egal la egal.

Cu toate acestea, înainte de a face modificări, trebuie să vă întrebați: "De ce are PHP un astfel de stigmat?"

Ei bine, ca multe dintre întrebările importante ale vieții, nu există un răspuns clar. După ce facem un pic de căutare online, pentru unele argumente PHP, veți găsi că aproximativ optzeci la sută din argumentele împotriva PHP sunt înrădăcinate în ignoranță, într-o formă sau alta.

Aproximativ optzeci la sută din argumentele împotriva PHP sunt înrădăcinate în ignoranță.

Începătorii

Există începători, care nu știu cu adevărat cum funcționează PHP. Acest lucru are ca rezultat întrebări, cum ar fi "De ce nu puteți să ascultați evenimente cu butoane cu PHP?,"și întrebări similare despre AJAX.

O limbă care să le poată controla pe toți

Apoi, aveți cei care nu știu despre alt limbaj sau cadru decât cel pe care îl folosesc în prezent. Acestea sunt tipurile de oameni care fac argumente, cum ar fi "Rails este mult mai ușor decât PHP,"și lucruri de genul ăsta.

Combaterea PHP 4

Cea de-a treia formă de concepție greșită vine de la cei care nu au ținut pasul cu avansurile PHP de-a lungul anilor. În schimb, încă luptă cu limba, așa cum a existat acum câțiva ani. Acest lucru are ca rezultat declarații, cum ar fi:PHP nu este orientat obiect"sau"PHP e de rahat pentru ca nu suporta spatiile de nume."Ai idee.

scalarea

În cele din urmă, avem cei mai inteligenți dezvoltatori care cred că "PHP nu poate scala" sau "PHP nu are standarde", ceea ce este complet fals. Scalarea are mai puțin de-a face cu limba, și mai mult cu serverul și modul în care este structurată aplicația. În ceea ce privește standardele? Ei bine, este nevoie doar de o căutare rapidă pe Google pentru PHP-FIG.

Ce este PHP-FIG? "Ideea din spatele grupului este ca reprezentanții proiectului să discute despre comunitățile dintre proiectele noastre și să găsească modalități prin care să putem lucra împreună. Publicul nostru principal este celălalt, dar suntem foarte conștienți de faptul că restul comunității PHP urmărește. alți oameni vor să adopte ceea ce facem, sunt bineveniți să facă acest lucru, dar acesta nu este scopul ".

Este un adevăr nefericit că unele argumente care pătrund prin web sunt complet false sau actualizate.


PHP nu este perfect

Există totuși adevărul în toate criticile.

Există totuși adevărul în toate criticile. PHP nu este perfect. Când vine vorba de punerea în aplicare a funcțiilor și funcțiilor de bază, PHP este inconsecvent. Aceste argumente sunt în întregime valabile.

Aceste inconsecvențe nu sunt fără motiv. PHP a început ca pe ceea ce ne-am referi astăzi ca pe un limbaj templificator. De atunci, a trecut prin mai multe schimbări de paradigmă, transformându-se într-un limbaj funcțional, cum ar fi C, și apoi la limbajul OOP pe deplin pe care ne bucurăm astăzi. Pe parcurs, au apărut cele mai bune practici, iar diferite persoane au controlat ceea ce este adăugat. Acest lucru duce la o mulțime de "tipuri diferite" de cod într-o singură limbă. Acum puteți întreba:De ce nu doar să deprimați părțile rele?"

Răspunsul la această întrebare este același ca și motivul pentru care construim încă site-uri pentru versiunile vechi ale Internet Explorer. Nu mă înțelege greșit; Mi-ar plăcea doar să renunț, dar schimbări masive de genul asta nu pot fi făcute fără puțin timp. Sperăm că, în timp, PHP va avansa în continuare în OOP și va începe să-și transforme obiectele pentru a-și folosi funcțiile cu notația punctuală, mai degrabă decât cu adesea ciudat -> sintaxă. Deci, în loc de array_push ($ arr, "valoare");, ați scrie ceva, cum ar fi $ Arr.push ( "Value");.

Nu-ți face griji; lucruri de genul asta s-au întâmplat încet. Uita-te la noile caracteristici PHP 5.5. Vechiul add-on orientat spre funcții a fost depreciat, în favoarea noii abordări orientate spre obiect.


Prezentul

Acum, cu trecutul acoperit, să mergem până în prezent. Există o serie de proiecte și mișcări cu adevărat reci, dintre care unele împrumuta idei din alte limbi, pentru a propulsa PHP la nivelul următor.

Să luăm în considerare următoarele:

  • Compozitor
  • Laravel
  • Dezvoltare pe baza de test
  • PHP 5.4 / 5.5

Compozitor

Comunitatea PHP poate înceta să reinventeze din nou roata, mulțumită Compozitorului.

Inspirat de instrumente cum ar fi Bundler și NPM, comunitatea PHP poate înceta să reinventeze din nou roata, mulțumită Compozitorului. Node.js a fost prima limbă care ma făcut să mă simt confortabil cu utilizarea pachetelor. Dacă l-ai folosit mai devreme, atunci știi ce vreau să spun. Pachetele sunt instalate local în directorul proiectului dvs., este ușor de găsit documentația pentru majoritatea pluginurilor și este relativ simplu să trimiteți propriile pachete.

PARĂ?

PHP a oferit o alternativă de ani de zile, PEAR, dar nu a fost prea intuitivă sau ușor de folosit. S-a simțit voluminos pentru ceva care în cele din urmă a preluat fișiere cu text simplu. Mai mult, a instalat toate pachetele la nivel global. Acest lucru v-a forțat să informați pe utilizatori despre pachetele pe care le-ați utilizat când distribuiți codul sursă. Așa cum ați putea ghici, acest lucru a dus la versiuni înșelătoare și alte lucruri de acest gen.

Dacă doriți, puteți alege și alege componentele.

Compozitorul remediază toate acestea, datorită pachetelor stocate local și abilității de a crea fișiere de dependență per-proiect. Aceasta înseamnă că puteți distribui cu ușurință proiectul dvs. cu acest fișier de dependență, iar alții pot folosi propria lor copie a Compozitorului pentru a descărca automat toate dependențele specificate, în același timp păstrându-le actualizat.

În plus, Compozitorul este o aplicație ușoară - scrisă în PHP, ea însăși - și are o caracteristică autoloader. Aceasta funcționează în afara standardului PSR-0 (menționat mai sus), care vă va încărca automat dependența de dvs., astfel încât cererea dvs. să rămână cât mai curată posibil.

Toate aceste trăsături sunt o îmbunătățire clară, însă, fără adoptarea comunității, nu înseamnă nimic. Mă bucur să vă informez că a fost foarte bine acceptată. Proiecte mari, cum ar fi Symfony și Laravel, și-au încărcat deja componentele în biblioteca Compozitor, Packagist. Având cadrul divizat în componente înseamnă că vă puteți construi cu ușurință propriul cadru personalizat pentru a se potrivi dorințelor dvs. Cu alte cuvinte, nu există cadre mai umflate. Dacă doriți, puteți alege și alege componentele.

Aveți nevoie de un exemplu? Ați putea lua componenta bazei de date de la Laravel și o puteți asocia cu componenta templantă din cadrul Symfony. De fapt, cadrul Laravel, în sine, utilizează multe componente bine testate Symfony. De ce să reconstruiți roata, când vă puteți concentra eforturile în alte domenii?


Laravel

Chiar dacă aveți probleme cu unele neconcordanțe ale PHP, Laravel abstractează aproape toate acestea.

Acum, acest lucru nu ar fi un articol despre viitorul PHP fără a discuta Laravel într-un mod mai detaliat. Suntem deseori întrebați de ce Nettuts + pare să-l împingă pe Laravel la fel de mult ca și cum a fost. Aceasta este întrebarea greșită. În schimb, întrebați "De ce nu?"

Chiar dacă aveți probleme cu unele neconcordanțe ale PHP, Laravel abstractează aproape toate acestea, oferindu-vă senzația și eleganța unei limbi, cum ar fi Ruby, dar cu ușurința PHP.

Laravel vine cu Eloquent, un ORM care regândește complet totul cu bazele de date. Folosesc cea mai mare parte MySQL cu PHP; ceea ce obțineți înapoi din baza de date este un obiect de resurse, pe care apoi trebuie să-l executați prin intermediul unei funcții pentru capturarea rezultatelor. În Laravel, totul este returnat ca standard PHP; vi se dau obiecte pe care le puteți modifica și salva. Puteți face lucruri, cum ar fi combinarea rezultatelor din mai multe tabele pentru salvarea apelurilor bazei de date (denumită încărcare eageră) și râsul de simplu de a face lucruri, cum ar fi validarea și interogările personalizate. Ca bonus, dacă nu vă place SQL, toate acestea pot fi realizate cu un stil OOP, folosind metode simple și ușor de citit, cum ar fi găsi și șterge.

Am văzut doar vârful aisbergului cu ceea ce aduce Elloquent la masă, dar, deja, puteți vedea îmbunătățirile. Laravel aduce astfel de inovații aproape în toate domeniile PHP, inclusiv lucruri precum templating, routing, migrații, clase RESTful și multe altele. Cea mai bună parte, totuși, este că, cu fiecare lansare nouă, creatorul Laravel, Taylor Otwell, continuă să ridice bara.

Dacă doriți să aflați mai multe despre Laravel, vă recomandăm cursul Tuts + Premium, Laravel Essentials, predat de propriul nostru Jeffrey Way. Nu spun asta ca parte a personalului Nettuts +, ci ca o persoană care a urmărit seria. Pot spune sincer că nu aveam nici o cunoștință despre faptul că Laravel intră și că Jeffrey a făcut o treabă excelentă de a acoperi cât mai mult posibil.

În cele din urmă, nu este vorba de cadrul, ci de sprijinul comunității. Atâta timp cât există suport pentru un proiect, acesta va fi actualizat și va rămâne relevant. Dacă vă faceți griji cu privire la cât timp va rămâne populară, atunci, pur și simplu folosind-o activ, vă asigurați cotele!


PHP 5.4 / 5.5

Următorul lucru pe care aș vrea să-l discutăm este actualizarea PHP care a fost lansată în 2012. Odată cu lansarea versiunii 5.4, a apărut o mulțime de caracteristici noi. Pentru o prezentare completă a actualizărilor, puteți să consultați aceste două articole aici pe Nettuts +: articolul 5.4, articolul 5.5.

Dar, pentru o recapitulare rapidă a preferințelor mele:

trasaturi

  • Trăsăturile adaugă capacitatea de a crea clasa "partiale", care vă permite să creați obiecte coerente fără a re-scrie totul și peste tot.

generatoare

  • Generatorii vă permit să faceți niște lucruri minunate cu liste de date, precum și să vă permiteți să beneficiați de toate caracteristicile care vin cu leneș-evaluare.

CLI Web Server

  • O altă adăugare extraordinară este construit în serverul web, care vă permite să vă testați aplicațiile cu diferite versiuni de PHP, fără a fi nevoie de ceva ca Apache.

dereferencing

  • Dereferencingul nu este o adăugare majoră, dar este frumos să fii capabil să referi elementele copilului fără a folosi funcții. Aceasta include lucruri cum ar fi accesarea caracterelor individuale ale unei constante, folosind doar notația de pătrați pătrați.

API-ul pentru noua parolă Hashing

  • Cu noul API, vi se oferă posibilitatea de a cripta șiruri de caractere, precum și de a verifica și consolida parolele - toate fără nici o cunoaștere a lui bcrypt sau a altui algoritm de hashing.

Acestea reprezintă doar câteva dintre noile îmbunătățiri și este o listă întreagă de lucruri discutate în prezent pentru versiunea următoare, programată a fi lansată în cursul acestui an.


Dezvoltare pe baza de test

În cele din urmă, hai să vorbim puțin despre testarea codului. Desigur, un pic cam târziu la joc, în 2012, comunitatea noastră a văzut adoptarea pe scară largă a metodologiei de dezvoltare bazată pe test. Aș putea să fac un procentaj de creștere, dar simt că o mai bună indicație a adevărului este să te uiți pur și simplu pe diferite site-uri dev și forumuri. Veți vedea cu siguranță un vârf! Când vine vorba de testare în PHP, PHPUnit este standardul bine acceptat.

De ce este important?

Gândiți-vă la proiectul dvs. înainte de a vă scufunda, ca un cowboy.

De multe ori, ați încercat să scrieți un cod, dar veți pierde ceva în traducere. Ceea ce vreau să spun este că planificați un singur lucru, dar atunci când îl implementați, pierdeți puțină integritate sau funcționalitate. O altă problemă obișnuită apare atunci când scrieți cod pentru proiecte mari: ajungeți la mai multe clase și fișiere, fiecare având propriile dependențe. Ceea ce rămâne cu dvs. este o "evoluție interdependată" a funcționalității, care poate fi dificil de urmărit și menținut. Ca un joc de Jenga, prin actualizarea unei piese, puteți rupe un altul, îngrădind cererea dumneavoastră. Acestea sunt doar două probleme de exemplu, dar cu siguranță există altele.

Cum ajuta TDD?

Ei bine, scrieți teste clare înainte de a scrie orice cod de producție. Aceasta înseamnă că, atunci când ajungeți la scrierea codului dvs. real, acesta este forțat să se conformeze planului inițial. Nu numai asta, dar, în jos, toate dependențele vor fi urmărite în testele tale. Dacă actualizați un pic de cod și rupeți din greșeală unul dintre teste, veți fi imediat informat.

Da, stabilirea acestor teste necesită un pas suplimentar, dar gândiți-vă înainte de a vorbi. Are cineva beneficiile aia? Desigur că nu. Același lucru este valabil și pentru teste: gândiți-vă la proiectul dvs. înainte de a vă scufunda, ca un cowboy.

Învățarea suplimentară
  • Testat PHP (Premium)
  • TDD în PHP

Concluzie

Este un moment interesant de a fi un dezvoltator PHP. Multe dintre problemele inerente au sau sunt rezolvate. În ceea ce privește celelalte aspecte, vom fi ușor de remediat cu un cadru bun și o testare.

Deci ce crezi? Te îmbraci? Nu sunt de acord cu mine? Dacă da, să continuăm discuția de mai jos!

Cod