Le versioni Minor di PHP apportano miglioramenti incrementali, nuove funzionalità e spesso ottimizzazioni per una maggiore efficienza. PHP 7.4 introduce una serie di novità significative che migliorano la leggibilità del codice e aggiungono nuove funzionalità potenti.
1. Proprietà Tipizzate
Con PHP 7.4 è possibile dichiarare tipi di proprietà nelle classi, specificando il tipo di dato che una proprietà deve accettare, altrimenti un TypeError viene generato. Questa funzionalità aumenta la sicurezza del codice, facilitando la gestione dei tipi.
Documentazione ufficiale: Proprietà Tipizzate.
class User {
public int $id;
public string $name;
}
$u = new User();
$u->id = 1; //Ok
$u->id = "Carlo"; //PHP Fatal error: Uncaught TypeError: Cannot assign string to property User::$id of type int
Vale la pena di spendere qualche parola su questa novità in quanto rappresenta secondo me una pietra miliare per l’evoluzione di php in quanto segna il passaggio definitivo da linguaggio non tipizzato a linguaggio tipizzato. Si tratta di una delle novità più attese dai programmatori, in quanto la mancanza di tipizzazione è da sempre avvertita come una delle carenze relegano php a linguaggio meno enterprise di altri. L’introduzione della tipizzazione è stata attuata in modo estremamente flessibile in quanto viene lasciata la libertà al programmatore sia se e quali variabili tipizzare, e sia in quale modalità: strict / no strict mode.
Sono supportati tutti i tipi di php: int, string, bool, float, array, iterable, object, classi, interfacce, stdClass, riferimenti alla stessa classe: self, parent. Non sono supportati i tipi Resource ormai in disuso, e i callable.
Le prorietà possono essere inizializzate al momento della dichiarazione con un valore statico.
class Foo
{
public int $a;
public ?string $b = 'foo';
private Foo $prop;
protected static string $static = 'default';
}
Una proprietà di classe tipizzata a cui non è stato assegnato un valore si trova nello stato non inizializzato.
Non è consentito accedere ad una proprietà tipizzata non inizializzata in quanto verrebbe generato un errore; es.: if($foo->a == null) genera un errore.
Per verificare se una variabile è inizializzata si può ricorrere a isset($foo->a)
2. Operatore di assegnazione Null coalescing (??=)
L’operatore ??= consente di assegnare un valore a una variabile solo se essa non è definita o è null.
Documentazione ufficiale: Operatore di assegnazione Null Coalescing.
$var ??= 'default';
//è equivalente a
if (!isset($var)) {
$var = 'default';
}
3. Funzione fgetcsv() migliorata
In PHP 7.4, la funzione fgetcsv() accetta il parametro $escape per gestire l’output dei dati. Il parametro $escape ha il valore predefinito ‘\\’ ma puo essere impostato con una stringa vuota per disattivare il meccanismo di escape tramite backslash.
$file = fopen('file.csv', 'r');
while (($data = fgetcsv($file, 1000, ',', '"', '\\')) !== false) {
print_r($data);
}
fclose($file);
4. Funzioni Arrow
Le funzioni arrow forniscono una sintassi compatta per definire funzioni anonime, ereditando le variabili dall’ambiente di contesto. Questa sintassi è utile per evitare il passaggio esplicito delle variabili.
$factor = 10;
$calc = fn($n) => $n * $factor;
$res = $calc(5);
5. Espressione Spread per Array
La sintassi spread per array, introdotta in PHP 7.4, consente di espandere array all’interno di altri array in modo molto più efficiente. Questa funzionalità è utile per combinare array o aggiungere elementi senza usare array_merge().
Documentazione ufficiale: Espressione Spread per Array.
$array1 = [1, 2, 3];
$array2 = [...$array1, 4, 5];
6. Estensione FFI (Foreign Function Interface)
PHP 7.4 introduce l’estensione FFI, che consente di chiamare funzioni scritte in altri linguaggi (come C) direttamente in PHP. Questa funzionalità è utile per interagire con librerie di basso livello o di sistema senza la necessità di estensioni personalizzate.
$ffi = FFI::cdef(
"int add(int a, int b);",
"libadd.so"
);
echo $ffi->add(2, 3);
Conclusione
PHP 7.4 rappresenta un importante passo avanti, introducendo funzionalità che rafforzano il linguaggio e offrono strumenti moderni agli sviluppatori per creare applicazioni più efficienti e sicure.
Riferimenti Utili
- Sito Ufficiale di PHP: documentazione ufficiale e changelog completo.
- Sito Ufficiale di PHP : note rilascio PHP 7.4.
- Migrating from PHP 7.3 to PHP 7.4 – New Features: tutte le novità della versione PHP 7.4.
- Repository PHP su GitHub: per il codice sorgente ufficiale di PHP.