• Mutimedia Web la Web Agency Italiana. Contattateci per preventivi gratuiti e consulenze nello sviluppo del vostro sito web o app Ios e Android. Professinalità e assistenza garatite!
    Immagini dei quadri e opere di: Giuseppe Lattanzio

  • Social

    [easy-social-share buttons="facebook,twitter,pinterest,linkedin,digg,stumbleupon,vk,tumblr,print,mail,del,reddit,whatsapp" counters=0 hide_names="force" template="grey-blocks-retina"]
  • WEB AGENCY

  • Sede Principale

    Multimedia Web

    Blog Studio Web

    Studio Web

    Sede a Venezia

    Web Agency Venezia

    Sede a New York

    Nyc Web Design

    Sede International

    Web Designer International

    Sito Demo One Page

    Spaghetti Web

    Landing page

    Savinus

  • smartphone

    Trovaci sul tuo smartphone

  • web-designer-ancona
  • AGENZIA WEB ITALIA

Home / News / PHP 8.1: proprietà readonly | Development, PHP

PHP 8.1: proprietà readonly | Development, PHP


Tra le nuove funzionalità introdotte da PHP 8.1 troviamo anche la possibilità di dichiarare una proprietà tramite il modificatore readonly il cui compito è quello di prevenire qualsiasi modifica della proprietà stessa dopo l’inizializzazione.

Una proprietà di classe che sia stata dichiarata come non modificabile perché in “sola lettura” può essere inizializzata una volta sola e il valore impostato per essa non può essere cambiato, quindi nel caso in cui si provasse a modificare forzatamente tale valore l’applicazione produrrebbe un errore.

Sintassi delle proprietà readonly

A livello sintattico è possibile dichiarate una proprietà readonly introducendo readonly tra il modificatore di accesso e il type hint o indicazione del tipo, come nell’esempio seguente:


public readonly string $Immodificabile;

Il modo migliore per descriverne il funzionamento è quello di inserire tale espressione all’interno di una classe con cui effettuare il confronto tra una proprietà modificabile e una proprietà readonly:


class Blah {
    public string $Modificabile;
    public readonly string $Immodificabile;
    public function __construct(
        string $Modificabile,
        string $Immodificabile) {
        $this->Modificabile = $Modificabile;
        $this->Immodificabile = $Immodificabile;
    }
}

Nella classe proposta abbiamo due proprietà: $Modificabile, una proprietà con modificatore d’accesso public il cui valore può essere modificato in qualsiasi momento, sia all’interno dei metodi di classe dal loro esterno:


$blah = new Blah("X", "Y");
$blah->$Modificabile = "Z";

$Immodificabile permette comunque l’accesso in lettura, ma un’espressione come la seguente:


$blah->$Immodificabile = "w";

restituisce un errore.

Nello stesso modo, in presenza di una classe come la seguente:


class Prova {
   public readonly string $Immodificabile;
   public function __construct(string $Immodificabile) {
       $this->immodificabile = $Immodificabile;
   }
}
$prova = new Prova("blah");
var_dump($prova->immodificabile);
$prova->immodificabile = "blah";

Abbiamo una prima inizializzazione perfettamente lecita dal punto di vista delle proprietà readonly:


$this->immodificabile = $Immodificabile;

e una seconda assegnazione non consentita dal costrutto:


$prova->immodificabile = "blah";

che restituisce un errore come il seguente:


Error: Cannot modify readonly property Prova::$Immodificabile

Da questo punto di vista è interessante notare come l’errore venga prodotto anche se il valore utilizzato è il medesimo, quello che conta infatti è che non possono essere apportate delle modifiche una volta effettuata la dichiarazione.

E’ infine utile sottolineare che una proprietà readonly non ha il solo limite di poter essere dichiarata una volta sola, ciò infatti deve e può avvenire soltanto dallo scope in cui avviene la dichiarazione.

Fonte: PHP



Source link