Quantcast
Channel: Noir Solutions
Viewing all articles
Browse latest Browse all 104

Versione PHP 8.2 Introduzioni le classi di Sola lettura e deprecate le proprietà dinamiche.

$
0
0

E adesso vi parliamo della nuova versione di PHP 8.2 e la possibilità di estendere le classi alle classi di solo lettura.

Partiamo dal concetto di Oggetto di Trasferimento Dati o DTO ( Data Transfer Object)

Si stratta di uno schema di design utile se vogliamo veicolare dati dentro la stessa applicazione. Si differenzia da un oggetto per l’ccasso ai dati, chiamato anche oggetto di businness, in quanto ha come scopo l’allocazione dinamica delle informazioni permettendone il recupero.

PHP 8.2 Classe di sola lettura con estensione readonly

Con questo nuovo Pattern abbiamo un oggetto che stabilisce come i dati sono disponibili. In alcuni casi tale schema viene settato come non modificabile, quindi dobbiamo definire delle proprietà di sola lettura.

Per fare fino alla versione 8.0 di PHP una classe di sola lettura l’unico modo era quello di generare una classe e popolarla con tutte le sue proprietà settate in sola lettura, vediamo un esempio chiarificatore.

class onlyread
{
public function __construct(
public readonly string $name1,
public readonly string $name2,
public readonly DateTimeImmutable $data_out,
) {…}
}

Ovviamente non è un codice complicato da scrivere ma è evidente che presenta dei particolari di complessità.

E qui arriva la soluzione escogitata dagli ingegneri della PHP per ridurre appunto la complessità sopra esposta. Con l’introduzione quindi delle nuove classi di sola lettura il precedente codice può essere riscritto come

public readonly class FilmDTO
{
public function __construct(
string $name1,
string $name2,
DateTimeImmutable $data_out,
) {}
}

che come potete vedere è una riscrittura del codice molto semplificata

Linguaggio PHP differenze fra mysqli_fetch_row ,mysqli_fetch_assoc e mysqli_fetch_array

Un’altra novità introdotta con l’aggiornamento 8.2 di PHP sono le proprietà dinamiche che sono state deprecate ossia che nelle prossime versioni future non si potranno più utilizzare

Cosa Sono le proprietà dinamiche di PHP

Ovviamente la prima domanda è cosa siano le proprietà dinamiche e quindi il loro funzionamento. In pratica sono delle proprietà che permettono di impostare le proprietà di un oggetto che non esiste nel contesto di una classe.

Entriamo nello specifico fino a questo momento era consentita una scrittura del genere

class Rugby{}
$team = new Rugby();
$team->name = 'Marc';

una scrittura molto comoda ma che può generare comportamenti inattesi, soprattutto quando si deve cambiare il team per esempio.

Ovviamente sarà ancora consentito l’utilizzo del metodo , ma riceverete un warnig. Ma ancora potrete utilizzare i metodi _get() o _set() che vi consentiranno di definire le proprietà dinamiche dell’oggetto.

Se si vuole continuare a utilizzare questa programmazione senza il warning dobbiamo introdurre l’attributo

AllowDynamicProprierties

una possibile implementazione è la seguente

class Rugby{}
$rugby = new rugby();
$rugby->name = 'Marc';

L'articolo Versione PHP 8.2 Introduzioni le classi di Sola lettura e deprecate le proprietà dinamiche. proviene da Noir Solutions.


Viewing all articles
Browse latest Browse all 104

Trending Articles