Ver Mensaje Individual
  #13 (permalink)  
Antiguo 29/12/2004, 09:45
Avatar de Calisco
Calisco
 
Fecha de Ingreso: marzo-2004
Ubicación: Neuquen
Mensajes: 732
Antigüedad: 20 años, 10 meses
Puntos: 4
Constructores y Destructores

Constructores y Destructores

Constructor
Código PHP:
void __construct ( [varios args [, ...]]) 
PHP 5 permite a los desarrolladores (programadores) declarar metodos constructores para las clases. Las clases que tienen un método constructor llaman a dicho método cada vez que se crea una instancia de ellas. Por eso, es conveniente para cualquier inicialización que el objeto pueda necesitar antes de ser usado.PHP 5 allows developers to declare constructor methods for classes. Classes which have a constructor method call this method on each newly-created object, so it is suitable for any initialization that the object may need before it is used.


Nota: Los constructores de las superclases no son llamados por defecto si sus subclases definen un constructor. Se require una llamada a parent::__construct() dentro del constructor de la subclase para que ordene la ejecucion del constructor de su clase madre.
Note: Parent constructors are not called implicitly if the child class defines a constructor.
In order to run a parent constructor, a call to parent::__construct() within the child constructor is required.


Ejemplo 19-6. Usando nuevo constructor unificado
Código PHP:
<?php
class ClaseBase {
   function 
__construct() {
       print 
"Constrcutor en la clase Base\n";
   }
}

class 
SubClase extends ClaseBase {
   function 
__construct() {
       
parent::__construct();
       print 
"Constructor en SubClase\n";
   }
}

$obj = new ClaseBase();
$obj = new SubClase();
?>
Por compatibilidad con versiones anteriores, si PHP5 no puede encontrar una funcion __construct() para una clase determinada, buscara un constructor al viejo estilo, mediante un metodo con el mismo nombre de la clase. En efecto, esto quiere decir que el unico caso en el que habría problemas de compatibilidad es si la clase tuvo un metodo llamado __construct () que ha sido usado con un sentido diferente.

For backwards compatibility, if PHP 5 cannot find a __construct() function for a given class, it will search for the old-style constructor function, by the name of the class. Effectively, it means that the only case that would have compatibility issues is if the class had a method named __construct() which was used for different semantics.
Aca necesito correccion


Destructor
Código PHP:
void __destruct void 
PHP 5 introduce el conpecto destructor similar al de otros lenguajes orientados a objetos, como C++. El metodo destructor sera llamado tan pronto como todas las referencias a un objeto en particular sean removidas o cuando el objeto es explicitamente destruido.
PHP 5 introduces a destructor concept similar to that of other object-oriented languages, such as C++. The destructor method will be called as soon as all references to a particular object are removed or when the object is explicitly destroyed.

Ejemplo 19-7. Ejemplo de Destructor
Código PHP:
<?php
class MiClaseDestruible {
   function 
__construct() {
       print 
"En el constructor\n";
       
$this->name "MiClaseDestruible";
   }

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

$obj = new MiClaseDestruible();
?>
Asi como los constructores, los destructores de las superclases no seran llamados implicitamente por el motor interprete. Para ordenar la ejecucion del destructor de una superclase, uno tendria que tener en forma explicita la llamada parent::__destruct () en el destructor de la subclase.
Like constructors, parent destructors will not be called implicitly by the engine. In order to run a parent destructor, one would have to explicitly call parent::__destruct() in the destructor body.
__________________
| Cabeza De Raton |

Última edición por Calisco; 04/01/2005 a las 07:57 Razón: Criticas de Jpinedo