Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

PHP 8.2 e funzionalità deprecate

Con PHP 8.2 alcune funzionalità del linguaggio sono diventate deprecate, scopriamo quali tramite degli esempi pratici
PHP 8.2 e funzionalità deprecate
Con PHP 8.2 alcune funzionalità del linguaggio sono diventate deprecate, scopriamo quali tramite degli esempi pratici
Link copiato negli appunti

PHP 8.2, l'ultima versione del noto linguaggio per lo scripting server side, ha introdotto alcune nuove funzionalità come per esempio la classe Randomizer e l'attributo SensitiveParameter. Questo aggiornamento ha portato con se anche alcuni costrutti deprecati che nelle release precedenti erano invece consentiti.

Vediamo alcuni tenendo conto che l'utilizzo di una funzionalità deprecata non è necessariamente "vietato". Le sue criticità risultano però evidenti quando si deve migrare un'applicazione verso una versione più recente di PHP.

Interpolazione delle stringhe

Con PHP 8.2 l'interpolazione delle stringhe non viene considerata deprecata in toto. Bisogna però fare attenzione quando si utilizza un costrutto come il seguente:

$simpson = "Homer";
echo "${simpson}";

Nello specifico è stato reso deprecato il simbolo del dollaro ($) al di fuori delle parentesi graffe:

"${simpson}";

Non è invece da considerarsi deprecata una sintassi come la seguente:

"{$simpson}";

Proprietà dinamiche

Si consideri un esempio d'uso delle proprietà dinamiche come il seguente:

class Simpson {
}
$simpson = new Simpson();
$simpson->nome = 'Homer';

Fino a PHP 8.2 un'espressione di questo genere era possibile senza che generasse alcun warning (Deprecated: Creation of dynamic property..). Probabilmente non si tratta del miglior modo di gestire le proprietà ma per qualche tempo è stata comunque consentita. Con l'attuale stabile le cose sono invece cambiate e allo sviluppatore è richiesto di dichiarare le proprietà utilizzate.

È invece consentito l'uso delle proprietà dinamiche all'interno di un costrutto come quello proposto di seguito:

$lisa = new stdClass();
$lisa->prop = 'lisa';

L'uso della classe stdClass esula quindi dalle nuove specifiche. Per quanto riguarda invece le classi personalizzate è stato introdotto l'obbligo dell'attributo #[\AllowDynamicProperties] che specifica l'impiego delle proprietà dinamiche in un'espressione.

Sia nel caso dell'interpolazione delle stringhe che in quello delle proprietà dinamiche siamo di fronte a sintassi che nel prossimo futuro passeranno da deprecate a non più supportate. Si consiglia quindi di evitarne l'utilizzo in modo da non dover intervenire in seguito per aggiornare le proprie applicazioni.

Ti consigliamo anche