L’evoluzione di PHP

In questo articolo tratterò l’aspetto di un moderno ambiente di sviluppo PHP, esaminando gli strumenti disponibili sia all’interno del linguaggio stesso sia dal punto di vista dei complementi.

Maico Orazio
weBeetle
4 min readMay 25, 2022

--

Mi trovo spesso in disaccordo con la maggior parte degli sviluppatori che conosco, anche qualche mio collega, sul fatto che secondo il loro punto di vista PHP sia un linguaggio vecchio e superato. Personalmente penso che molti sviluppatori spesso confondono ciò che pensano che sia PHP con ciò che è effettivamente.

I vecchi e bui giorni di PHP v4 -e precedenti- sono ormai lontani da noi e se non ti fossi allontanato, avresti potuto essere spettatore dell’evoluzione di PHP.

Sebbene sia considerato da alcuni datato , PHP è ancora utilizzato da grandi aziende come Facebook, Wikipedia, Wordpress, MailChimp, Tumblr, Slack e Etsy.

Nel momento in cui scrivo, PHP v8.1.0 ha da qualche mese visto la luce, PHP v8.2 è già in fase di sviluppo, la PHP Foundation sta per diventare una realtà e PHP v5.6 sta raggiungendo la fine del suo ciclo di vita. Quindi quando parlo di PHP moderno mi riferisco alla versione 7 e successive.

Da quando è stato riscritto nella v5.0, l’evoluzione del linguaggio e dei suoi strumenti è stata impressionante. PHP v5.0 ha segnato un punto di svolta nella storia di PHP, portandolo nel regno dei veri linguaggi orientati agli oggetti.

Miglioramenti dalla versione 7.x

Da PHP v7, rilasciato il 3 dicembre 2015, sono state introdotte diverse nuove interessanti funzionalità, come dichiarazioni di tipo scalare e del tipo restituito, classi anonime, crittografia integrata, interfaccia Throwable tramite la quale ora è possibile rilevare qualsiasi tipologia di errore come le eccezioni (engine exceptions), argomenti denominati (named arguments), attributi v2, esecuzione asincrona (Fibers), gli Enumerations e la compilazione Just-In-Time.

La sintassi ha anche subìto alcuni potenti miglioramenti, come le arrow function, gli argomenti illimitati per le funzioni, l’operatore spaceship (<=>) e di coalescenza nullo (??) e nullsafe ($country = $session?->user?->getAddress()?->country).

Ogni nuova versione è stata arricchita con importanti miglioramenti delle prestazioni rispetto alla precedente.

I migliori tool per gli sviluppatori PHP

Di seguito parlerò di alcuni strumenti che ritengo indispensabili quando si tratta di sviluppo software professionale in PHP.

Gestione delle dipendenze

Uno dei cambiamenti più importanti nella maturità di PHP è arrivato con il rilascio di Composer, un gestore di dipendente PHP. Prima di Composer, PHP utilizzava PEAR, che risolveva lo stesso problema in un modo più primitivo.

Gestire le dipendenze con PEAR significa tutto o niente, ed eseguire più progetti sullo stesso server diventa abbastanza complicato, soprattutto se ognuno è vincolato da un insieme di dipendenze diverso o in conflitto.

La gestione delle dipendenze è molto più semplice con Composer. Ogni progetto ha il suo file di configurazione composer.json e le sue cartelle vendor delle dipendenze, mantenendo tutto autonomo.

Un altro grande vantaggio di Composer è rappresentato dal suo sistema di controllo delle versioni.

Framework MVC

Se stai creando un’applicazione non banale, è probabile che dovrai creare molto codice standard prima di poter effettivamente implementare la logica che risolva il problema del tuo cliente; ad esempio il routing e la gestione del database.

Al giorno d’oggi, ci sono molti framework MVC, come Symfony e Laravel, che puoi usare come base per il tuo progetto; entrambi hanno un’ampia community e un uso diffuso.

Esecuzione asincrona

Ci sono un paio di progetti per il supporto all’esecuzione asincrona, come Swoole e ReactPHP. E’ possibile sfruttare la potenza di Swoole per l’elaborazione parallela, diminuendo il tempo necessario per ottenere il risultato finale.

In PHP v8.1, le fibers sono state introdotte come funzionalità pronta all’uso.

Serverless PHP

Matthieu Napoli sta facendo della sua missione quella di educare gli sviluppatori PHP su questo modo relativamente nuovo di usarlo, e sembra che stia lavorando molto bene. Puoi dare un’occhiata a Bref, il suo progetto open source per semplificare serverless PHP.

Debugger

In pratica, il debug implica la visualizzazione del contenuto delle variabili durante l’esecuzione dell’applicazione. Gli strumenti disponibili per l’ attività di debug, prima di quelli più moderni, sono var_dump , echo e print_r , che presentano un rischio elevato di lasciare tracce ed esporre informazioni potenzialmente riservate.

Sia XDebug che ZendDebugger funzionano bene con IDE moderni come PhpStorm e VS Code per risolvere i problemi sopra menzionati; altrimenti phpdbg, utilizzabile direttamente dalla riga di comando e fornito in bundle con PHP dalla v5.6.

Test automatizzati

Gli strumenti di test automatizzati sono diventati uno standard in tutto il settore dello sviluppo software. Ogni linguaggio ha i suoi strumenti e quello più utilizzato in PHP è sicuramente phpUnit.

phpUnit è stato originariamente progettato come framework per i test unitari, ma altri strumenti lo hanno aiutato ad espanderlo per fornire altri tipi di test come i test end-to-end e di integrazione.

Strumenti di analisi statica del codice

La mancanza di strumenti per l’analisi statica era un grande svantaggio per PHP e altri linguaggi non compilati. Alcuni bug erano così ben nascosti che era molto difficile trovarli in normali situazioni di test.

Ora abbiamo phpstan, di seguito un esempio:

<?php
function f(int $p): int
{
return $p * 2;
}
$a = 'M';
echo f($a);

dove può rilevare il bug di type non corrispondente senza eseguire il codice, semplicemente emettendo il comando come quello riportato di seguito:

vendor/bin/phpstan analyse test.php --level 5

Includendo questi strumenti in una pipeline CI/CD, si può realmente migliorare più facilmente la qualità del tuo codice.

In conclusione PHP ha fatto molta strada. Purtroppo non tutti gli sviluppatori hanno seguito la traiettoria sviluppo delle sue pratiche.

Con questo articolo spero che avrai modo di ripensare all’idea che ti sei fatto di PHP. Se invece sei un suo fan, avrai più motivi per difendere la tua scelta.

Grazie per la lettura!

--

--

Maico Orazio
weBeetle

Senior Web Application Developer. I'm a software engineer, a passionate coder, and a web developer. I am a fan of technology. #php #symfony #javascript #reactjs