PHP

PHP

PHP es un lenguaje de programación interpretado basado en scripts orientado a las páginas Web

No es un lenguaje de marcado como podría ser HTML,
XML o WML

Un programa PHP es ejecutado en el servidor y el resultado enviado al navegador

El resultado generalmente generará una página HTML, XML o WML

Al ser un lenguaje que se ejecuta en el servidor no es necesario que el navegador lo soporte, pero para que las páginas PHP funcionen, el servidor donde están alojadas sí debe soportarlo

Historia de PHP

Fue originalmente diseñado en lenguaje Perl, apoyándose en un conjunto de CGI binarios (un programa que se ejecuta en servidor web) escritos en el lenguaje C por el programador danés-canadiense Rasmus Lerdorf en 1994 para mostrar su currículum vítae y guardar ciertos datos, como la cantidad de tráfico que su página web recibía

El 8 de junio de 1995 fue publicado bajo el nombre de Personal Home Page Tools después de que Lerdorf lo combinara con su propio sistema para procesar formularios FI (Form Interpreter) dando como resultado el PHP/FI

El sistema Personal Home Page Tools adquirió relativo éxito gracias a que otras personas pidieron a Rasmus que les permitiese utilizar sus programas en sus propias páginas

Dos programadores israelíes del Technion, Zeev Suraski y Andi Gutmans, reescribieron el analizador sintáctico (parser) en 1997 y crearon la base del PHP 3, y cambiaron su nombre por el de PHP (Hypertext Preprocessor)

PHP3 se publicó oficialmente en junio de 1998

En 1999, Suraski y Gutmans reescribieron el código de PHP, y crearon lo que hoy se conoce como motor Zend. Fundando la empresa Zend Technologies en Ramat Gan, Israel

En mayo del 2000, PHP 4 se lanzó utilizando el nuevo motor Zend 1.0.

En su versión 4.1, lanzada el 10 de diciembre de 2001, se introdujeron las variables superglobales ($_GET, $_POST, $_SESSION, etc)

En su versión 4.2, lanzada el 22 de abril de 2002, se deshabilitaron los register_globals por defecto

Los datos recibidos por la red ya no eran insertados en el espacio de nombres global, cerrando posibles agujeros de seguridad en las aplicaciones

En su versión 4.3, lanzada el 27 de diciembre de 2002, se introdujerón el CLI (una interfaz de línea de comandos), y el CGI (una interfaz común para la entrada de datos)

En su versión 4.4, lanzada el 11 de julio de 2005, se añadieron páginas de documentación man para phpize y php-config

El 13 de julio del 2007 se anunció la suspensión del soporte y desarrollo de la versión 4 de PHP

Sin embargo se liberó la nueva versión 4.4.8 con mejoras de seguridad, que se publicó el 13 de enero del 2008 y posteriormente la versión 4.4.9, que fue publicada el 7 de agosto del 2008

Y se le dio soporte a fallos críticos hasta el 9 de agosto del 2008

El 13 de julio del 2004, se lanzó PHP 5, utilizando el mejorado motor Zend Engine 2.0 (o Zend Engine 2)

En su versión 5.1, lanzada el 24 de noviembre de 2005, se añadieron mejoras de rendimiento con la introducción de las variables de compilador para su nuevo motor de PHP

En su versión 5.2, lanzada el 2 de noviembre de 2006, se añadió soporte nativo para JSON (tipo de objetos javascript)

En su versión 5.3, lanzada el 30 de junio de 2009, se añadió:

  • soporte para espacios de nombres
  • enlace estático en tiempo de ejecución
  • la etiqueta de salto (GOTO)
  • las clausuras nativas
  • soporte nativo para los archivos PHP (phar)
  • un recolector de basura para referencias circulares
  • soporte mejorado para Windows, sqlite3 y mysqlnd como reemplazo a libmysql como la biblioteca para las extensiones que funcionaba con la base de datos MySQL
  • la inclusión de fileinfo para reemplazar la función mime_magic para mejorar el soporte para las extensiones internacionales MIME y eliminar la obsoleta etiqueta ereg

En su versión 5.4, lanzada el 1 de marzo de 2012, se añadió soporte para Trait y una sintaxis abreviada de trabajar con arrays

Se eliminaron los siguientes elementos por ser considerados obsoletos: register_globals, safe_mode, allow_call_time_pass_reference, session_register(), session_unregister() y session_is_registered()

En su versión 5.5, lanzada el 20 de junio de 2013, se añadieron los nuevos generadores para bucles y la función empty() soporta expresiones

También se abandonó el soporte para Windows XP y Windows Server 2003

En su versión 5.6, lanzada el 20 de agosto de 2014, se añadieron las constantes con expresiones escalares, las listas de argumentos de longitud variable y el exponencial mediante el operador **

El desarrollo de PHP 6 fue retrasado porque los desarrolladores decidieron que el enfoque que se seguía para tratar las cadenas Unicode no era el correcto, y empezaron a tratar formas alternativas antes de lanzar esta versión

Todas las mejoras que estaban planeadas para PHP 6, en cambio, fueron añadidas en PHP 5.3.0 (el soporte para espacios de nombre, el enlace estático en tiempo de ejecución, las funciones lambda, las clausuras, la etiqueta GOTO) y en la 5.4.0 (traits, revinculación de clausuras)

Al final se abandonó definitivamente la versión 6 en favor de la 7

La versión 7.0, fue lanzada el 03 de noviembre de 2015, se añadieron mejoras de rendimiento y la declaración de los tipos de retorno para las funciones

En su versión 7.1, lanzada el 01 de diciembre de 2016, se añadieron el tipo de retorno null,​ el modificador de visibilidad de clase const, el tipo nullable, los iteneradores de tipo seudo, la captura de múltiples tipos de excepciones

En su versión 7.2, lanzada el 30 de noviembre de 2017, se añadió el nuevo tipo de retorno object y la integración de Libsodium como una extensión del núcleo

En su versión 7.3, lanzada el 6 de diciembre de 2018, se añadió una sintaxis flexible para Nowdoc y Heredoc, soporte para referencias y deconstrucción de arrays con list(), soporte para PCRE2, función hrtime()

La versión 7.4 fue lanzada el 28 de octubre de 2019 y llegó al final de su vida útil el 28 de noviembre de 2022

En su versión 8.0, lanzada el 26 de octubre de 2020, se añadieron nuevas características y se incremento su rendimiento

En su versión 8.1, lanzada el 25 de octubre de 2021, se añadieron las propiedades readonly, Enums, Fiber y nuevas sintaxis

En su versión 8.2, lanzada el 08 de diciembre de 2022, se añadió el atributo AllowDynamicProperties y se desaprobó la creación de propiedades dinámicas

Programación en PHP

Para poder utilizar PHP previamente deberemos instalarlo en nuestro servidor

Si además queremos utilizar una base de datos podemos usar conjuntamente con PHP el gestor de base de datos liviano Mysql

O si queremos una versión que lleve todo incluido, además de servidores adicionales como un servidor de correo, un servidor de ficheros o el interprete Tomcat para Java, podemos usar la distribución gratuita de Apache Friends, XAMPP

Una vez instalado nuestro servidor y el modulo de PHP está activo y configurado, podremos iniciar nuestros programas escritos en PHP en nuestras páginas Web

En el ejemplo se ha incrustado el código PHP en el propio HTML, pero esta no es la única forma en la que podremos incluirlo

Podemos ver que este sencillo script CGI no es igual a otro escrito en otro los lenguajes Perl o C

En vez de escribir un programa completo con todos los comandos necesarios para generar la salida HTML, escribimos directamente el código HTML con el código PHP embebido (incrustado) en el mismo HTML, lo que producirá la salida (en el ejemplo, producirá el texto que queremos que se muestre la etiqueta body)

Para incluir el código PHP deberemos utilizar las etiquetas especiales de comienzo <?php y final ?> que nos permitirán entrar y salir del interprete zend de PHP

Podemos usar 4 formas para salir de HTML y entrar en al interprete PHP:

  • usando las etiquetas de comienzo <?php y final ?>

  • usando la versión abreviada de las etiquetas de comienzo <? y final ?>

    A partir PHP 7 esta forma está obsoleta

  • usando la versión ASP de las etiquetas de comienzo <% y final %>

    A partir PHP 7 esta forma está obsoleta

  • adjuntando al documento HTML los comandos como un fichero de script

También podemos referenciar directamente un fichero con extensión .php el cuál podremos cargar dentro cualquier lugar del documento HTML mediante la función include

Sin embargo, abusar de esta práctica puede llegar a obligarnos a copiar una y otra vez la función include en todos nuestros ficheros HTML

Por esta razón se recomienta utilizar un archivo index.php que genere el HTML que recibirá el navegador y en el que se cargarán sólo los includes que la página necesite

Separación de las instrucciones

Al igual que en los lenguajes C o Pascal, las sentencias terminan usando el punto y coma

La etiqueta de cierre %> también implica el fin de la sentencia en el caso de que no haya más código PHP, por lo que en el ejemplo son equivalentes

Comentarios en PHP

PHP soporta comentarios tipo C, C++ o de Shell de Unix