¡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 7
  3. Escribir funciones y clases PHP
Extrait - PHP 7 Desarrollar un sitio web dinámico e interactivo (2ª edición)
Extractos del libro
PHP 7 Desarrollar un sitio web dinámico e interactivo (2ª 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 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).

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 (novedad de la versión 7). Valores posibles: array, float, int, string, bool, callable (el valor devuelto es un nombre de función al que se puede llamar), iterable (el valor devuelto es una tabla o una clase que implementa la interfaz Traversable, es decir que se puede recorrer con ayuda de la instrucción foreach - aparecido en versión 7.1), void (no devuelve nada, aparecido en versión 7.1), object (un objeto - aparecido en versión 7.2), o un nombre de clase o de interfaz (véase en este capítulo la sección Clases). Después de la version 7.1, el nombre del tipo se puede preceder por un punto de interrogación (?) que indica que la función puede devolver un valor NULL.

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

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 atributo 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 o método estático (de clase).

  • Excepciones.

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 los atributos 
[ 
public | private | protected $atributo [= 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).

$atributo

Nombre de una variable que corresponde a un atributo de la clase.

expresión_escalar

Valor inicial del atributo. Solo se aceptan las expresiones literales, las constantes y las expresiones que implican únicamente expresiones literales, constantes y operadores; las variables y las llamadas de función no están permitidas.

método

Definición de una función que corresponde a uno de los métodos de la clase.

La visibilidad de los atributos y los métodos se define por una de las siguientes palabras clave:

public

El atributo o método es público y se puede acceder a él desde el exterior de la clase.

private

El atributo o método es privado...

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 con una barra invertida; de lo contrario...