Temas > Programacion > Php > Funcion clone() en php
Julio

Función __clone()
PHP nos permite crear un método que se llamará cuando
ejecutemos el operador clone.
Este método puede entre otras cosas inicializar algunos atributos.
Si no se define el método __clone se hará una copia idéntica del
objeto que le pasamos como parámetro al operador clone.
Veamos un ejemplo: Crearemos una clase Persona que tenga como
atributos su nombre y edad, definiremos los métodos para cargar y
retornar los valores de sus atributos.
Haremos que cuando clonemos un objeto de dicha clase la edad de la
persona se fije con cero.
<html>
<head>
<title>Pruebas</title>
</head>
<body>
<?php
class Persona {
   private $nombre;
   private $edad;
   public function fijarNombreEdad($nom,$ed)
   {
      $this->nombre=$nom;
      $this->edad=$ed;
   }
   public function retornarNombre()
   {
      return $this->nombre;
   }
   public function retornarEdad()
   {
      return $this->edad;
   }
   public function __clone()
   {
      $this->edad=0;
   }
}
$persona1=new Persona();
$persona1->fijarNombreEdad(`Juan`,20);
echo `Datos de $persona1:`;
echo $persona1->retornarNombre().` - `.$persona1->retornarEdad().
`<br>`;
$persona2=clone($persona1);
echo `Datos de $persona2:`;
echo $persona2->retornarNombre().` - `.$persona2->retornarEdad().
`<br>`;
?>
</body>
</html>
El método __clone se ejecutará cuando llamemos al operador clone para
esta clase:
   public function __clone()
   {
      $this->edad=0;
   }
Es decir cuando realicemos la asignación:
$persona2=clone($persona1);
inicialmente se hace una copia idéntica de $persona1 pero luego se
ejecuta el método __clone con lo que el atributo $edad se modifica.
Si queremos que una clase no pueda clonarse simplemente podemos
implementar el siguiente código en el método __clone():
   public function __clone()
   {
      die(`No esta permitido clonar objetos de esta clase`);
   }













¿Has olviado tu contraseña?

Pulsa aquí para registrate




Google






LunMarMieJueVieSabDom
    123
45678910
11121314151617
181920 21222324
252627282930 

Jueves 21 de Noviembre 2024
Semana 47

..............................................................................................................................................................................................................................................
(Contacto)..
Esta web utiliza cookies para obtener datos estadísticos de la navegación de sus usuarios. Política de privacidad y Aviso legal