PHP 8 porterà con sé moltissime novità. Si va dall’introduzione di JIT (Just-In-Time Compiler) agli Union Types e alle Weak Map. Ma le novità sono davvero molte, come si vede nell’elenco delle RFC.
Uno dei problemi che potreste trovarvi ad affrontare se decidete di testare le funzionalità in arrivo con le nuove versioni di PHP, è la difficoltà di trovare una sandbox per testare il codice prima che questo venga integrato nella versione stabile. La difficoltà nasce dal fatto che molte novità non sono state ancora approvate, alcune nemmeno discusse, altre si trovano ancora in bozza. Se siete curiosi e volete sapere come si svolge il processo di creazione, discussione e approvazione degli RFC, leggete questi articoli:
- The Mysterious PHP RFC Process and How You Can Change the Web
- How To Create an RFC
- Request for Comments
Per provare tutte le funzionalità prima del rilascio del linguaggio, sarebbe necessario compilare e configurare manualmente la versione desiderata di PHP sul proprio server, e questo non è proprio semplice. Si può sempre optare per un’immagine di Docker, come quella di Devilbox, ma si viene comunque a dipendere dalla disponibilità dell’autore ad aggiornare l’immagine man mano che si procede verso la data del rilascio finale.
Allora come fare? Si può utilizzare 3v4l.org.
Si tratta di uno degli strumenti più utili che si possono trovare in rete per testare le versioni di sviluppo di PHP, che in questo momento è la prossima major release: PHP 8.
3v4l è una shell online che permette di eseguire il proprio codice su oltre 250 versioni di PHP, in pratica tutte le versioni a partire dalla 4.3.0.
Facciamo un esempio, Supponiamo che vogliate testare la validazione dei metodi astratti dei trait.
Preleviamo il codice di esempio dalla RFC e riportiamolo nell’area di testo di 3v4l:
<?php
trait T {
abstract public function test(int $x);
}
class P {
public function test(string $x) {}
}
class C extends P {
use T;
}
In PHP 8, questo codice genera un Fatal Error, mentre non viene effettuato alcun controllo nelle versioni dalla 5.4.0 alla 7.4.5.
Dunque, inserite il codice e fate clic sul pulsante eval();. Per ogni script, lo strumento vi dice:
- Qual è l’output per ognuna delle release stabili di PHP, oltre alle versioni alfa, beta e RC
- Performance (tempo e memoria) di ogni versione
- Output opcode VLD
- Link contestuali alla documentazione e al codice sorgente
- Output delle versioni alfa, beta e RC in arrivo
- Output dei brunch delle RFC più richieste
La prima scheda mostra l’output in tutte le versioni stabili supportate.
La seconda scheda le performance nelle diverse versioni
La terza scheda mostra gli opcode VLD
La quarta scheda non è disponibile per questo script, mentre la quinta e ultima scheda mostra l’output per le diverse branch al momento in discussione tra gli sviluppatori.
Ogni script viene salvato con un URL, che può essere quindi utilizzato per la condivisione.
Insomma, 3v4l (aka Eval) è uno strumento davvero utile che permette di risparmiare un sacco di tempo quando si ha bisogno di testare i propri script PHP su diverse versioni del linguaggio, comprese quelle in fase di sviluppo.
Immagine di Negative Space su Pexels
Lascia un commento