Ejemplos getters y llamadas internas


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