Notas

JUEVES 14 DE ABRIL DE 2011

Sobre PHP: las clases

De un tiempo a esta parte he estado muy interesado en los llamados sitios web "dinámicos". Brevemente explicado, los sitios web se diferencian en estáticos y dinámicos. Un sitio web estático (o popularmente llamado "página web") es aquel que solo tiene la finalidad de presentar información sin que el usuario o visitante pueda cambiar algo en el mismo.

Este blog, por ejemplo, si yo le quito la opción de recibir comentarios, sería un sitio estático, pues lo que estás viendo o leyendo no lo puedes cambiar o modificar. Es decir, no podrías interactuar con este blog. Un sitio web dinámico, en cambio, es aquel en el cual el visitante puede comentar, modificar e interactuar con el mismo. Sitios como Facebook, Twitter, Flickr, Youtube, entre otros, son sitios web dinámicos, en donde el usuario tiene una participación más activa.

Existen varios lenguajes de programación para crear un sitio web dinámico. Yo me decanté por uno: PHP. No podría decir que tengo un vasto conocimiento sobre este lenguaje. Pero sé mucho más de lo que sabía ayer. Es un lenguaje que me fascina. Y, aunque he aprendido bastante, debo reconocer que hay algunas cosas que no entiendo, por más empeño que le hago.

CLASES

Una de las cosas que me han resultado más difíciles de entender de PHP son las clases. Y, si algo puedo decir en mi defensa con respecto a esto, es que algunos textos que enseñan el tema de PHP complican mucho las cosas. No me gustan esos típicos ejemplos del tipo:

(a * b) + c = d

... la verdad, en el colegio nunca pude aprender con ese tipo de ejemplos. ¿Por qué no exponen ejemplos prácticos? Ejemplos de la vida real. Eso es mucho más fácil de digerir. Por ejemplo, (y valga la redundancia) uno de los ejemplos que se exponen en cierto manual de PHP para explicar el funcionamiento de las clases es el siguiente:

class nombreClase  {
    public $nombreVariable;

    public function nombreFuncion()  {
        return $this->nombreVariable;
    }
}

$nombreInstancia = new nombreClase();
$nombreInstancia->nombreVariable = 'valor';

echo $nombreInstancia->nombreFuncion();

¡Rayos! Y ojo, que no estoy diciendo que el manual sea malo, pero ese ejemplo me dejó más que enrredado. Pero en fin, ese traspié no me impidió seguir investigando. Y así lo hice :).

Uno de los sitios a los que siempre recurro es DesarrolloWeb. En él encontré un Manual PHP5 muy bueno, de fácil comprensión y, lo que más me agradó, con ejemplos super prácticos. El tema de las clases está muy bien explicado. No transcribiré aquí ninguno de los artículos ni ejemplos del manual, pues, según advierte una nota del sitio, Atención: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright.. Sin embargo, trataré de hacer mis propios ejemplos, basándome en los del manual, y los presentaré en los próximos días.

INTERFACE

Bueno pues, otra cosa que no me queda muy claro con respecto a las clases en PHP (y esto ya es solo falta de comprensión de mi parte) son las llamadas interface. Según se define en cierto manual, una interface es un conjunto de métodos que deberían definir, de manera obligatoria, las clases que la implementarán. Es decir, juntamos un grupo de métodos o funciones dentro de una interface, y luego hacemos referencia a ella desde la clase en donde queremos que opere. Por ejemplo, declaramos unos cuantos métodos dentro de una interface a la que llamaremos Acciones:

interface Acciones  {
    public function Comer();
    public function Caminar();
    public function Correr();
}

Ahora bien, se supone que estos métodos están disponibles para que pueda utilizarlos en alguna clase, como lo siguiente:

class Personas implements Acciones  {
    public $nombre;

    function Comer()  {
        return "Estoy comiendo";
    }
}

$Individuo_1 = new Personas;
echo $Individuo_1->Comer();

Digo, ¿cumple alguna función práctica esto? Si yo a la clase le quito el código implements Acciones, la función o método Comer() que defino dentro de la clase funciona igual. Entonces, ¿qué función práctica cumplen las interface, aparte de enumerar los métodos que luego se repetirán en las clases?

Seguramente algo se me escapa que no logro visualizar bien. Si alguien tiene claro el punto y se maneja con respecto a este tema, siéntase libre de comentar y compartir sus conocimientos.


| Escribe tu comentario desde aquí.