Ora, con PHP 7.1, vengono generati dei warning o delle notice a seconda della modalità con la quale vengono passate delle stringhe come operandi per gli operatori aritmetici; per proporre un esempio a riguardo è possibile testare le tre operazioni seguenti in un ambiente basato su PHP 5.6 (per la precisione la release 5.6.28):

var_dump("8" + "4");
var_dump("8" + "una stringa");
var_dump("8" + "4  e una stringa");

In fase di esecuzione vengono prodotti i seguenti risultati:

int(12) 
int(8) 
int(12)

Sostanzialmente, prima dell'ultima stabile di PHP l'interprete si limitava a verificare la presenza di valori numerici e li utilizzava al fine di ottenere un risultato valido dal punto di vista aritmetico, ciò al di là del tipo di dato utilizzato. La presenza di una stringa alfabetica nell'espressione non dava quindi luogo ad errori.

Ora proviamo a ripetere il medesimo test utilizzando un ambiente basato su PHP 7.1, in questo secondo caso otterremo un risultato come il seguente:

int(12) 
Warning: A non-numeric value encountered in /path/math.php on line 3 int(8) 
Notice: A non well formed numeric value encountered in /path/math.php on line 4 int(12)

Nessun problema per la prima operazione, vengono infatti individuati dei valori numerici e l'esecuzione produce il risultato atteso. Nella seconda e nella terza operazione viene invece rilevata la presenza di stringhe che portano alla segnalazione di eccezioni. Osservando l'ultima riga dell'output si noti come l'interprete sia comunque in grado di produrre il risultato atteso ("int(12)"), in quanto la presenza di valori numerici viene comunque rilevata.

Con PHP 7.1 si ha quindi un warning quando si tenta di passare all'operatore un operando non numerico, viene invece generato un notice quando il valore numerico risulta non formattato correttamente perché, ad esempio, seguito da una stringa alfabetica.

CommentaDi' la tua

Il tuo indirizzo email non sarà mostrato pubblicamente. I campi obbligatori sono contrassegnati da *