También como añadido, clono el objeto, habiendo creado la función especial __clone para que junto a la copia se ejecuten las acciones de esta función.
Bien, pues lo que parece una tontería no me sale bien. Al ejecutarlo, el navegador se queda en blanco. No hace nada.
Alguien me puede ayudar por favor?
Este es el código:
Código PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Construct y Clone</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php
class Perfil {
// Propiedades:
public $nombre = "nombre1";
public $apellidos = "apellidos1";
public $edad = 0;
// Métodos:
function __construct($nom, $apel, $edad) { // Constructor para inicializar propiedades
$this->nombre = $nom;
$this->apellidos = $apel;
$this->edad = $edad;
}
function __get($nom) { // Uso de __get() para devolver valores (más políticamente
// correcto que si no se usa)
return $this->$nom
}
function __clone() { // Uso específico de la función __clone() para ejecutar
// las sgtes acciones al realizar una copia:
echo "<p>Se ha hecho una copia del objeto.\n";
echo "<p>Nombre: ".$this->nombre."<br />\n";
echo "Apellidos: ".$this->apellidos."<br />\n";
echo "Edad: ".$this->edad."<br />\n";
}
public function mostrarDatos() { // Método que muestra las propiedades
echo "<p>Nombre: ".$this->nombre."<br />\n";
echo "Apellidos: ".$this->apellidos."<br />\n";
echo "Edad: ".$this->edad."<br />\n";
}
}
// Crear instancia de la clase Perfil:
$miPerfil = new Perfil("Manolo", "Redondo", 25);
// Mostrar propiedades del objeto $miPerfil sin usar método:
echo "<p>Nombre: ".$miPerfil->nombre."<br />\n";
echo "Apellidos: ".$miPerfil->apellidos."<br />\n";
echo "Edad: ".$miPerfil->edad."<br />\n";
// Mostrar propiedades del objeto $miPerfil usando método específico:
$miPerfil->mostrarDatos();
// Clonar el objeto. Al usar el método __clone() se ejecutan sus acciones al mismo
// tiempo que hago la copia:
$miOtroPerfil = clone $miPerfil;
?>
</body>
</html>