Corsi on-line

Espressioni scalari in PHP

Le espressioni scalari consentono di introdurre elementi suscettibili di variazioni di valore (come per esempio delle stringhe o dei calcoli matematici) in un ambito dedicato a valori che per definizione dovrebbero essere statici. A tal proposito si pensi al caso della definizione di una costante alla quale associare non un valore predefinito, ma il risultato di un’elaborazione aritmetica; a partire da PHP 5.6 tale eventualità viene gestita tramite le cosiddette Constant scalar expressions.

PHPIl seguente script presenta in poche righe di codice tutte le peculiarità di questa nuova funzionalità quando utilizzata per associare un’espressione di valore (quindi “scalare”) ad una costante, anche nel contesto di una classe:

<?php
const X = 100;
const Y = X - 20;

class GetResult {
 const Z = Y + 1;
 const DIVISION = X / self::Z;
 const STRING = '- '.self::Z;

 public function showResult($result = X + self::Z) {
 return $result;
 }
}

echo (new GetResult)->showResult()."\n";
echo GetResult::STRING;
?>

Sostanzialmente, al di fuori della classe vengono definite due costanti, il valore della seconda (Y) è il risultato di una sottrazione a carico del valore della prima (const Y = X - 20); all’interno della classe viene introdotta una terza costante che è il risultato dell’incremento unitario di Y, un quarta (DIVISION) valorizzata dall’espressione X / self::Z e una quinta costante associata ad una stringa.

Eseguendo il codice proposto in PHP 5.6, il parser di quest’ultimo riconoscerà le Constant scalar expressions come valide e verrà stampato a video il seguente output ottenuto dalla somma di X più Y incrementata unitariamente e dal risultato di quest’ultimo meno il valore di X:

181 - 81

Se invece avessimo eseguito lo stesso script tramite una versione precedente di PHP, nel caso di questo post la release 5.5.17, allora avremmo ottenuto una notifica di errore come la seguente:

Parse error: syntax error, unexpected '-', expecting ',' or ';' in /dir/page.php on line 3
PHP Parse error: syntax error, unexpected '-', expecting ',' or ';' in /dir/page.php on line 3 

Questo perché, in mancanza di un supporto per le Constant scalar expressions, l’associazione di un valore statico alla costante X in linea 2 sarebbe stato accettato, mentre lo stesso tentativo di associare un’espressione di valore in linea 3 a Y sarebbe stato considerato non valido.

Post correlati
I più letti del mese
Tematiche