Constructores y Destructores

Constructor

void __construct ( [mixed args [, ...]] )

PHP 5 permite a los desarrolladores declarar métodos constructores para las clases. Las clases que tiene un método constructor llaman a este método cada vez que se crea un nuevo objeto, para cualquier inicializació que el objeto puede necesitar antes de ser usado.

Nota: Los constructores padres no son llamados implicitamente si la clase hijo define un constructor. Para poder ejecutar el constructor de la clase padre, se debe hacer una llamada a parent::__construct() dentro del constructor de la clase hijo.

Ejemplo 19-6. Usando constructores unificados

<?php
class BaseClass {
   function
__construct() {
       print
"In BaseClass constructor\n";
   }
}

class
SubClass extends BaseClass {
   function
__construct() {
       
parent::__construct();
       print
"In SubClass constructor\n";
   }
}

$obj = new BaseClass();
$obj = new SubClass();
?>

Para tener compatibilidad con versiones anteriores, si PHP 5 no encuentra una función __construct() para una clase dada, buscará la forma de la función del constructor que se usaba anteriormente por el nombre de la clase. Efectivamente, esto significa que el único caso que puede tener compatibilidad es si la clase tiene un método llamado __construct() el cual fue usado para semánticas diferentes.

Destructores

void __destruct ( void )

PHP 5 introduce un concepto de destructor similar a aquellos de otros lenguajes de programación orientada a objetos, tal como C++. El método destructor será llamado tan pronto como todas las referencias a un objeto en particular sean removidas o cuando el objeto sea explícitamente destruido.

Ejemplo 19-7. Ejemplo de Destructor

<?php
class MyDestructableClass {
   function
__construct() {
       print
"In constructor\n";
       
$this->name = "MyDestructableClass";
   }

   function
__destruct() {
       print
"Destroying " . $this->name . "\n";
   }
}

$obj = new MyDestructableClass();
?>

Como los constructores, los destructores de la clase padre no serán llamados explícitamente por el compilador. Para ejecutar un destructor padre, se debe tener una llamada explícita a parent::__destruct() en el cuerpo del destructor.

Nota: El desctructor es llamado durante la finalización del script, de tal manera que los headers ya han sido enviados.

Hosting by: hurra.com
Generated: 2007-01-26 18:01:09