⊗ppOpMgGP 88 of 107 menu

Obtención de propiedades mediante magia en POO en PHP

El siguiente método mágico que analizaremos se llama __get. Este método se activa al intentar leer el valor de una propiedad privada o protegida.

Si implementamos el método __get en alguna clase, todos los accesos a propiedades inexistentes o ocultas serán manejados por este método.

En este caso, PHP automáticamente pasará el nombre de la propiedad solicitada en el primer parámetro de este método, y el valor devuelto por este método será interpretado como el valor de la propiedad a la que se accedió.

Probablemente aún no esté muy claro cómo funciona esto, así que veamos un ejemplo práctico. Supongamos que tenemos la siguiente clase Test con una propiedad privada y una pública:

<?php class Test { public $prop1 = 1; // propiedad pública private $prop2 = 2; // propiedad privada } ?>

Agreguemos a nuestra clase el método mágico __get, que para empezar simplemente devolverá el nombre de la propiedad a la que se accedió:

<?php class Test { public $prop1 = 1; private $prop2 = 2; public function __get($property) { return $property; // simplemente devolvemos el nombre de la propiedad } } ?>

Comprobemos el funcionamiento del método mágico creado. Accedamos a tres tipos de propiedades: a una propiedad pública, a una privada y a una inexistente:

<?php $test = new Test; // Accedemos a la propiedad pública: echo $test->prop1; // mostrará 1 - es decir, el valor de la propiedad // Accedemos a la propiedad privada: echo $test->prop2; // mostrará 'prop2' - el nombre de la propiedad // Accedemos a la propiedad inexistente: echo $test->prop3; // mostrará 'prop3' - el nombre de la propiedad ?>

Como pueden ver, nuestro método mágico reacciona al acceso a propiedades privadas e inexistentes, pero ignora el acceso a propiedades públicas - estas funcionan como lo hacían antes.

Español
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Usamos cookies para el funcionamiento del sitio, análisis y personalización. El procesamiento de datos se realiza de acuerdo con la Política de privacidad.
aceptar todas configurar rechazar