Varför 2013 är PHP-året

2012 var ett utmärkt år för PHP-samhället, tack vare många dåligt tillförda funktioner som läggs till version 5.4, liksom de otaliga projekten, förflyttar PHP till nästa nivå.

I den här artikeln skulle jag vilja granska en handfull av de problem som människor hade med PHP tidigare och ge en glimt på varför 2013 kan bara vara året för PHP!


Varför fientligheten?

Detta kan komma som en överraskning för dig, men många människor har negativa känslor mot PHP-utvecklare och språket som helhet. Du vet noga exakt vad jag menar, om du har funderat på att lära Ruby under de senaste åren, på grund av någon känsla av peer pressure.

Men innan du gör några ändringar måste du fråga dig själv: "Varför har PHP ett sådant stigma?"

Tja, som många av livets viktiga frågor, finns det inget tydligt svar. Efter att ha gjort lite av att söka på nätet, för vissa PHP-argument, kommer du att finna att ungefär 80 procent av argumenten mot PHP är rotade i okunnighet, i en eller annan form.

Omkring åttio procent av argumenten mot PHP är förankrade i okunnighet.

Nybörjare

Det finns nybörjare, som inte vet riktigt hur PHP fungerar. Detta leder till frågor, som "Varför kan du inte lyssna på knapphändelser med PHP?,"och liknande frågor om AJAX.

Ett språk för att regera dem alla

Därefter har du folk som inte känner till annat språk eller ram än den som de använder för närvarande. Det här är de typer som gör argument, till exempel "Rails är mycket enklare än PHP," och sådana saker.

Bekämpa PHP 4

Den tredje typen av missuppfattning kommer från de personer som inte har hållit fast på PHP: s framsteg under åren. Istället kämpar de fortfarande med språket, som det fanns för många år sedan. Detta resulterar i uttalanden, som: "PHP är inte objektorienterat"eller"PHP suger eftersom det inte stöder namespacing."Du får idén.

skalning

Slutligen har vi de mer intelligenta utvecklarna som tror att "PHP kan inte skala" eller "PHP har inga standarder", vilket är helt felaktigt. Skalning har mindre att göra med språket, och mer med servern och hur din app är strukturerad. Vad gäller standarder? Jo, det tar bara en snabb Google-sökning efter PHP-FIG.

Vad är PHP-FIG? "Tanken bakom gruppen är att projektrepresentanter ska prata om gemensamma förhållanden mellan våra projekt och hitta sätt att vi kan arbeta tillsammans. Vår huvudsakliga publik är varandra, men vi är mycket medvetna om att resten av PHP-gemenskapen tittar på. andra människor vill anta vad vi gör, de är välkomna att göra det, men det är inte målet. "

Det är en olycklig sanning att vissa argument, som tränger igenom webben, antingen är helt falska eller uppdaterade.


PHP är inte perfekt

Det finns dock sanning i varje kritik.

Det finns dock sanning i varje kritik. PHP är inte perfekt. När det gäller implementeringen av kärnfunktioner och funktioner är PHP inkonsekvent. Dessa argument är helt giltiga.

Dessa inkonsekvenser är dock inte utan anledning. PHP började som vad vi skulle referera till idag som ett templerande språk. Sedan dess har det gått igenom flera paradigmskift, omvandling till ett funktionellt språk, som C, och sedan till det fullständiga OOP-språket som vi tycker om idag. Längs vägen har bästa praxis uppstått, och olika personer har kontrollerat vad som läggs till. Detta resulterar i många "olika" typer av kod på ett språk. Nu kanske du frågar, "Varför inte bara deprecera de dåliga delarna?"

Svaret på den här frågan är detsamma som varför vi fortfarande bygger webbplatser för gamla versioner av Internet Explorer. Förse mig inte fel Jag skulle gärna bara släppa det, men massiva förändringar som detta kan inte göras utan lite tid. Förhoppningsvis, med tiden kommer PHP att avancera vidare till OOP, och börja konvertera dess objekt till att använda sina funktioner med punktnotationen, i stället för det uppenbart obekväma -> syntax. Så, istället för array_push ($ arr, "Value");, du skulle skriva något, som $ Arr.push ( "Value");.

Oroa dig inte; saker som detta har hänt långsamt. Titta bara på de nya PHP 5.5-funktionerna. Den gamla funktionsorienterade MySQL-tillägget har avlägsnats, till förmån för den nyare objektorienterade metoden.


Nutiden

Nu med förflutet täckt, låt oss flytta fram till idag. Det finns en handfull riktigt coola projekt och rörelser, av vilka några låna idéer från andra språk för att driva PHP till nästa nivå.

Låt oss överväga följande:

  • Kompositör
  • laravel
  • Testdriven utveckling
  • PHP 5,4 / 5,5

Kompositör

PHP-community kan nu sluta återuppfinna hjulet om och om igen, tack vare kompositören.

Inspirerat av verktyg, som Bundler och NPM, kan PHP-gemenskapen nu sluta återuppfinna hjulet om och om igen, tack vare kompositören. Node.js var det första språket som gjorde mig bekväm med att använda paket. Om du har använt det förut vet du vad jag menar. Paket installeras lokalt i projektets katalog, det är lätt att hitta dokumentation för de flesta pluginprogrammen, och det är relativt enkelt att skicka in egna paket.

PÄRON?

PHP erbjöd ett alternativ i flera år, PEAR, men det var inte alltför intuitivt eller lätt att använda. Det kände sig skrymmande för något som i slutändan hämtade vanliga textfiler. Dessutom installerade den alla paket globalt. Detta tvingade dig att informera personer vilka paket du använde när du distribuerade källkoden. Som du kanske gissade resulterade det i felaktiga versioner och andra saker av den typen.

Om du så önskar kan du välja och välja dina komponenter.

Kompositören fixar allt detta tack vare lokalt lagrade paket och möjligheten att skapa beredningsfiler per projekt. Det innebär att du enkelt kan distribuera ditt projekt med denna beroendefil, och andra kan använda sin egen kopia av Composer för att automatiskt ladda ner alla angivna beroenden samtidigt som de uppdateras.

Dessutom är Composer en lätt applikation - skrivet i PHP, självt - och levereras med en autoloader-funktion. Detta fungerar av PSR-0-standarden (som nämnts ovan), som automatiskt laddar dina beroendeförhållanden när du behöver dem, så din ansökan är så ren som möjligt.

Alla dessa funktioner är en bestämd förbättring, men utan att gemenskapen antas betyder det ingenting. Jag är glad att informera dig om att det har blivit mycket väl accepterat. Stora projekt, som Symfony och Laravel, har redan laddat upp sina komponenter till kompositörsbiblioteket Packagist. Att ha ramverket uppdelat i komponenter innebär att du enkelt kan bygga din egen anpassade ram för att matcha din smak. Med andra ord, inga mer uppblåsta ramar. Om du så önskar kan du välja och välja dina komponenter.

Behöver du ett exempel? Du kan ta databaskomponenten från Laravel och koppla den med templerande komponenten från Symfony-ramen. Faktum är att Laravel-ramen i sig utnyttjar många välprövade Symfony-komponenter. Varför bygga om hjulet, när du istället kan fokusera dina ansträngningar på andra områden?


laravel

Även om du har problem med några av PHP: s inkonsekvenser, samlar Laravel nästan allt av det.

Nu skulle det inte vara en artikel om PHPs framtid utan att diskutera Laravel i lite mer detalj. Vi är ofta frågade varför Nettuts + verkar trycka Laravel så mycket som det har varit. Detta är fel fråga. I stället fråga "Varför inte?"

Även om du har problem med några av PHP: s inkonsekvenser, samlar Laravel nästan allt av det, vilket ger dig känslan och elegansen i ett språk, som Ruby, men med enkel PHP.

Laravel kommer med Eloquent, en ORM som helt och hållet omprövar allt som ska göras med databaser. Jag använder mest MySQL med PHP; vad du kommer tillbaka från databasen är ett resursobjekt, som du sedan måste springa igenom en funktion för att fånga resultaten. I Laravel returneras allt som standard PHP; Du får föremål, som du kan ändra och spara. Du kan göra saker, som att kombinera resultat från flera tabeller för att spara på databas samtal (kallad ivrig lastning) och skrattsamt enkelt att göra saker, till exempel validering och anpassade frågor. Som en bonus, om du inte gillar SQL, kan allt detta göras med en OOP-stil, med enkla och läsbara metoder, till exempel hitta och radera.

Vi har bara sett toppen av isberget med vad Eloquent tar till bordet, men redan kan du se förbättringarna. Laravel ger denna typ av innovation till nästan alla områden i PHP, inklusive saker som templering, routing, migreringar, RESTful klasser och mycket mer. Den bästa delen är dock att med varje ny release fortsätter Laravels skapare, Taylor Otwell, att höja ribban.

Om du vill lära dig mer om Laravel rekommenderar jag Tuts + Premium kursen, Laravel Essentials, undervisad av vår egen Jeffrey Way. Jag säger inte detta som en del av Netuts + -personalen, men som en person som tittade på serien. Jag kan ärligt säga att jag hade ingen kunskap om Laravel att gå in och Jeffrey gjorde ett utmärkt jobb att täcka så mycket som möjligt.

I slutändan handlar det inte egentligen om ramverket, men samhällsstödet. Så länge det finns stöd för ett projekt, kommer det att uppdateras och kommer att förbli relevant. Om du oroar dig för hur länge den kommer att vara populär, så, genom att aktivt använda den, säkrar du dina odds!


PHP 5,4 / 5,5

Nästa sak som jag skulle vilja diskutera är uppdateringarna till PHP som släpptes under 2012. Med release version 5.4 kom ett flertal fantastiska nya funktioner. För en fullständig översikt över uppdateringarna kan du titta på dessa två artiklar här på Webuts +: 5.4 artikel, 5,5 artikel.

Men för en snabb sammanfattning av mina favoriter:

egenskaper

  • Egenskaper lägger till förmågan att skapa klass "partials", som låter dig skapa konsekventa objekt utan att skriva om allt om och om igen.

generatorer

  • Generatorer gör att du kan göra några häftiga saker med listor med data, så att du kan dra nytta av alla funktioner som kommer med lat utvärdering.

CLI webbserver

  • Ett annat bra tillägg är den inbyggda webbservern som låter dig testa dina program med olika versioner av PHP utan att behöva något som Apache.

dereferencing

  • Dereferencing är inte ett viktigt tillägg, men det är trevligt att kunna hänvisa till barnelement utan att använda funktioner. Detta inkluderar saker som att få tillgång till enskilda tecken i en konstant genom att använda endast kvadratkonsolnotation.

Det nya lösenordet Hashing API

  • Med det nya API får du möjlighet att både kryptera strängar, samt verifiera och stärka lösenord - allt utan kännedom om bcrypt eller någon annan hashing-algoritm.

Dessa representerar bara några av de nya förbättringarna, och deras är en hel lista med saker som för närvarande diskuteras för nästa version, planerad att släppas senare i år.


Testdriven utveckling

Slutligen, låt oss prata lite om att testa din kod. Medan visserligen lite sent till spelet, såg vårt samhälle i 2012 en utbredd adoption av den testdrivna utvecklingsmetoden. Jag kunde utgöra en tillväxtprocent, men jag anser att en bättre indikation på sanningen är att bara titta på olika dev-webbplatser och forum. Du kommer säkert se en spik! När det gäller testning i PHP är PHPUnit den väl accepterade standarden.

Varför är det viktigt?

Tänk på ditt projekt innan du dyker in, som en cowboy.

Många gånger bestämde du dig för att skriva en kod, men du förlorar något i översättningen. Vad jag menar med detta är att du planerar på en sak, men när du genomför det, förlorar du lite av integriteten eller funktionaliteten. Ett annat vanligt problem uppstår när du skriver kod för stora projekt: du hamnar ihop med flera klasser och filer som alla har sina egna dependancies. Vad du kvar med är en "sammanflätad evolution" av funktionalitet som kan vara svårt att hålla reda på och underhålla. Som ett spel Jenga, genom att uppdatera ett stycke, kan du bryta en annan och förlora din ansökan. Det här är bara två exempel problem, men det finns säkert andra.

Hur hjälper TDD?

Tja, du skriver klara tester innan du skriver någon produktionskod. Det betyder att när du kommer att skriva din faktiska kod måste den överensstämma med din ursprungliga plan. Det här är inte bara det här, men nedan linjen kommer alla beroenden att spåras i dina test. Om du uppdaterar lite kod och oavsiktligt bryter en av testen kommer du omedelbart att bli underrättad.

Ja, om du ställer in dessa test krävs ett extra steg, men det tänker du innan du pratar. Har någon fördelarna med det? Självklart inte. Detsamma gäller för tester: Tänk på ditt projekt innan du dyker in, som en cowboy.

Ytterligare lärande
  • Testdriven PHP (Premium)
  • TDD i PHP

Slutsats

Det är en spännande tid att vara en PHP-utvecklare. Många av de inneboende problemen har eller är korrigerade. Som för de andra frågorna, kommer vi lätt att avhjälpa dem med bra ramar och test.

Så vad tycker du? Kommer du ombord? Okej med mig? Om så är fallet, låt oss fortsätta diskussionen nedan!