{"id":22526,"date":"2021-12-18T22:38:56","date_gmt":"2021-12-18T21:38:56","guid":{"rendered":"https:\/\/www.nycwebdesign.eu\/webdesign\/php-8-1-proprieta-readonly-development-php\/"},"modified":"2021-12-18T22:38:56","modified_gmt":"2021-12-18T21:38:56","slug":"php-8-1-proprieta-readonly-development-php","status":"publish","type":"post","link":"https:\/\/www.nycwebdesign.eu\/webdesign\/php-8-1-proprieta-readonly-development-php\/","title":{"rendered":"PHP 8.1: propriet\u00e0 readonly | Development, PHP"},"content":{"rendered":"<p> <br \/>\n<\/p>\n<div>\n<p>Tra le nuove funzionalit\u00e0 introdotte da <strong>PHP 8.1<\/strong> troviamo anche la possibilit\u00e0 di dichiarare una propriet\u00e0 tramite il modificatore <code>readonly<\/code> il cui compito \u00e8 quello di prevenire qualsiasi modifica della propriet\u00e0 stessa dopo l\u2019inizializzazione.<span id=\"more-406022\"\/><\/p>\n<p>Una propriet\u00e0 di classe che sia stata dichiarata come non modificabile perch\u00e9 in \u201csola lettura\u201d pu\u00f2 essere inizializzata una volta sola e il valore impostato per essa non pu\u00f2 essere cambiato, quindi nel caso in cui si provasse a modificare forzatamente tale valore l\u2019applicazione produrrebbe un errore.<\/p>\n<h2>Sintassi delle propriet\u00e0 readonly<\/h2>\n<p>A livello sintattico \u00e8 possibile dichiarate una propriet\u00e0 <em>readonly<\/em> introducendo <code>readonly<\/code> tra il modificatore di accesso e il <em>type hint<\/em> o indicazione del tipo, come nell\u2019esempio seguente:<\/p>\n<pre><code class=\"language-php\">\npublic readonly string $Immodificabile;\n<\/code><\/pre>\n<p>Il modo migliore per descriverne il funzionamento \u00e8 quello di inserire tale espressione all\u2019interno di una classe con cui effettuare il confronto tra una propriet\u00e0 modificabile e una propriet\u00e0 <em>readonly<\/em>:<\/p>\n<pre><code class=\"language-php\">\nclass Blah {\n    public string $Modificabile;\n    public readonly string $Immodificabile;\n    public function __construct(\n        string $Modificabile,\n        string $Immodificabile) {\n        $this-&gt;Modificabile = $Modificabile;\n        $this-&gt;Immodificabile = $Immodificabile;\n    }\n}\n<\/code><\/pre>\n<p>Nella classe proposta abbiamo due propriet\u00e0: <code>$Modificabile<\/code>, una propriet\u00e0 con modificatore d\u2019accesso <code>public<\/code> il cui valore pu\u00f2 essere modificato in qualsiasi momento, sia all\u2019interno dei metodi di classe dal loro esterno:<\/p>\n<pre><code class=\"language-php\">\n$blah = new Blah(\"X\", \"Y\");\n$blah-&gt;$Modificabile = \"Z\";\n<\/code><\/pre>\n<p><code>$Immodificabile<\/code> permette comunque l\u2019accesso in lettura, ma un\u2019espressione come la seguente:<\/p>\n<pre><code class=\"language-php\">\n$blah-&gt;$Immodificabile = \"w\";\n<\/code><\/pre>\n<p>restituisce un errore. <\/p>\n<p>Nello stesso modo, in presenza di una classe come la seguente:<\/p>\n<pre><code class=\"language-php\">\nclass Prova {\n   public readonly string $Immodificabile;\n   public function __construct(string $Immodificabile) {\n       $this-&gt;immodificabile = $Immodificabile;\n   }\n}\n$prova = new Prova(\"blah\");\nvar_dump($prova-&gt;immodificabile);\n$prova-&gt;immodificabile = \"blah\";\n<\/code><\/pre>\n<p>Abbiamo una prima inizializzazione perfettamente lecita dal punto di vista delle propriet\u00e0 <em>readonly<\/em>:<\/p>\n<pre><code class=\"language-php\">\n$this-&gt;immodificabile = $Immodificabile;\n<\/code><\/pre>\n<p>e una seconda assegnazione non consentita dal costrutto:<\/p>\n<pre><code class=\"language-php\">\n$prova-&gt;immodificabile = \"blah\";\n<\/code><\/pre>\n<p>che restituisce un errore come il seguente:<\/p>\n<pre><code class=\"language-php\">\nError: Cannot modify readonly property Prova::$Immodificabile\n<\/code><\/pre>\n<p>Da questo punto di vista \u00e8 interessante notare come l\u2019errore venga prodotto anche se il valore utilizzato \u00e8 il medesimo, quello che conta infatti \u00e8 che non possono essere apportate delle modifiche una volta effettuata la dichiarazione.<\/p>\n<p>E\u2019 infine utile sottolineare che una propriet\u00e0 <em>readonly<\/em> non ha il solo limite di poter essere dichiarata una volta sola, ci\u00f2 infatti deve e pu\u00f2 avvenire soltanto dallo <em>scope<\/em> in cui avviene la dichiarazione.<\/p>\n<p><em>Fonte<\/em>: <a href=\"https:\/\/www.php.net\/manual\/en\/language.oop5.properties.php#language.oop5.properties.readonly-properties\" class=\"text-link text-link--special\" target=\"_blank\" rel=\"nofollow noopener\"><span class=\"underline\">PHP<\/span><i class=\"ico-external\"\/><\/a><\/p>\n<\/div>\n<p><br \/>\n<br \/><a href=\"https:\/\/www.html.it\/18\/12\/2021\/php-8-1-proprieta-readonly\/\">Source link <\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Tra le nuove funzionalit\u00e0 introdotte da PHP 8.1 troviamo anche la possibilit\u00e0 di dichiarare una propriet\u00e0 tramite il modificatore readonly il cui compito \u00e8 quello di prevenire qualsiasi modifica della propriet\u00e0 stessa dopo l\u2019inizializzazione. Una propriet\u00e0 di classe che sia stata dichiarata come non modificabile perch\u00e9 in \u201csola lettura\u201d pu\u00f2 essere inizializzata una volta sola&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_s2mail":""},"categories":[37],"tags":[],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v19.13 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>PHP 8.1: propriet\u00e0 readonly | Development, PHP - AGENZIA WEB Italia<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.nycwebdesign.eu\/webdesign\/php-8-1-proprieta-readonly-development-php\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PHP 8.1: propriet\u00e0 readonly | Development, PHP - AGENZIA WEB Italia\" \/>\n<meta property=\"og:description\" content=\"Tra le nuove funzionalit\u00e0 introdotte da PHP 8.1 troviamo anche la possibilit\u00e0 di dichiarare una propriet\u00e0 tramite il modificatore readonly il cui compito \u00e8 quello di prevenire qualsiasi modifica della propriet\u00e0 stessa dopo l\u2019inizializzazione. Una propriet\u00e0 di classe che sia stata dichiarata come non modificabile perch\u00e9 in \u201csola lettura\u201d pu\u00f2 essere inizializzata una volta sola...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.nycwebdesign.eu\/webdesign\/php-8-1-proprieta-readonly-development-php\/\" \/>\n<meta property=\"og:site_name\" content=\"AGENZIA WEB Italia\" \/>\n<meta property=\"article:published_time\" content=\"2021-12-18T21:38:56+00:00\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/php-8-1-proprieta-readonly-development-php\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/php-8-1-proprieta-readonly-development-php\/\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/#\/schema\/person\/c0748e23499fac2fd73b79d1379fdf42\"},\"headline\":\"PHP 8.1: propriet\u00e0 readonly | Development, PHP\",\"datePublished\":\"2021-12-18T21:38:56+00:00\",\"dateModified\":\"2021-12-18T21:38:56+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/php-8-1-proprieta-readonly-development-php\/\"},\"wordCount\":305,\"publisher\":{\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/#organization\"},\"articleSection\":[\"News\"],\"inLanguage\":\"it-IT\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/php-8-1-proprieta-readonly-development-php\/\",\"url\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/php-8-1-proprieta-readonly-development-php\/\",\"name\":\"PHP 8.1: propriet\u00e0 readonly | Development, PHP - AGENZIA WEB Italia\",\"isPartOf\":{\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/#website\"},\"datePublished\":\"2021-12-18T21:38:56+00:00\",\"dateModified\":\"2021-12-18T21:38:56+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/php-8-1-proprieta-readonly-development-php\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.nycwebdesign.eu\/webdesign\/php-8-1-proprieta-readonly-development-php\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/php-8-1-proprieta-readonly-development-php\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PHP 8.1: propriet\u00e0 readonly | Development, PHP\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/#website\",\"url\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/\",\"name\":\"AGENZIA WEB Italia\",\"description\":\"Web design Web agency Italia\",\"publisher\":{\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/#organization\",\"name\":\"Multimedia Web\",\"url\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-content\/uploads\/2016\/05\/multimediaweb1.png\",\"contentUrl\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-content\/uploads\/2016\/05\/multimediaweb1.png\",\"width\":200,\"height\":57,\"caption\":\"Multimedia Web\"},\"image\":{\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/#\/schema\/person\/c0748e23499fac2fd73b79d1379fdf42\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/991cd68bbfd6f946517378a63fc3a1f7?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/991cd68bbfd6f946517378a63fc3a1f7?s=96&d=mm&r=g\",\"caption\":\"admin\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"PHP 8.1: propriet\u00e0 readonly | Development, PHP - AGENZIA WEB Italia","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.nycwebdesign.eu\/webdesign\/php-8-1-proprieta-readonly-development-php\/","og_locale":"it_IT","og_type":"article","og_title":"PHP 8.1: propriet\u00e0 readonly | Development, PHP - AGENZIA WEB Italia","og_description":"Tra le nuove funzionalit\u00e0 introdotte da PHP 8.1 troviamo anche la possibilit\u00e0 di dichiarare una propriet\u00e0 tramite il modificatore readonly il cui compito \u00e8 quello di prevenire qualsiasi modifica della propriet\u00e0 stessa dopo l\u2019inizializzazione. Una propriet\u00e0 di classe che sia stata dichiarata come non modificabile perch\u00e9 in \u201csola lettura\u201d pu\u00f2 essere inizializzata una volta sola...","og_url":"https:\/\/www.nycwebdesign.eu\/webdesign\/php-8-1-proprieta-readonly-development-php\/","og_site_name":"AGENZIA WEB Italia","article_published_time":"2021-12-18T21:38:56+00:00","author":"admin","twitter_card":"summary_large_image","twitter_misc":{"Scritto da":"admin","Tempo di lettura stimato":"2 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/php-8-1-proprieta-readonly-development-php\/#article","isPartOf":{"@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/php-8-1-proprieta-readonly-development-php\/"},"author":{"name":"admin","@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/#\/schema\/person\/c0748e23499fac2fd73b79d1379fdf42"},"headline":"PHP 8.1: propriet\u00e0 readonly | Development, PHP","datePublished":"2021-12-18T21:38:56+00:00","dateModified":"2021-12-18T21:38:56+00:00","mainEntityOfPage":{"@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/php-8-1-proprieta-readonly-development-php\/"},"wordCount":305,"publisher":{"@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/#organization"},"articleSection":["News"],"inLanguage":"it-IT"},{"@type":"WebPage","@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/php-8-1-proprieta-readonly-development-php\/","url":"https:\/\/www.nycwebdesign.eu\/webdesign\/php-8-1-proprieta-readonly-development-php\/","name":"PHP 8.1: propriet\u00e0 readonly | Development, PHP - AGENZIA WEB Italia","isPartOf":{"@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/#website"},"datePublished":"2021-12-18T21:38:56+00:00","dateModified":"2021-12-18T21:38:56+00:00","breadcrumb":{"@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/php-8-1-proprieta-readonly-development-php\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.nycwebdesign.eu\/webdesign\/php-8-1-proprieta-readonly-development-php\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/php-8-1-proprieta-readonly-development-php\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.nycwebdesign.eu\/webdesign\/"},{"@type":"ListItem","position":2,"name":"PHP 8.1: propriet\u00e0 readonly | Development, PHP"}]},{"@type":"WebSite","@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/#website","url":"https:\/\/www.nycwebdesign.eu\/webdesign\/","name":"AGENZIA WEB Italia","description":"Web design Web agency Italia","publisher":{"@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.nycwebdesign.eu\/webdesign\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"it-IT"},{"@type":"Organization","@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/#organization","name":"Multimedia Web","url":"https:\/\/www.nycwebdesign.eu\/webdesign\/","logo":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/#\/schema\/logo\/image\/","url":"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-content\/uploads\/2016\/05\/multimediaweb1.png","contentUrl":"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-content\/uploads\/2016\/05\/multimediaweb1.png","width":200,"height":57,"caption":"Multimedia Web"},"image":{"@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/#\/schema\/person\/c0748e23499fac2fd73b79d1379fdf42","name":"admin","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/991cd68bbfd6f946517378a63fc3a1f7?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/991cd68bbfd6f946517378a63fc3a1f7?s=96&d=mm&r=g","caption":"admin"}}]}},"_links":{"self":[{"href":"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-json\/wp\/v2\/posts\/22526"}],"collection":[{"href":"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-json\/wp\/v2\/comments?post=22526"}],"version-history":[{"count":0,"href":"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-json\/wp\/v2\/posts\/22526\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-json\/wp\/v2\/media?parent=22526"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-json\/wp\/v2\/categories?post=22526"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-json\/wp\/v2\/tags?post=22526"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}