class Libro {
private $titulo;
private $autor;
private $paginas;
function getTitulo() {
return $this->titulo;
}
function getAutor() {
return $this->autor;
}
function getPaginas() {
return $this->paginas;
}
function setTitulo($titulo) {
$this->titulo = $titulo;
}
function setAutor($autor) {
$this->autor = $autor;
}
function setPaginas($paginas) {
$this->paginas = $paginas;
}
function __construct($titulo) {
$this->__set("titulo",$titulo);
}
function __get($name) {
$metodo="get$name";
if (!method_exists($this, $metodo)) {
throw new Exception("La propiedad $name no existe");
}
return $this->$metodo();
}
function __set($name, $value) {
$metodo="set$name";
if (!method_exists($this, $metodo)) {
throw new Exception("La propiedad $name no existe");
}
if (empty($value)) {
throw new Exception("El valor $name no puede estar vacío");
}
if ($name == "paginas" && ($value < 10 || $value > 1000)) {
throw new Exception("Páginas entre 10 y 1000");
}
$this->$metodo($value);
}
}