Perché il 2013 è l'anno di PHP

Il 2012 è stato un anno eccellente per la comunità PHP, grazie alle numerose funzionalità necessarie alla versione 5.4 e agli innumerevoli progetti, portando il PHP al livello successivo.

In questo articolo, vorrei esaminare una serie di problemi che le persone hanno avuto con PHP in passato e dare un'occhiata al motivo per cui il 2013 potrebbe essere l'anno di PHP!


Perché l'ostilità?

Questo potrebbe sorprendervi, ma molte persone hanno sentimenti negativi nei confronti degli sviluppatori PHP e della lingua nel suo complesso. Probabilmente sai esattamente cosa intendo, se hai considerato l'opportunità di imparare Ruby negli ultimi due anni, a causa di un certo senso di pressione dei pari.

Tuttavia, prima di apportare modifiche, è necessario chiedersi: "Perché PHP ha un tale stigma?"

Bene, come molte delle domande importanti della vita, non esiste una risposta chiara. Dopo aver fatto un po 'di ricerche online, per alcuni argomenti PHP, scoprirai che circa l'ottanta percento degli argomenti contro PHP sono radicati nell'ignoranza, in una forma o nell'altra.

Circa l'80% degli argomenti contro PHP sono radicati nell'ignoranza.

I principianti

Ci sono i principianti, che non sanno come funziona PHP. Questo si traduce in domande, come "Perché non puoi ascoltare gli eventi dei pulsanti con PHP?,"e domande simili su AJAX.

Una lingua per domarli tutti

Successivamente, hai le persone che non conoscono altro linguaggio o framework rispetto a quello che usano attualmente. Questi sono i tipi di persone che fanno argomenti, come "Rails è molto più facile di PHP," e cose così.

Combattere PHP 4

La terza forma di equivoco viene dalle persone che non hanno tenuto il passo con i progressi di PHP nel corso degli anni. Invece, stanno ancora combattendo la lingua, come esisteva anni e anni fa. Ciò si traduce in affermazioni come: "PHP non è orientato agli oggetti" o "PHP fa schifo perché non supporta il namespacing."Hai capito l'idea.

scalata

Infine, abbiamo gli sviluppatori più intelligenti che credono che "PHP non può scalare" o "PHP non ha standard", che è completamente falso. Lo scaling ha meno a che fare con la lingua e più con il server e il modo in cui è strutturata la tua app. Per quanto riguarda gli standard? Beh, basta una rapida ricerca su Google per PHP-FIG.

Qual è il PHP-FIG? "L'idea alla base del gruppo è che i rappresentanti del progetto parlino dei punti in comune tra i nostri progetti e trovino i modi in cui possiamo lavorare insieme. Il nostro pubblico principale è l'un l'altro, ma siamo molto consapevoli che il resto della comunità di PHP sta guardando. altre persone vogliono adottare quello che stiamo facendo, sono invitati a farlo, ma questo non è lo scopo ".

È una sfortunata verità che alcuni argomenti, che permeano il web siano completamente falsi o aggiornati.


PHP non è perfetto

C'è comunque verità in ogni critica.

C'è comunque verità in ogni critica. PHP non è perfetto. Quando si tratta della sua implementazione di funzionalità e funzioni di base, PHP è incoerente. Questi argomenti sono interamente validi.

Queste incoerenze non sono senza ragione, però. PHP è iniziato come quello che oggi chiameremmo un linguaggio di template. Da allora, ha attraversato molteplici cambiamenti di paradigma, trasformandosi in un linguaggio funzionale, come C, e quindi nel linguaggio OOP completo di cui godiamo oggi. Lungo la strada sono emerse le migliori pratiche e diverse persone hanno avuto il controllo di ciò che viene aggiunto. Ciò si traduce in un sacco di "diversi" tipi di codice in una sola lingua. Ora potresti chiedere "Perché non solo deprecare le parti cattive?"

La risposta a questa domanda è la stessa del perché stiamo ancora costruendo siti per vecchie versioni di Internet Explorer. Non fraintendermi; Mi piacerebbe semplicemente abbandonarlo, ma modifiche massicce come questa non possono essere fatte senza un po 'di tempo. Si spera che, con il passare del tempo, PHP avanzerà ulteriormente in OOP e inizierà a convertire i suoi oggetti per utilizzare le loro funzioni con la notazione dot, piuttosto che l'imbarazzante scomodo -> sintassi. Quindi, invece di array_push ($ arr, "Valore");, scriverebbe qualcosa, come $ Arr.push ( "Value");.

Non preoccuparti; cose come questa stanno accadendo lentamente. Guarda le nuove funzionalità di PHP 5.5. Il vecchio add-on MySQL orientato alla funzione è stato deprecato, a favore del nuovo approccio orientato agli oggetti.


Il presente

Ora, con il passato coperto, passiamo al presente. Ci sono una manciata di progetti e movimenti davvero interessanti, alcuni dei quali prendono in prestito idee da altre lingue, al fine di spingere PHP al livello successivo.

Consideriamo quanto segue:

  • Compositore
  • laravel
  • Test Driven Development
  • PHP 5.4 / 5.5

Compositore

La comunità PHP può ora smettere di reinventare la ruota più e più volte, grazie a Composer.

Ispirato da strumenti come Bundler e NPM, la comunità PHP può ora smettere di reinventare la ruota più e più volte, grazie a Composer. Node.js è stata la prima lingua che mi ha fatto sentire a mio agio con l'utilizzo dei pacchetti. Se l'hai già usato prima, allora sai cosa intendo. I pacchetti sono installati localmente nella directory del tuo progetto, è facile trovare la documentazione per la maggior parte dei plugin, ed è relativamente semplice inviare i tuoi pacchetti.

PERA?

PHP ha offerto un'alternativa per anni, PEAR, ma non era eccessivamente intuitivo o facile da usare. Sembrava voluminoso per qualcosa che alla fine recuperava file di testo semplice. Inoltre, ha installato tutti i pacchetti a livello globale. Questo ti ha costretto a informare le persone dei pacchetti che hai usato quando hai distribuito il tuo codice sorgente. Come puoi immaginare, questo ha portato a versioni errate e altre cose di questa natura.

Se lo desideri, puoi scegliere i tuoi componenti.

Compositore risolve tutto questo, grazie ai pacchetti memorizzati localmente e alla possibilità di creare file di dipendenza per progetto. Questo significa che puoi facilmente distribuire il tuo progetto con questo file di dipendenza, e altri possono usare la propria copia di Composer per scaricare automaticamente tutte le dipendenze specificate, mentre allo stesso tempo tenerle aggiornate.

Inoltre, Composer è un'applicazione leggera, scritta in PHP, stessa e dotata di una funzione di caricamento automatico. Funziona allo standard PSR-0 (sopra menzionato), che caricherà automaticamente le dipendenze nel modo in cui ne hai bisogno, in modo che l'applicazione rimanga il più pulita possibile.

Tutte queste caratteristiche sono un netto miglioramento, tuttavia, senza l'adozione da parte della comunità, non significa nulla. Sono felice di informarti che è stato accettato molto bene. Grandi progetti, come Symfony e Laravel, hanno già caricato i loro componenti nella libreria Composer, Packagist. Avere il framework diviso in componenti significa che puoi facilmente creare il tuo framework personalizzato in base alle tue preferenze. In altre parole, niente più quadri gonfiati. Se lo desideri, puoi scegliere i tuoi componenti.

Hai bisogno di un esempio? Puoi prendere il componente del database da Laravel e associarlo al componente di template dal framework Symfony. In effetti, lo stesso framework Laravel sfrutta molti componenti Symfony ben collaudati. Perché ricostruire la ruota, quando invece puoi concentrare i tuoi sforzi su altre aree?


laravel

Anche se si riscontrano problemi con alcune incongruenze di PHP, Laravel ne abbozza quasi tutto.

Ora questo non sarebbe un articolo sul futuro di PHP senza discutere in dettaglio di Laravel. Spesso ci viene chiesto perché Nettuts + sembra spingere Laravel tanto quanto è stato. Questa è la domanda sbagliata. Invece, chiedi "Perchè no?"

Anche se hai problemi con alcune delle incoerenze di PHP, Laravel ne riassume quasi tutto, fornendoti la sensazione e l'eleganza di un linguaggio, come Ruby, ma con la facilità di PHP.

Laravel viene fornito con Eloquent, un ORM che ripensa completamente tutto ciò che riguarda i database. Io per lo più uso MySQL con PHP; ciò che si ottiene dal database è un oggetto risorsa, quindi è necessario eseguire una funzione per acquisire i risultati. In Laravel, tutto viene restituito come standard PHP; ti vengono dati oggetti, che puoi modificare e salvare. Puoi fare cose, come combinare i risultati di più tabelle per risparmiare sulle chiamate al database (indicato come caricamento avido), e ridicolmente semplici da fare, come la validazione e le query personalizzate. Come bonus, se non ti piace SQL, beh tutto questo può essere fatto con uno stile OOP, usando metodi semplici e leggibili, come trova e Elimina.

Abbiamo visto solo la punta dell'iceberg con quello che Eloquent porta in tavola, ma, già, puoi vedere i miglioramenti. Laravel porta questo tipo di innovazione in quasi tutti i campi del PHP, inclusi argomenti come templating, routing, migrazioni, classi RESTful e altro ancora. La parte migliore, tuttavia, è che, con ogni nuova versione, il creatore di Laravel, Taylor Otwell, continua ad alzare il livello.

Se vuoi saperne di più su Laravel, ti consiglio il corso Tuts + Premium, Laravel Essentials, insegnato dal nostro stesso Jeffrey Way. Non lo dico come parte dello staff di Nettuts +, ma come una persona che ha guardato la serie. Posso dire onestamente che non avevo nessuna conoscenza di Laravel, e Jeffrey ha fatto un ottimo lavoro coprendo il più possibile.

In fin dei conti non si tratta del framework, ma del supporto della comunità. Finché c'è un supporto per un progetto, esso sarà aggiornato e rimarrà pertinente. Se sei preoccupato di quanto a lungo rimarrà popolare, allora, semplicemente usando attivamente, stai proteggendo le tue probabilità!


PHP 5.4 / 5.5

La prossima cosa che vorrei discutere sono gli aggiornamenti di PHP rilasciati nel 2012. Con il rilascio della versione 5.4 sono arrivate moltissime nuove eccellenti funzionalità. Per una panoramica completa degli aggiornamenti, puoi dare un'occhiata a questi due articoli qui su Nettuts +: articolo 5.4, articolo 5.5.

Ma, per un breve riepilogo dei miei preferiti:

Tratti

  • I tratti aggiungono la capacità di creare classi "parziali", che consente di creare oggetti coerenti senza dover riscrivere tutto ripetutamente.

generatori

  • I generatori ti permettono di fare cose interessanti con elenchi di dati, oltre a permetterti di beneficiare di tutte le funzionalità offerte dalla valutazione lazy.

Server Web CLI

  • Un'altra grande aggiunta è il web server integrato, che ti permette di testare le tue applicazioni con diverse versioni di PHP, senza la necessità di qualcosa come Apache.

dereferenziazione

  • La dereferenziazione non è un'aggiunta importante, ma è bello poter fare riferimento a elementi figli senza l'uso di funzioni. Ciò include cose come l'accesso ai singoli caratteri di una costante usando solo la notazione a parentesi quadre.

L'API di hashing della nuova password

  • Con la nuova API, ti viene data la possibilità di crittografare entrambe le stringhe, nonché di verificare e rafforzare le password, il tutto senza alcuna conoscenza di bcrypt o di qualsiasi altro algoritmo di hashing.

Questi rappresentano solo alcuni dei nuovi miglioramenti, e il loro è un intero elenco di cose che sono attualmente in discussione per la prossima versione, la cui pubblicazione è prevista entro la fine dell'anno.


Test Driven Development

Infine, parliamo un po 'di testare il tuo codice. Anche se un po 'tardi per il gioco, nel 2012, la nostra comunità ha visto l'adozione diffusa della metodologia di sviluppo basata sui test. Potrei costituire una percentuale di crescita, ma ritengo che una migliore indicazione della verità sia semplicemente guardarsi intorno su diversi siti e forum di sviluppo. Vedrai sicuramente un picco! Quando si tratta di test in PHP, PHPUnit è lo standard ben accettato.

Perché è importante?

Pensa al tuo progetto prima di immergerti, come un cowboy.

Molte volte, si è deciso di scrivere del codice, ma si perde qualcosa nella traduzione. Ciò che intendo è che pianifichi una cosa, ma quando la implementa perdi un po 'di integrità o funzionalità. Un altro problema comune sorge quando si scrive codice per progetti di grandi dimensioni: si finisce con più classi e file che hanno ciascuno le proprie dipendenze. Ciò che rimane è una "evoluzione intrecciata" di funzionalità che può rivelarsi difficile da seguire e mantenere. Come un gioco di Jenga, aggiornando un pezzo, puoi romperne un altro, paralizzando la tua applicazione. Questi sono solo due problemi di esempio, ma ce ne sono sicuramente altri.

Come aiuta TDD?

Bene, si scrivono test chiari prima di scrivere qualsiasi codice di produzione. Ciò significa che quando si arriva a scrivere il codice effettivo, è costretto a conformarsi al piano originale. Non solo questo, ma, in fondo alla linea, le dipendenze verranno tracciate nei test. Se aggiorni un po 'di codice e interrompi inavvertitamente uno dei test, riceverai immediatamente una notifica.

Sì, la creazione di questi test richiede un passo in più, ma lo è anche prima di parlare. Qualcuno ne ha i benefici? Ovviamente no. Lo stesso vale per i test: pensa al tuo progetto prima di immergerti, come un cowboy.

Apprendimento aggiuntivo
  • Test-Driven PHP (Premium)
  • TDD in PHP

Conclusione

È un momento emozionante per essere uno sviluppatore PHP. Molti dei problemi inerenti sono stati o sono stati risolti. Per quanto riguarda gli altri problemi, a quelli ci si può facilmente porre rimedio con un buon framework e test.

Allora, cosa ne pensi? Stai salendo a bordo? Non sono d'accordo con me? Se è così, continuiamo la discussione qui sotto!