¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. PHP 8
  3. Escribir funciones y clases PHP
Extrait - PHP 8 Desarrolle un sitio web dinámico e interactivo (2a edición)
Extractos del libro
PHP 8 Desarrolle un sitio web dinámico e interactivo (2a edición) Volver a la página de compra del libro

Escribir funciones y clases PHP

Funciones

1. Introducción

Al igual que en otros lenguajes de programación, PHP ofrece la posibilidad de definir sus propias funciones (llamadas funciones del «usuario») con todas las ventajas asociadas (modularidad, uso de mayúsculas...). Una función es un conjunto de instrucciones identificadas por un nombre, cuya ejecución devuelve un valor y cuya llamada se puede utilizar como operando en una expresión. Un procedimiento es un conjunto de instrucciones identificadas por un nombre que puede ser llamado como una instrucción. 

2. Declaración y llamada

La palabra clave function permite introducir la definición de una función.

Sintaxis

function nombre_función([parámetro]) [: tipo]{ 
  instrucciones; 
} 

nombre_función

Nombre de la función (debe respetar las reglas de los nombres presentes en el capítulo Introducción a PHP - Estructura básica de una página PHP). En este nombre no se diferencian entre mayúsculas y minúsculas (para PHP, las funciones unafunción y UnaFunción son las mismas).

parámetro

Parámetros posibles de la función expresados como una lista de variables (véase la sección Parámetros): $parámetro1, $parámetro2, ...

tipo

Declaración del tipo de datos devuelto por la función. Valores posibles: int, float, string, bool, array, callable, iterable, object, mixed, void, true, false, null, un nombre de clase o de interfaz (véase en este capítulo la sección Clases) o una unión o intersección de tipos. El nombre del tipo se puede preceder por un punto de interrogación (?), lo que indica que la función puede devolver un valor NULL, excepto para los siguientes tipos: void, never, null (que ya es NULL), mixed (ya incluido), unión de tipos (el tipo null puede añadirse a la unión) e intersección de tipos. Consulte el capítulo Introducción a PHP para la definición de los tipos de datos y la versión a partir de la cual se pueden utilizar algunos de ellos (véase la sección Las bases del lenguaje PHP - Tipos de datos).

instrucciones

Conjunto de instrucciones que componen la función.

El nombre de la función no debe ser una palabra reservada...

Clases

1. Concepto

PHP ofrece características clásicas de programación orientada a objetos:

  • Definición de clase.

  • Uso de métodos constructor y destructor.

  • Conceptos de propiedad o de método público, privado, protegido.

  • Legado.

  • Conceptos de clase o método abstracto, de clase o método final, de interfaz, de atributo, de propiedad o método estático (de clase).

  • Excepciones.

  • Atributos (similar a los conceptos de anotación en Java o de decorador en Python o en JavaScript, novedad de la versión 8 que no se presenta en este libro).

Una clase es un tipo compuesto que reagrupa variables (llamadas atributos de la clase) y funciones (llamadas métodos de la clase). Por sí misma, una clase no contiene ningún dato; es solo un modelo, una definición.

A partir de la clase, es posible definir («instanciar») objetos que tienen la estructura de la clase y que contienen datos.

En esta sección, vamos a presentar las características básicas más utilizadas: es una introducción práctica a las características orientadas a objetos de PHP. Para obtener más información, consulte la documentación de PHP.

2. Definir una clase

La palabra clave class permite introducir la definición de una clase.

Sintaxis

[readonly] class nombre_clase { 
// definición de las propiedades 
 [ 
 public | private | protected [tipo [readonly]] $propiedad [= expresión]; 
 ... 
 ] 
 // definición de los métodos 
 [ 
 [public | private | protected] function método() { 
  ... 
 } 
 ... 
 ] 
} 

nombre_clase

Nombre de la clase (debe respetar las reglas relativas a los nombres explicadas en el capítulo Introducción a PHP - Estructura básica de una página PHP). En este nombre no se diferencia entre mayúsculas y minúsculas (para PHP, las clases unaclase y UnaClase son las mismas).

tipo

Declaración del tipo de datos de la propiedad. Valores posibles: int, float, string, bool, array, iterable, object, self, parent (únicamente en una clase que tiene un padre, véase la noción de legado más adelante), mixed, true, false, null, un nombre de clase o de interfaz...

Espacios de nombres

Los espacios de nombres (namespace en inglés) permiten resolver dos problemas frecuentes en el uso de clases o de bibliotecas de funciones:

  • Uso de un mismo nombre (clase, función, constante) en dos bibliotecas.

  • Manipulación de nombres especialmente largos que hacen que el código sea difícil de escribir.

Un espacio de nombre se declara con la palabra clave namespace al principio de un archivo, antes de cualquier otro código, a excepción de la instrucción declare, que se autoriza antes (de lo contrario, se produce un error grave).

Ejemplo

<?php 
// Definición del espacio de nombre. 
namespace MiBiblioteca; 
// Definición de una constante. 
const UNO = 1; 
// Definición de una clase. 
class unaClase { 
  /* 
  ... 
  */ 
} 
// Definición de una función. 
function unaFunción() { 
  /* 
  ... 
  */ 
} 
?> 

El mismo espacio de nombre se puede definir en varios archivos, lo que permite organizar el código en varios archivos, agrupándolo dentro del mismo espacio de nombre.

Es posible definir varios espacios de nombres en un mismo archivo, pero no es una buena práctica de codificación.

Un espacio de nombre se puede definir con subniveles, utilizando el separador de la barra invertida (\): MiBiblioteca\Sub\Nivel.

De forma predeterminada, si no se define un espacio de nombre, todas las definiciones (clases, funciones, constantes) se colocan en el espacio de nombre global.

La constante __NAMESPACE__ da el nombre del espacio de nombre actual (cadena vacía en el espacio global).

El espacio de nombre se puede utilizar para cualificar un identificador (constante, función, clase) con el separador de barra invertida (\) y así precisar su origen. El nombre cualificado es relativo al espacio de nombre actual si no comienza...