PHP: magic method __set
Posted in PHP, Programacion, Tecnologia, internet, mysql | Posted on 15-11-2009
|2
PHP nos ofrece la facilidad de usar algunos métodos mágicos en nuestras Classes que pueden servirnos de muchísima ayuda y que muchos dejan pasar por alto estas herramientas, muchas veces muy eficientes y útiles. Hoy les traigo algunos ejemplos del uso del método mágico “__set”.
El método __set es invocado cuando intentamos asignarle valor a una propiedad existente o no de un objeto. Veamos este primer ejemplo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | < ?php class MyClass{ private $_var1; public function __construct($var = null){ $this->_var1 = $var; } public function printVar($varname){ print $this->$varname; } public function __set($var, $value){ $this->$var = $value; } } ?> /***************************************************/ //Ejemplo de uso: $MyObject = new MyClass; $MyObject->myvar = 5; $MyObject->printVar('myvar'); // Salida sera: 5 |
En el ejemplo anterior, la propiedad MyClass::myvar no existe, pero es creada en ese instante que se le asigna el valor “5″.
Otro buen ejemplo puede ser este que encontré en TuxRadar.com:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | < ?php //...[snip - add your MySQL connection code here]... class mytable { public $Name; public function __construct($Name) { $this->Name = $Name; } public function __set($var, $val) { mysql_query("UPDATE {$this->Name} SET $var = '$val';"); } // public $AdminEmail = 'foo@bar.com'; } $systemvars = new mytable("systemvars"); $systemvars->AdminEmail = 'telrev@somesite.net'; ?> |
[ad#ad-1]
Vero que en el segundo ejemplo usan “__construct”. No se supoene que eso es un constructor de PHP4 ??
En los dos hay uso de “__construct”, que no es de PHP4, en PHP4 usabas un metodo con el mismo nombre que la Clase…