<?php
class Objeto {
private $id;
private $nombre;
private $email;
function __construct($id, $nombre, $email) {
$this->id = $id;
$this->nombre = $nombre;
$this->email = $email;
}
function __clone() {
$this->id = ++$this->id;
}
// Esta función comprueba si la propiedad especificada en $var existe en la clase especificada por __CLASS__
public function __set($var, $valor) {
if (property_exists(__CLASS__, $var)) {
$this->$var = $valor;
} else {
echo "No existe el atributo $var.";
}
}
public function __get($var) {
if (property_exists(__CLASS__, $var)) {
return $this->$var;
}
return NULL;
}
}
$obj = new Objeto(1, "objeto1", "prueba1@ejemplo.com");
$p = clone $obj;
echo $p->id;//2
$p->nombre = "nombre cambiado";
echo $p->nombre;//nombre cambiado
?>
Metodos __get() y __set() PHP
Este es un ejemplo de los métodos mágicos __set() y __get() en una clase con sus respectivas validaciones utilizando el método property_exists