Categorie
Sviluppo

Come Testare le Versioni di Sviluppo di PHP con 3v4l

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:

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;
}
L’area di testo della shell online 3v4l

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:

  1. Qual è l’output per ognuna delle release stabili di PHP, oltre alle versioni alfa, beta e RC
  2. Performance (tempo e memoria) di ogni versione
  3. Output opcode VLD
  4. Link contestuali alla documentazione e al codice sorgente
  5. Output delle versioni alfa, beta e RC in arrivo
  6. Output dei brunch delle RFC più richieste

La prima scheda mostra l’output in tutte le versioni stabili supportate.

L'output di 3v4l
L’output di 3v4l

La seconda scheda le performance nelle diverse versioni

Performance dello script
Performance dello script

La terza scheda mostra gli opcode VLD

3v4l opcodes
VLD opcodes

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.

3v4l branches
Output per diverse branch di PHP 8

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

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *