La continua evoluzione di PHP

Emanuele Floreani, backend developer in Webformat, in questa breve intervista ci racconta come il linguaggio PHP si è adattato ed evoluto nel tempo per ottimizzare le prestazioni, strutturare lo sviluppo e allo stesso tempo renderlo più rapido.

PHP nasce nel 1995 con l'intento di rendere il web, al tempo molto statico, più dinamico e interattivo. Il suo grande punto di forza iniziale è stato quello relativo all'integrazione rapida ed efficace con il codice HTML.
La facilità di integrazione e la mancanza di alternative così immediate per il web, oltre ad una sintassi molto simile al linguaggio C, ha fatto in modo che l’interesse verso PHP fosse sin da subito alto ed andasse nel tempo aumentando, portando ad un impiego massivo del linguaggio.

Infatti, sebbene oggi il PHP sia in fase di declino di utilizzo, rappresenta comunque la base del 78,7% dei siti web con linguaggio server side conosciuto.

L’elemento un po’ più preoccupante sulle percentuali di impiego è che il 30,5% utilizzi la versione 5 di PHP e non sia passato alla 7 (o alla 8). Anche per quanto riguarda la 7, c’è una buona percentuale che non è ancora alla 7.4 (l’attuale in stato di supporto attivo) o alla 7.3 (l’attuale in stato di supporto di sicurezza).
Questa anomalia potrebbe essere spiegata dal fatto che, essendo dedicato a qualsiasi tipo di dimensione di progetto, probabilmente la fetta più ampia delle versioni PHP 5 è rappresentata da piccoli siti web o progetti di dimensioni ridotte che non hanno particolari necessità di migliorare le prestazioni o di prestare particolare attenzione al lato sicurezza, oppure corrispondono a piattaforme non più mantenute.

Ciò non vuol dire che non ci siano progetti di grandi dimensioni ad utilizzarlo (basti pensare a Facebook o Wikipedia), ma solo che una così larga diffusione tende a sfalsare le reali percentuali di versione relative ai progetti attivi.
Le prime versioni di PHP non erano molto performanti, ma anche il mondo del web era in crescita e continua evoluzione ed il linguaggio PHP ha saputo seguirlo, adattarsi ed evolversi. Essendo un linguaggio interpretato, il suo principale punto debole è sempre stato l’utilizzo di risorse e la relativa lentezza per l’esecuzione del codice.
Dalla versione 5.5, però, con l’introduzione dell’OPcache il codice precompilato viene salvato in bytecode nella memoria condivisa dopo il primo utilizzo e le esecuzioni successive beneficeranno notevolmente di questo meccanismo che lo porta ad avvicinarsi alle tempistiche dei linguaggi che utilizzano il codice compilato.
Nella major version 7 e nelle minor successive sono state introdotte altre migliorie che aumentano ulteriormente le performance.

Non ha molto senso fare un confronto con il PHP prima dell’introduzione dell’OPcache, mentre dai test effettuati sui più comuni framework nel solo passaggio dalla versione 5.6 alla 7 si è notato di media un miglioramento dal 50% fino ad un raddoppio delle prestazioni.

Quello che permette a PHP di avere una percentuale così alta di utilizzo sono sicuramente le piattaforme più comuni di content management (Wordpress, Drupal, Joomla) e di e-commerce (Magento, Prestashop), ma soprattutto la presenza di framework solidi e rodati che sono per l’appunto la base delle piattaforme più conosciute.

I framework come Zend (ora Laminas), Symfony o Laravel offrono molte agevolazioni per lo sviluppo:

  • integrazione tramite ORM con la maggior parte delle basi di dati per velocizzarne ed ottimizzarne l’interazione
  • implementazione del paradigma MVC e modularità per uno sviluppo lineare, manutenibile e condivisibile;
  • presenza di componenti “standard” come autenticazione, gestione delle sessioni, caching e anche meccanismi di gestione dei task e dei cron che velocizzano lo sviluppo;
  • moltissimi componenti aggiuntivi sviluppati anche da terzi che coprono le funzionalità più generiche con la possibilità poi di personalizzarli (o estenderli) per raggiungere più facilmente le caratteristiche desiderate


La lista è veramente lunga e si possono trovare lati positivi in qualsiasi aspetto.
Anche se ci sono inevitabilmente dei punti negativi - come l’esecuzione più lenta e dipendenze non sempre aggiornate - i pro superano di gran lunga i contro ed uniti all’utilizzo di un buon IDE (PHPStorm come prima scelta) consentono di velocizzare la scrittura e soprattutto di ottimizzare e rendere più pulito il codice.

L’utilizzo dei framework non è quindi solo il motivo della larga diffusione di PHP, ma è anche il punto di partenza per la scrittura di un software solido, scalabile ed evoluto che possa mantenere tutte queste caratteristiche nel tempo.

PHP non nasce come un linguaggio OOP: ha una tipizzazione debole e regole meno stringenti rispetto agli altri linguaggi, soprattutto quelli più recenti. Queste caratteristiche lo mettono in cattiva luce e soprattutto permettono la scrittura del cosiddetto “spaghetti code”, cioè codice non strutturato e di difficile interpretazione.

Nel tempo però PHP si è evoluto anche a livello di sintassi, aggiungendo funzionalità e caratteristiche che, applicate ed utilizzate nel modo corretto, portano ad un miglioramento sostanziale della qualità del codice. Il punto cruciale è la capacità del programmatore di sfruttare tutto ciò che mette a disposizione il linguaggio PHP ed i relativi framework di appoggio.
Con il supporto del proprio IDE (assolutamente fondamentale), si riuscirà non solo a scrivere codice più velocemente, ma anche a renderlo strutturato, chiaro e pulito. Queste sono caratteristiche fondamentali per poterlo condividere e riuscire quindi ad ottimizzare il lavoro in team.
Se sfruttato per tutte le sue potenzialità, PHP è sicuramente uno dei migliori linguaggi per quanto riguarda la semplicità e la velocità di sviluppo.

È più facile trovare sviluppatori PHP di un livello middle o senior, piuttosto che junior: questo perché al giorno d’oggi c’è una scelta di linguaggi maggiore rispetto al passato e molti sono più interessanti e attrattivi per chi è alle prime armi. C’è comunque da tenere in considerazione che la domanda di sviluppatori PHP è costante e l’offerta non è sufficiente a colmarla completamente.
Quindi, approcciare oggi il linguaggio PHP, potrebbe portare in prospettiva a benefici anche a livello lavorativo. E poi chi ha detto che PHP non è divertente? Dipende da come scrivi il codice, provare per credere!

In Webformat integriamo e sviluppiamo su Magento 2 (nella sua versione commerciale Adobe Commerce), una piattaforma e-commerce che ha un proprio framework che a sua volta sfrutta in parte Zend (ora Laminas) e in parte Symfony. Ad ogni aggiornamento della piattaforma (che sia security, feature o patch) ci confrontiamo con il cliente per pianificare le tempistiche di upgrade e teniamo costantemente aggiornato lo status delle versioni PHP per non lasciare un sistema scoperto.

Magento ha una sua roadmap (https://devdocs.magento.com/release/) che ci aiuta a programmare in anticipo questi tipi di intervento.

L’IDE di sviluppo è PHPStorm e ha delle configurazioni standard per tutti i team che ci permettono di avere uniformità di scrittura e formattazione del codice.
Siamo molto attenti alla qualità del codice perché spesso i moduli vengono utilizzati su più progetti e quindi cerchiamo di fornire sempre l’adeguata documentazione per ogni sviluppo.
Effettuiamo una code review che permette di verificare l’utilizzo corretto ed ottimizzato delle funzionalità di PHP, la struttura MVC e le best practice che consiglia Adobe, la retrocompatibilità ed il supporto per le versioni di PHP e di Magento che non siano quelle su cui è stato fatto lo sviluppo.

Gli ambienti di sviluppo sono sia locali che condivisi, utilizzano docker e sono già configurati per avere attivo Xdebug in modo da ottimizzare l’esperienza dello sviluppatore che potrà verificare in tempo reale il comportamento del suo codice.

Cerchiamo di formare i nuovi programmatori che entrano nei team in modo che imparino a sviluppare su Magento in modo lineare, pulito e rapido; abbiamo dei percorsi formativi che coprono sia i fondamenti di PHP, sia la piattaforma Magento a 360°.
Ogni sviluppo che sia formativo o lavorativo inizia con un confronto tra sviluppatori coinvolti, team leader e project manager per capire come esaminare le necessità e le relative soluzioni o implementare un’analisi già effettuata.
Questa modalità consente di evitare eventuali approcci errati alla fonte ed avere un feedback iniziale dagli sviluppatori: così capiamo se ci sono elementi mancanti o se potenzialmente ci sono soluzioni alternative non valutate. Il confronto costruttivo infatti è la prima fonte di ottimizzazione del lavoro: consente di mantenere uno standard qualitativo elevato e uno scambio di conoscenze che permette agli sviluppatori di crescere costantemente.

Il futuro? PHP 8 a livello prestazionale potrebbe non portare miglioramenti tangibili (il compilatore JIT negli sviluppi più comuni non ha un effettivo impatto), ma a livello di codice introduce moltissime funzionalità (constructor property promotion, union types 2.0, named arguments, nullsafe operator, etc. - per l’elenco completo https://www.php.net/releases/8.0/en.php) che aumentano ancora le ottimizzazioni già in atto da tempo e che mantengono il PHP non solo tra i linguaggi più utilizzati, ma anche tra quelli più semplici, intuitivi e di facile scrittura.

PHP riesce a competere alla pari con i linguaggi di nuova generazione che, essendo relativamente giovani e nati successivamente, hanno fatto tesoro dei punti deboli degli altri linguaggi per non ripeterne gli errori.

Invece, anche se PHP nasce con molte debolezze, ha saputo colmare i gap e migliorare regolarmente la qualità della propria struttura portando gli sviluppatori a loro volta ad apprendere le nuove modalità e migliorarsi costantemente.

A cura di Emanuele Floreani, Senior backend developer @ Webformat
Seguimi su Linkedin


Vuoi conoscere meglio la nostra realtà aziendale?