04. Tipos de clases en PHP

Documentación oficial

Antes de comenzar a leer libros de diferentes autores, de las mejores cosas que se pueden hacer es echar un vistazo y leer la documentación oficial del lenguaje de programación que estemos estudiando, ya que va a ser nuestra mejor amiga.

Una de las ventajas de PHP es que la toda la documentación la tenemos en idioma español, la podemos encontrar en el siguiente enlace:

Clases en PHP

Veamos el ejm de sintaxis de una clase PHP

Ejm

<?php
class NombreClase {
   var $un_atributo;
   function un_metodo(){
   }
}
?>

Buenas prácticas

Una de las cosas que podemos hacer con PHP (muy criticado en ocasiones) es que podemos mezclar HTML con PHP, lo que se vuelve algo enrevesado. Lo que tendríamos que hacer es generar páginas con puro código PHP.

Otra muy buena práctica, los nombres de clases siempre van a ir en UpperCamelCase (la primera letra de cada palabra en MAYÚSCULAS). Para crear atributos ponemos la palabra reservada var y después el signo de dólar ($) seguido del nombre del atributo. La palabra var como tal no va a ser tan necesaria cuando veamos los modificadores de acceso. Los métodos siempre se crean con la palabra reservada function seguida del nombre del método, los paréntesis y las llaves, donde escribiremos el código a ejecutar.

Nota: Como curiosidad, PHP significa Personal Home Page.

Instanciar una clase

Para instanciar una clase debemos utilizar la siguiente sintaxis.

Ejm

$objeto = new nombreClase();

De esa manera estamos creando un objeto dependiente de la clase nombreClase que creamos en el ejm de más arriba.

Herencia de clases

Los objetos pueden heredar propiedades y métodos de otros, mediante la extensión (herencia) de clases, cuya característica representa la relación existente entre diferentes objetos. Para definir una clase como extensión de otra en PHP se utiliza la palabra reservada extends. La herencia en PHP se da de una clase a otra, es decir, una clase sólo puede heredar las características de otra clase madre. En PHP no existe lo que se denomina herencia múltiple, es decir, una clase no puede heredar de 2 o más clases padre, sin embargo, sí que ofrece un mecanismo denominado interface que hace la función de herencia múltiple como existe en otros lenguajes de programación.

Ejm

<?php
class ClasePadre {
    // CLASE PADRE
    var $atributo;
    function metodo(){
    }
}

class ClaseHija extends ClasePadre {
    /*
    ESTA CLASE HEREDA TODOS LOS MÉTODOS Y PROPIEDADES
    DE LA CLASE PADRE ClasePadre
    */
}
?>

La clase hija puede acceder a todos los métodos y propiedades de la clase padre, dependiendo su modificador de acceso (dependiendo de su privacidad). Por ejm una clase hija no puede ver un recurso privado de una clase padre, pero sí que puede ver un recurso protegido o un recurso público.

Tipos de clases

En PHP podemos encontrar diferentes tipos de clases:

  • Clases normales
  • Clases abstractas
  • Clase final

Clases abstractas

Las clases abstractas son aquellas que no necesitan ser instanciadas, es decir, no se necesita crear un objeto para poder utilizarlas, pero, sin embargo serán heredadas en algún momento. Su finalidad es la de declarar clase genéricas que necesitan ser declaradas, pero a las cuales no se puede otorgar una definición precisa. Es posible también declarar métodos abstractos.

Esta es la sintaxis que se debe utilizar para declarar una clase abstracta.

Ejm

<?php
abstract class ClaseAbstracta {
    var $atributo_abstracto;
    function metodo_abstracto();
}
?>

Cuando una clase tiene métodos abstractos, dichos métodos tienen que ir sin cuerpo, es decir, no tendrán el cuerpo que se incluye entre las llaves que es el código que se ejecutará en el caso de llamar al método de la clase, esta es la diferencia entre una clase instanciable y una clase abstracta, las clases abstractas sólo van a tener declarados los nombres de los métodos, la programación de dichos métodos se desarrollaría en la clase que herede esta clase abstracta. Las clases abstractas nos sirven a manera de modelo de otras clases.

Nota: No se pueden definir la programación de los métodos en una clase abstracta, será en su clase hija donde se defina toda su programación. Tampoco se pueden generar objetos de esta clase, es decir, no se pueden instanciar las clases abstractas.

Clase final

Las clases finales no pueden ser heredadas por otras, es por ello que se denominan clases finales. Se definen anteponiendo la palabra clave final, de la siguiente manera:

Ejm

<?php
final class ClaseFinal {
    var $atributo_final;
    function metodo_final();
}
?>

Que tipo de clase debo declarar

 

Clase que pueda Instanciable Abstracta Heredada Final
Ser instanciada y/o heredada (las comunes) No No No
Guardar relación con método y atributos de otra No No No
Servir de modelo para otras, sin que pueda instanciarse No No No
Instanciarse pero que no pueda ser heredada No No No
Scroll al inicio