⊗ppOpMgGP 88 of 107 menu

Accesso alle proprietà tramite magia in OOP in PHP

Il prossimo metodo magico che esploreremo si chiama __get. Questo metodo viene attivato quando si tenta di leggere il valore di una proprietà privata o protetta.

Se si implementa il metodo __get in una classe, tutti gli accessi a proprietà inesistenti o nascoste saranno gestiti da questo metodo.

In questo caso PHP passerà automaticamente il nome della proprietà richiesta nel primo parametro di questo metodo, e il valore restituito da questo metodo sarà interpretato come il valore della proprietà a cui si è tentato di accedere.

Probabilmente non è ancora molto chiaro come funzioni, quindi diamo un'occhiata a un esempio pratico. Supponiamo di avere una classe Test con una proprietà privata e una pubblica:

<?php class Test { public $prop1 = 1; // proprietà pubblica private $prop2 = 2; // proprietà privata } ?>

Aggiungiamo alla nostra classe il metodo magico __get, che per cominciare si limiterà a restituire il nome della proprietà a cui si è tentato di accedere:

<?php class Test { public $prop1 = 1; private $prop2 = 2; public function __get($property) { return $property; // restituisce semplicemente il nome della proprietà } } ?>

Verifichiamo il funzionamento del metodo magico creato. Accediamo a tre tipi di proprietà: una proprietà pubblica, una privata e una inesistente:

<?php $test = new Test; // Accediamo alla proprietà pubblica: echo $test->prop1; // visualizzerà 1 - cioè il valore della proprietà // Accediamo alla proprietà privata: echo $test->prop2; // visualizzerà 'prop2' - il nome della proprietà // Accediamo a una proprietà inesistente: echo $test->prop3; // visualizzerà 'prop3' - il nome della proprietà ?>

Come puoi vedere, il nostro metodo magico reagisce all'accesso a proprietà private e inesistenti, ma ignora l'accesso a quelle pubbliche - queste continuano a funzionare come prima.

Italiano
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesia日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Utilizziamo i cookie per il funzionamento del sito, l'analisi e la personalizzazione. I dati vengono elaborati in conformità con la Politica sulla privacy.
accetta tutto personalizza rifiuta