PHP (07) POO (01) Clases

La programación orientada a objetos comienza por las clases, las clases definen el tipo de objeto, y el objeto es una instancia de la clase…

Una vez que tenemos creada la clase es posible crear objetos de esa clase.

Así es como lo definen muchos manuales, y la verdad es que es un infierno, pero… ¿cómo podemos definir todo esto de forma que se pueda entender claramente?

Bueno como reza el credo de este blog, “Me lo contaron y lo olvide, lo ví y lo entendí, lo hice y lo aprendí“. De modo que vayamos destripando todo esto.

Lo que tenemos que tener claro es que las clases son lo principal en la programación orientada a objetos de modo que debemos de definirlas de la siguiente manera:

  • Se utiliza la palabra reservada class.
  • Se nombran con la primera letra en mayúscula.
  • Las clases pueden tener propiedades, que son características que van a definir al objeto.

En el siguiente ejemplo vamos a crear una clase llamada persona (Todo un clásico de la programación), y que va a tener una propiedad denominada nombre.

<?php
 class Person
 {
  var $nombre;
 }
?>

Como podemos ver la propiedad se declara como una variable con la palabra reservada var delante.

Dentro de una clase se pueden declarar métodos (funciones), tal y como lo hemos hecho hasta ahora.

En el ejemplo vamos a introducir una función que sirva para captar el nombre pasándoselo como un argumento y haciendo que acceda de forma global a la propiedad, aunque en POO no se utiliza la palabra global, si no $this, que apunta al objeto actual:

<?php
 class Person
 {
  var $nombre;

  function set_nombre($dato)
  {
   $this->nombre = $dato;
  }
  ....
 }
?>

De esta forma se hace que el objeto actual almacene como valor el dato que se le envía como argumento a la función set_nombre.

Pero también hará falta alguna forma de de leer el nombre de la persona y de devolverlo, de modo que se puede crear otro método que sea get_nombre de la siguiente forma:

<?php
 class Person
 {
  var $nombre;

  function set_nombre($dato)
  {
   $this->nombre = $dato;
  }

  function get_nombre()
  {
   return $this->nombre;
  }
 }
?>

De esta forma tenemos terminada nuestra clase, pero aun no hace nada, debemos de crear objetos.

Hay que tener en consideración que cada propiedad debe de tener sus dos métodos set y get, para poder trabajar más adelante con ellas.

No te preocupes, lee la entrada de objetos y seguirás comprendiendo todo esto.