Bueno ya esta es la publicación final de esta saga, hablaré de los constructores y destructores.
El constructor de una clase tiene como principal objetivo el de inicializar el objeto al ser instanciado, colocando así sus atributos en los valores deseados.
El constructor es una función, y como tal puede o no recibir párametros.
En PHP un ejemplo de constructor de una clase seria el siguiente:
public function __construct() {
}
Notemos que la función esta denotada así: __construct(), dos underscore ( __ ) y la palabra construct.
El destructor de una clase es muy similar a el constructor, la diferencia radica en que este es llamado cuando es destruido el objeto, en otras palabras eliminado de la memoria, claro es solo en teoria, su objetivo principal es devolver algún objeto o situación a su estado original, por ejemplo, cerrar conexiones con base de datos, o limpiar archivos temporales, o eliminar plantillas usadas, entre otras, ahora el concepto destructor no existe en PHP4 así que cuidado con eso.
El destructor no recibe parámetros.
Un ejemplo seria el siguiente:
public function __destruct() {
}
Posee una estructura igual al constructor pero con la palabra destruct, el destructor no funciona muy bien si se hereda esa clase, así que cuidado, dependiendo de lo que se haga sirve o no, y para saberlo se necesita experiencia.
Ejemplo:
Archivo: Estudiante.php
<?php
class Estudiante {//Inicio de la clase
//Atributos
private $id;
private $nombre;
//Funciones
public function __construct() {
$this->id=0;
$this->nombre="Null";
echo 'Construyendo <br/>';
echo 'Nombre: '.$this->nombre.', ID: '.$this->id.'<br/>';
}
public function __destruct() {
echo 'Destruyendo';
}
}//Fin de la clase
?>
Archivo: index.php
<?php
include 'Estudiante.php';
$estudiante = new Estudiante();
?>
Salida:
Construyendo
Nombre: Null, ID: 0
Destruyendo
Mejoremos el código, le colocaremos parámetros predefinidos al constructor:
Nuevo Archivo: Estudiante.php
<?php
class Estudiante {//Inicio de la clase
//Atributos
private $id;
private $nombre;
//Funciones
public function __construct($id=0,$nombre="Null") {//Parametros predefinidos
$this->id=$id;
$this->nombre=$nombre;
echo 'Construyendo <br/>';
echo 'Nombre: '.$this->nombre.', ID: '.$this->id.'<br/>';
}
public function __destruct() {
echo 'Destruyendo';
}
}//Fin de la clase
?>
¿Para qué se usan estos parámetros?, bueno si al instanciar el objeto no se pasan datos por parámetros estos serán los valores que tomaran las variable.
Ejemplo:
Nuevo Archivo: index.php
<?php
include 'Estudiante.php';
$estudiante = new Estudiante(2,"Pedro");
?>
Salida:
Construyendo
Nombre: Pedro, ID: 2
Destruyendo
Salida sin usar parámetros:
Construyendo
Nombre: Null, ID: 0
Destruyendo
Recuerda hacer preguntas si tienes dudas en algo...
Postear en Twitter
Postear en Facebook
Feed RSS
Agregar a Favoritos
Diego Escares el 20 de Julio del 2010:
0
Nada más que discutir, están muy buenos, funciona todo ok. Los tendré de referencia para cuando lo necesite, porque yo no uso esto. No me queda claro un gran uso de ellos, porque para cada ejemplo que das, yo me imagino creándolo de otro modo más simple.
¿Podrías darme ejemplos mucho más concretos de su uso?
sauljp07 el 20 de Julio del 2010:
+1
Bueno, este patron, y todo lo que implica, conceptos, interfaces, clases, entre otros, es muy util, ahora estaba explicando la teoria, pronto empezare a publicar usos extensos, y mas usados, pero para darte un ejemplo una utilidad principal son librerias, esto es framework, y no solo los que estan por ahi en la web, sino uno propio, si queremos crear una especie de marco de trabajo personal lo mejor es que nuestras librerias vallan ENCAPSULADAS en clases y en ellas todas sus funciones..
iadrian20 el 20 de Julio del 2010:
+1
Es verdad, " Null " hace cosas muy buenas sin usar la OOP mas que nada esto es para llevar un orden de desarrollo usando un equipo de desarolladores por ejemplo Las Interfaces que explicaste en un articulo anterior "Objetivo principal es obligar a las clases concretas a que implementen todos sus métodos abstractos" en realidad no es solo eso, las intefaces se usan durante el desarrollo principal del core del sistema, en un proyecto grande se necesitan ingenieros de software tantos diseñadores del software (Arquitectura) y programadores (Codigo) del mismo, en primera instancia los analistas son los que hacen toda esa arquitectura usando distintos patrones , pueden ser MVC, OOP, ORM. Te decia esto por que asisti a una charla de J2EE hace poco. Y yo tambien tenia la misma idea que muchos por aqui. Hay material muy bueno sobre el tema en Sun y Oracle
Saludos
sauljp07 el 20 de Julio del 2010:
+1
Por supuesto, cuando se trabaja con un grupo, se crea el Patrón Estrategico, que es la parte fundamental, ahi se selecciona el patron de diseño, y despues se creo el modelado, tal vez asi como dice null no se le ve importancia con proyectos personales o pequeños, porque siempre ahi una forma mas sencillad de hacerlo, cuando se trabaja con mas personas, es fundamental usar un patron y un modelado, usando interfaces, clases abstractas, entre otros, sino hay posibilidades de que el proyecto nunca salga a flote.
Diego Escares el 20 de Julio del 2010:
0
Perfecto, gracias a los dos por la aclaración.
Que genial aprender en mi propio sitio :D.
php, constructor, clase, objeto, asi, parametros, ejemplo, destructor, archivo, estudiante, index, nuevo
¡Amigo! te demorarás 10 segundos en crear tu cuenta.
Disfrutarás de todos los beneficios de DocumentoWeb.