⊗ppOpMgSP 91 of 107 menu

Escritura de propiedades mediante magia en POO en PHP

El método mágico __set se llama al intentar cambiar el valor de una propiedad inexistente o inaccesible. Acepta como parámetros el nombre de la propiedad y el valor que se intenta asignarle.

Veamos un ejemplo práctico. Supongamos que tenemos esta clase Test:

<?php class Test { private $prop1; private $prop2; } ?>

Creemos en esta clase el método mágico __set, que mediante la función var_dump mostrará el nombre de la propiedad a la que se accedió y el valor que se intenta establecer para esa propiedad:

<?php class Test { private $prop1; private $prop2; public function __set($property, $value) { var_dump($property . ' ' .$value); } } ?>

Comprobemos el funcionamiento de nuestra clase:

<?php $test = new Test; $test->prop = 'value'; // var_dump del método __set mostrará 'prop value' ?>

Ahora asignemos un valor a la propiedad cuyo nombre está almacenado en la variable $property:

<?php class Test { private $prop1; private $prop2; public function __set($property, $value) { $this->$property = $value; // establecemos el valor } } ?>

Ahora podremos escribir en las propiedades privadas desde fuera de la clase:

<?php $test = new Test; $test->prop1 = 1; // escribiremos 1 $test->prop2 = 2; // escribiremos 2 ?>

Podemos escribir, sin embargo, comprobar si se escribió algo allí - no, ya que las propiedades son privadas.

Se puede hacer un getter para estas propiedades o simplemente usar el método mágico __get. Usemos la segunda opción:

<?php class Test { private $prop1; private $prop2; public function __set($property, $value) { $this->$property = $value; } // Getter mágico de propiedades: public function __get($property) { return $this->$property; } } ?>

Ahora sí podemos comprobar el funcionamiento de nuestra clase. Comprobemos:

<?php $test = new Test; $test->prop1 = 1; // escribiremos 1 $test->prop2 = 2; // escribiremos 2 echo $test->prop1; // mostrará 1 echo $test->prop2; // mostrará 2 ?>

En realidad, por supuesto, no se debe permitir que cualquiera escriba en las propiedades privadas, de lo contrario desaparece el sentido de esas propiedades privadas (es más fácil hacerlas públicas y listo).

Por lo tanto, este método debe aplicarse solo cuando realmente existe la necesidad. En las siguientes lecciones veremos más ejemplos de aplicación exitosa.

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