<?php class EjemploInterno { private $nombre; private $apellidos; function getNombre() { return $this->nombre . " " . $this->apellidos; } function setNombre($nombre) { if (strlen($nombre) < 4) { throw new Exception("Nombre muy corto"); } $n = explode(" ", $nombre); $this->nombre = $n[0]; $this->apellidos = $n[1]; } function __construct($nombre) { $this->setNombre($nombre); } function __toString() { return $this->getNombre(); } } $a = new EjemploInterno("Ana Pi"); $a->setNombre("Juan Fuentes"); echo $a->getNombre(); echo $a; class EjemploInternoMagico { private $nombre; private $apellidos; function __get($name) { if ($name == "nombre") { return $this->nombre . " " . $this->apellidos; } } function __set($name, $value) { if ($name == "nombre") { if (strlen($value) < 4) { throw new Exception("Nombre muy corto"); } $n = explode(" ", $value); $this->nombre = $n[0]; $this->apellidos = $n[1]; } } function __construct($nombre) { $this->__set("nombre",$nombre); } function __toString() { return $this->__get("nombre"); } } $a = new EjemploInternoMagico("Ana Pi"); $a->nombre="Juan Fuentes"; echo $a->nombre; echo $a;