Escribir funciones y clases PHP
Funciones
1. Introducción
Al igual que otros lenguajes de desarrollo, PHP ofrece la posibilidad de definir sus propias funciones (llamadas funciones de «usuario») con todas las ventajas que ello supone (modularidad, capitalización…). Una función es un conjunto de instrucciones identificadas por un nombre, cuya ejecución devuelve un valor y cuya invocación puede utilizarse como operando en una expresión. Un procedimiento es un conjunto de instrucciones identificadas por un nombre que puede invocarse 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ámetros]) [: tipo] {
instrucciones;
}
nombre_función |
Nombre de la función (debe respetar las reglas para los nombres presentadas en el capítulo de Introducción a PHP - Estructura básica de una página PHP). Este nombre no diferencia entre mayúsculas y minúsculas (para PHP, las funciones unafuncion y UnaFuncion son la misma). |
parámetros |
Parámetros posibles de la función expresados en forma de una lista de variables (véase Parámetros): $parametro1, $parametro2… |
tipo |
Declaración del tipo de datos que devuelve la función. Valores posibles: int, float, string, bool, array ,callable , iterable, object, mixed, void, never, un nombre de clase o de interfaz (véase en el capítulo la sección Clases), una unión de tipos o una intersección de tipos. El nombre del tipo puede estar precedido de un punto de interrogación (?), lo que indica que la función puede devolver un valor NULL, salvo para los tipos siguientes: void, never, mixed (ya incluidos), unión de tipos (puede añadirse en la unión) e intersección de tipos. Véase el capítulo Introducción a PHP para la definición de los tipos de datos (apartado Las bases del lenguaje PHP - Tipos de datos). |
instrucciones |
Conjunto de las instrucciones que componen la función. |
El nombre de la función no debe ser una palabra reservada de PHP (nombre de función, de instrucción) ni ser igual al nombre de otra función previamente definida.
Una función de usuario se invoca como...
Clases
1. Concepto
PHP ofrece funcionalidades clásicas de programación orientada a objetos:
-
Definición de clase.
-
Utilización de los métodos constructor y destructor.
-
Nociones de propiedad o de método público, privado, protegido.
-
Herencia.
-
Nociones de clase o método abstracto, de clase o método final, de interfaz, de propiedad o método estático (de clase).
-
Excepciones.
-
Atributos (similares al concepto de anotación en Java o de decoradores en Python o en JavaScript, que aparecieron en la versión 8 y no se presentan en este libro).
Una clase es un tipo compuesto que agrupa variables (llamados propiedades de la clase) y funciones (llamadas métodos de la clase). En sí misma, un clase no contiene datos; es solo un modelo, una definición.
A partir de la clase, es posible definir («crear») objetos que tienen la estructura de la clase y que, en su caso, sí tienen datos.
En esta parte, presentaremos las características básicas utilizadas más a menudo: es una introducción práctica a la funcionalidad de objetos de PHP. Para saber más, 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 [type [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 para los nombres presentadas en el capítulo de Introducción a PHP). Este nombre no diferencia entre mayúsculas y minúsculas (para PHP, las clases unaclase y UnaClase son la misma). |
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 padres, véase la noción de herencia más adelante en este mismo capítulo), mixed, un nombre de clase o de interfaz (véase más adelante), una unión de tipos o una intersección... |
Espacios de nombres
Los espacios de nombres (namespace en inglés) permiten resolver dos problemas encontrados habitualmente con el uso de clases o librerías de funciones.
-
Utilización de un mismo nombre (clase, función, constante) en dos bibliotecas.
-
Manipulación de nombres particularmente largos que dejan el código difícil de escribir.
Un espacio de nombre se declara con la palabra clave namespace al principio del archivo, antes de cualquier otro código, excepto la instrucción declare, que está autorizada antes (si no, se produce un error fatal).
Ejemplo
<?php
// Definición del espacio de nombres
namespace MiLibreria;
// 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 nombres se puede definir en varios archivos, lo que permite organizar el código en varios archivos agrupándolo en el interior del mismo espacio de nombres.
Se pueden definir múltiples espacios de nombres en un mismo archivo, pero no es una buena práctica de programación.
Se puede definir un espacio de nombres con subniveles utilizando el separador barra invertida (\): MiLibreria\Sub\Nivel.
Por defecto, si no se define ningún espacio de nombres, todas las definiciones (clases, funciones, constantes) se ubican en el espacio de nombres global.
La constante __NAMESPACE__ alberga el nombre del espacio de nombres actual (cadena vacía en el espacio global).
El espacio de nombres puede usarse para cualificar un identificador (constante, función, clase) mediante el separador barra invertida (\) y determinar de este modo su origen. El nombre cualificado es relativo al espacio de nombres actual. En caso...