Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/09/2005, 04:59
Tigervlc
 
Fecha de Ingreso: mayo-2003
Mensajes: 527
Antigüedad: 21 años
Puntos: 3
Pregunta Por qué no me funciona este código tan sencillo?

Es un simple ejercicio de creación de un objeto a partir de una clase usando el constructor __construct() para inicializar el objeto. Después intento mostrar en pantalla sus datos (propiedades), tanto desde fuera de la clase como usando un método que los muestra.

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>