Constructores en PHP 5

Valoración del artículo:
Vamos a ver qué es un constructor y para que sirven, además de un sencillo ejemplo de una clase que define un constructor.
Publicado: 14/12/04
Atención: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright.
Los constructores se encargan de resumir las acciones de inicialización de los objetos. Cuando se instancia un objeto, se tienen que realizar varios pasos en su inicialización, por ejemplo dar valores a sus atributos y eso es de lo que se encarga el constructor. Los constructores pueden recibir unos datos para inicializar los objetos como se desee en cada caso.

La sintaxis para la creación de constructor varía con respecto a la de PHP 3 y 4, pues debe llamarse con un nombre fijo: __construct(). (Son dos guiones bajos antes de la palabra "construct")

A lo largo de los ejemplos de este manual vamos a ir creando un código para gestión de un videoclub. Vamos a empezar definiendo una clase cliente, que utilizaremos luego en nuestro programa.

class cliente{
    var $nombre;
    var $numero;
    var $peliculas_alquiladas;

    function __construct($nombre,$numero){
       $this->nombre=$nombre;
       $this->numero=$numero;
       $this->peliculas_alquiladas=array();
    }

    function dame_numero(){
       return $this->numero;
    }
}


El constructor en esta clase recibe el nombre y número que asignar al cliente, que introduce luego en sus correspondientes propiedades. Además inicializa el atributo películas_alquiladas como un array, en este caso vacío porque todavía no tiene ninguna película en su poder.
Nota: En programación orientada a objetos $this hace referencia al objeto sobre el que se está ejecutando el método. En este caso, como se trata de un constructor, $this hace referencia al objeto que se está construyendo. Con $this->nombre=$nombre; estamos asignando al atributo “nombre” del objeto que se está construyendo el valor que contiene la variable $nombre, que se ha recibido por parámetro.

Luego hemos creado un método muy sencillo para poder utilizar el objeto. Vamos a ver unas acciones simples para ilustrar el proceso de instanciación y utilización de los objetos.

//instanciamos un par de objetos cliente
$cliente1 = new cliente("Pepe", 1);
$cliente2 = new cliente("Roberto", 564);

//mostramos el numero de cada cliente creado
echo "El identificador del cliente 1 es: " . $cliente1->dame_numero();
echo "El identificador del cliente 2 es: " . $cliente2->dame_numero();


Este ejemplo obtendría esta salida como resultado de su ejecución:

El identificador del cliente 1 es: 1
El identificador del cliente 2 es: 564

Comentarios
Fueron enviados 5 comentarios al artículo
2 comentarios no revisados
3 comentarios revisados:
Por: jurix
18/3/05
Creo recordar que a la hora de declarar las variables miembro de la clase no se utiliza var (ha quedado desaprobado, creo!!) en php5, sino que directamente el método de acceso public, private, protected $nombreVariable;

public $numero;
private $usuario;

Por: Gustavo
20/11/07
Quisiera saber si en PHP se puede utilizar más de un constructor como puede hacerse en C++ con distintos tipos de datos de iniciación.
Por: Sidh
27/2/08
Un apunte q puede ser interesante, y que no se hace referencia en el articulo, sobre todo para novatos es que ademas de "inicializar" propiedades mediante el uso de constructores, en el cuerpo de estos podemos inicializar cualquier propiedad que deseemos como resultado del valor devuelto por un método.
Por poner un ejmplo.
Tengo una clase sencilla cuyo constructor me inicializa algunos valoes de la fecha y en el que ademas quiero verificar si el año actual es un año bisiesto o no.
El constructor seria parecido a este:
class fechas
{
public $mes;
public $dia;
public $año;
public $limite;
public $bisiesto;

function __construct()
{
$fecha=getdate();
$this->mes=$fecha[mon];
$this->dia=$fecha[mday];
$this->año=$fecha[year];
$this->bisiesto=$this->es_bisiesto();
$this->limite=$this->calcula_limite();
}
private function es_bisiesto()
{
if(($this->año%4==0 && $this->año%100!=0)|| $this->año%400==0)
return true;
else
return false;
}
}

De esta forma al llamar al metodo es_bisesto en el constructor de la clase inicializaremos el valor de la propiedad bisiesto a true o false en funcion de si es un año bisiesto o no. Los metodos llamados en el constructor siempre tienen q devolver algun valor a la hora de ser asignados a una propiedad.
Asi cuando en nuestor codigo llamemos a la clase:
$fecha=new fechas() podremos manejar el resultado de la propiedad bisiesto para darle la funcionalidad q deseemos.

Manuales relacionados
Categorias relacionadas
El autor
Lectura recomendada
Compra este libro en Agapea, la librería urgente a domicilio.
Últimas noticias
Alojados en el grupo