Los métodos de los que os voy a hablar son el __clone(), un método que sería el equivalente al constructor de copia de la Programación orientada a objetos de toda la vida, y el __get() y __set().
Empecemos por el __clone(). Este método realiza las funciones del constructor de copia de toda la vida. Hace una copia exacta del objeto. Si nuestro objeto tiene referencias a otros objetos también los copia.
Por otro lado, todos los que hemos programado orientado a objetos tenemos claro el tema del ámbito de los atributos y métodos. Sabemos que si el atributo es privado sólo se puede acceder a él desde dentro de la clase y desde fuera solo se puede acceder a su información a través de los métodos accesores y selectores (get y set).
Los métodos __get() y __set() nos lo ponen bien fácil. Si no existieran estos métodos genéricos, deberíamos definir un get y un set para cada uno de los atributos.
Aquí tenéis un ejemplo de como se programarían estos métodos:
class Rectangulo{
private $ancho;
private $alto;
function __clone(){
$this->ancho = clone $this->ancho;
$this->alto = clone $this->alto;
}
function __get($value){
return $this->$value;
}
function __set($value, $param){
if(is_numeric($param)){
$this->$value = $param;
}
}
}
Escuchando... Rod Stewart and the faces -- Maggie May[kml_flashembed movie="http://www.youtube.com/v/xikQ0c5KdZE" width="425" height="350" wmode="transparent" /]