PHP: magic method __set
| Categorías PHP, Programacion, Tecnologia, internet, mysql | Fecha 15-11-2009 | Comentario 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';
?> |
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…