PHP, la manera correcta

Capítulo 3. Lo mejor de PHP

3.1. Paradigmas de Programación

PHP es un lenguaje flexible y dinámico que permite usar gran variedad de técnicas de programación. El lenguaje ha evolucionado mucho en estos últimos años. La versión PHP 5.0 añadió en 2004 la posibilidad de programar orientado a objetos (en inglés, object-oriented), PHP 5.3 añadió funciones anónimas y espacios de nombres (en inglés, namespaces) y PHP 5.4 añadió en 2014 los traits.

3.1.1. Programación Orientada a Objetos

PHP tiene un conjunto de características muy completas que facilitan la programación orientada a objetos (también llamada OOP) que incluye la posibilidad de crear clases, clases abstractas, interfaces, herencia, constructores, clonación de objetos, excepciones y mucho más.

3.1.2. Programación Funcional

El lenguaje PHP también permite asignar funciones como valor de las variables. Así se pueden invocar dinámicamente tanto tus propias funciones como las funciones internas de PHP. Además las funciones se pueden pasar como argumentos a otras funciones (una característica llamada en inglés higher-order functions) y las funciones pueden devolver otras funciones.

Por otra parte, la recursividad es una característica que le permite a una función llamarse a sí misma. No obstante, la mayor parte de la programación PHP está orientada a código iterativo en vez de recursivo.

Las funciones anónimas con soporte para clausuras (en inglés, closures) están presentes en PHP desde la versión 5.3 (publicada en 2009).

En PHP 5.4 se añadió la posibilidad de vincular el ámbito de un objeto a las clausuras. También se mejoró el soporte de funciones de tipo callable, que ahora pueden utilizarse en cualquier lugar en el que también se puede utilizar una función anónima.

3.1.3. Metaprogramación

PHP soporta varias formas de metaprogramación por medio de características como la API Reflection y los métodos mágicos. PHP define muchos métodos mágicos, como por ejemplo __get(), __set(), __clone(), __toString(), __invoke(), que permiten a los programadores PHP meterse dentro del funcionamiento interno de una clase.

En ocasiones los programadores Ruby dicen que a PHP le falta la función de method_missing. Sin embargo, en PHP este mismo comportamiento se puede conseguir con los métodos mágicos __call() y __callStatic().