In PHP 8.1 è stata introdotta la proprietà “readonly”, che indica che una proprietà di un oggetto può essere solo letta, ma non può essere modificata. La proprietà “readonly” è simile alla costante di classe, ma a differenza delle costanti di classe, una proprietà “readonly” può essere istanziata in un oggetto e il valore può essere modificato solo durante l’inizializzazione dell’oggetto.
Sintassi utilizzando readonly
class MyClass {
public function __construct(
public readonly string $name) {
$this->name = $name;
}
}
Esempio utilizzando la proprietà readonly
<?php
class myClass
{
public function __construct(
public string $nome = "",
public int $eta = 0,
public readonly string $segnoZodiacale = "Pesci" //definiamo una proprietà di sola lettura
){
}
public function riepilogo(){
return "Nome : " . $this->nome . "\n"
. " Età : " . $this->eta . "\n"
. " Segno Zodiacale : " . $this->segnoZodiacale;
}
}
// In fase di instanziamento, possiamo modificare il valore della proprietà
$utente1 = new myClass(nome : "Donato", eta : 33, segnoZodiacale: "Acquario");
$utente1 = new myClass(nome : "Martina", eta : 30, segnoZodiacale: "Vergine");
echo $utente1->riepilogo();
$utente2->segnoZodiacale = "Toro"; // Non è possibile modificare la proprietà avremo un Fatal error
echo $utente2->riepilogo();
?>