<?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