¡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
Extractos del libro
PHP 8 Desarrolle un sitio web dinámico e interactivo
2 opiniones
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 función permite introducir la definición de una función.

Sintaxis

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

nombre_función

Nombre de la función (debe respetar las reglas de denominación presentes en el capítulo Introducción a PHP - Estructura básica de una página PHP). En este nombre no se diferencian 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, un nombre de clase o de interfaz (véase en este capítulo la sección Clases) o una unión de tipos. El nombre del tipo se puede preceder por un punto de interrogación (?) que indica que la función puede devolver un valor NULL. En el capítulo Introducción a PHP puede encontrar la definición de los tipos de datos (apartado 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 de PHP (nombre de función nativa, de instrucción) ni ser igual al nombre de otra función definida de antemano.

Una función de usuario se puede llamar como una función nativa de PHP: en una asignación, en una comparación, etc.

Si la función devuelve un valor, es posible...

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

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

nombre_clase

Nombre de la clase (debe respetar las reglas de denominación explicadas en el capítulo Introducción a PHP - Estructura básica de una página PHP). En este nombre no se diferencian 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, un nombre de clase o de interfaz (véase más adelante)...

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...