8 de noviembre de 2009

PHP: Un ejemplo sencillo de clase para PHP5


Hace poco publiqué aquí un ejemplo muy sencillito de una clase para PHP4.

Bueno, pues ahora os he preparado otro ejemplo de clase, pero esta vez para PHP5. ¿Hay diferencias con respecto a PHP4? Pues las hay, y bastantes, PHP5 da un soporte mucho más amplio a la POO que su antecesor.

Os pongo aquí el ejemplo:
<?php

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

    function __construct($nombre,$numero){
       $this->nombre=$nombre;
       $this->numero=$numero;
       $this->peliculas_alquiladas=array();
      
       echo "Nuevo cliente: ".$nombre."
";
    }

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

//instanciamos un par de objetos cliente
$cliente1 = new cliente("Pepe", 1);
$cliente2 = new cliente("Roberto", 564);
$cliente3 = new cliente("Gabriel", 146);
$cliente4 = new cliente("Sergio", 225);

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

?>


Cómo veis en esta clase de ejemplo disponemos de un constructor, cosa que no había de manera nativa en PHP4, podíamos emularlo, pero no es lo mismo.

El constructor de la clase es un método que se ejecuta cuando se instancia esta en un objeto (en el ejemplo cuando damos valor a $cliente1 por ejemplo). Naturalmente si hay un constructor también hay un destructor. Afortunadamente -o no- en PHP los objetos se destruyen cuando termina la ejecución así que no nos toca destruirlos manualmente para liberar memoria, aunque es una buena práctica hacerlo para optimizar el gasto de la máquina.