Logo de IMECAF - Instituto Mexicano de Contabilidad, Administración y Finanzas
INSTITUTO MEXICANO DE CONTABILIDAD, ADMINISTRACIÓN Y FINANZAS

¿Qué es PHP?

Cuando nos hablan de PHP, salvo que uno sea programador o alguien dedicado al diseño avanzado de páginas web, es muy probable que no sepamos a qué se refiere ese término. Sin embargo, siendo que es una herramienta muy ampliamente utilizada en internet, es convienente conocerla.

Comenzaremos por la versión corta sobre qué es PHP. Según el sitio oficial de PHP, php.net, la definición de PHP es:

PHP (acrónimo de PHP: Hypertext Preprocessor) es un lenguaje de código abierto muy popular especialmente adecuado para desarrollo web y que puede ser incrustado en HTML.

Esto, realmente no nos dice mucho, sin embargo, viendo el siguiente ejemplo quedará más claro:

<!DOCTYPE HTML PUBLIC «-//W3C//DTD HTML 4.01 Transitional//EN»
«http://www.w3.org/TR/html4/loose.dtd»>
<html>
<head>
<title>Example</title>
</head>
<body>

<?php
echo «Hola, ¡soy un script PHP!»;
?>

</body>
</html>

En lugar de usar muchos comandos para mostar HTML (como en C o Perl), las páginas PHP contienen HTML con código incluido en el mismo que hace «algo» (en este caso, mostrar «Hola ¡soy un script PHP!). El código PHP está entre medio de etiquetas de comienzo y final especiale s<?php y ?> que nos permitirán entrar y salir del «modo PHP».

Lo que distingue a PHP de algo lado-cliente como Javascript, es que el código es ejecutado en el servidor, generando HTML y enviándolo al cliente. El cliente recibirá los resultados de ejecutar el script, sin ninguna posibilidad de determinar qué código ha producido el resultado recibido. El servidor web puede ser incluso configurado para que procese todos los archivos HTML con PHP y entonces no hay manera que los usuarios puedan saber que tienes debajo de la manga.

Lo mejor de usar PHP es que es extremadamente simple para el principiante, pero a su vez, ofrece muchas características avanzadas para los programadores profesionales. No sienta miedo de leer la larga lista de características de PHP, en poco tiempo podrá empezar a escribir sus primeros scripts.

Aunque el desarrollo de PHP está centrado en programación de scripts en lado-servidor, se puede utilizar para muchas otras cosas.

Ahora, para una definición más extensa y con algo de historia y carácterísticas más específicas sobre este poderoso lenguaje y herramienta, a continuación les mostramos un interesante artículo sobre este tema, según Wikipedia:

PHP es un lenguaje de programación de uso general de script del lado del servidor originalmente diseñado para el desarrollo web de contenido dinámico. Fue uno de los primeros lenguajes de programación del lado del servidor que se podían incorporar directamente en el documento HTML en lugar de llamar a un archivo externo que procese los datos. El código es interpretado por un servidor web con un módulo de procesador de PHP que genera la página Web resultante. PHP ha evolucionado por lo que ahora incluye también una interfaz de línea de comandos que puede ser usada en aplicaciones gráficas independientes. PHP puede ser usado en la mayoría de los servidores web al igual que en casi todos los sistemas operativos y plataformas sin ningún costo.

PHP fue creado originalmente por Rasmus Lerdorf en 1995. Actualmente el lenguaje sigue siendo desarrollado con nuevas funciones por el grupo PHP. Este lenguaje forma parte del software libre publicado bajo la licencia PHP que es incompatible con la Licencia Pública General de GNU debido a las restricciones del uso del término PHP.

Visión general

PHP es un acrónimo recursivo que significa PHP Hypertext Pre-processor (inicialmente PHP Tools, o, Personal Home Page Tools). Fue creado originalmente por Rasmus Lerdorfen 1994; sin embargo la implementación principal de PHP es producida ahora por The PHP Group y sirve como el estándar de facto para PHP al no haber una especificación formal. Publicado bajo la PHP License, la Free Software Foundation considera esta licencia como software libre.

Puede ser desplegado en la mayoría de los servidores web y en casi todos los sistemas operativos y plataformas sin costo alguno. El lenguaje PHP se encuentra instalado en más de 20 millones de sitios web y en un millón de servidores, el número de sitios en PHP ha compartido algo de su preponderante dominio con otros nuevos lenguajes no tan poderosos desde agosto de 2005. El sitio web de Wikipedia está desarrollado en PHP. Es también el módulo Apache más popular entre las computadoras que utilizan Apache como servidor web.

El gran parecido que posee PHP con los lenguajes más comunes de programación estructurada, como C y Perl, permiten a la mayoría de los programadores crear aplicaciones complejas con una curva de aprendizaje muy corta. También les permite involucrarse con aplicaciones de contenido dinámico sin tener que aprender todo un nuevo grupo de funciones.

Aunque todo en su diseño está orientado a facilitar la creación de sitios webs, es posible crear aplicaciones con una interfaz gráfica para el usuario, utilizando la extensión PHP-Qto PHP-GTK. También puede ser usado desde la línea de órdenes, de la misma manera como Perl o Python pueden hacerlo; a esta versión de PHP se la llama PHP-CLI (Command Line Interface).

Cuando el cliente hace una petición al servidor para que le envíe una página web, el servidor ejecuta el intérprete de PHP. Éste procesa el script solicitado que generará el contenido de manera dinámica (por ejemplo obteniendo información de una base de datos). El resultado es enviado por el intérprete al servidor, quien a su vez se lo envía al cliente. Mediante extensiones es también posible la generación de archivos PDF, Flash, así como imágenes en diferentes formatos.

Permite la conexión a diferentes tipos de servidores de bases de datos tales como MySQL, PostgreSQL, Oracle, ODBC, DB2, Microsoft SQL Server, Firebird y SQLite.

PHP también tiene la capacidad de ser ejecutado en la mayoría de los sistemas operativos, tales como Unix (y de ese tipo, como Linux o Mac OS X) y Microsoft Windows, y puede interactuar con los servidores de web más populares ya que existe en versión CGI, módulo para Apache, e ISAPI.

PHP es una alternativa a las tecnologías de Microsoft ASP y ASP.NET (que utiliza C# y Visual Basic .NET como lenguajes), a ColdFusion de la empresa Adobe, a JSP/Java y aCGI/Perl. Aunque su creación y desarrollo se da en el ámbito de los sistemas libres, bajo la licencia GNU, existe además un entorno de desarrollo integrado comercial llamadoZend Studio. CodeGear (la división de lenguajes de programación de Borland) ha sacado al mercado un entorno de desarrollo integrado para PHP, denominado ‘Delphi for PHP. También existen al menos un par de módulos para Eclipse, uno de los entornos más populares.

Historia de PHP

Fue originalmente diseñado en Perl, con base en la escritura de un grupo de CGI binarios escritos en el lenguaje C por el programador danés-canadiense Rasmus Lerdorf en el año 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 «Personal Home Page Tools» después de que Lerdorf lo combinara con su propio Form Interpreter para crear PHP/FI.

Dos programadores israelíes del Technion, Zeev Suraski y Andi Gutmans, reescribieron el analizador sintáctico (parser en inglés) en el año 1997 y crearon la base del PHP3, cambiando el nombre del lenguaje a la forma actual. Inmediatamente comenzaron experimentaciones públicas de PHP3 y fue publicado oficialmente en junio de 1998.

Para 1999, Suraski y Gutmans reescribieron el código de PHP, produciendo lo que hoy se conoce como motor Zend. También fundaron Zend Technologies en Ramat Gan, Israel.

En mayo de 2000 PHP 4 fue lanzado bajo el poder del motor Zend Engine 1.0. El día 13 de julio de 2007 se anunció la suspensión del soporte y desarrollo de la versión 4 de PHP, a pesar de lo anunciado se ha liberado una nueva versión con mejoras de seguridad, la 4.4.8 publicada el 13 de enero del 2008 y posteriormente la versión 4.4.9 publicada el 7 de agosto de 2008. Según se sabe, se le dió soporte a fallos críticos hasta el 9 de agosto de 2008.

El 13 de julio de 2004, fue lanzado PHP 5, utilizando el motor Zend Engine 2.0 (o Zend Engine 2). Incluye todas las ventajas que provee el nuevo Zend Engine 2 como:

  • Mejor soporte para la programación orientada a objetos, que en versiones anteriores era extremadamente rudimentario.
  • Mejoras de rendimiento.
  • Mejor soporte para MySQL con extensión completamente reescrita.
  • Mejor soporte a XML (XPath, DOM, etc.).
  • Soporte nativo para SQLite.
  • Soporte integrado para SOAP.
  • Iteradores de datos.
  • Manejo de excepciones.
  • Mejoras con la implementación con Oracle.

Historial de Lanzamiento de PHP

Versión mayor Versión menor Fecha de lanzamiento Notas
1 1.0.0 1995-06-08 Llamada oficialmente «Personal Home Page Tools (PHP Tools)». Es la primera versión en usar el nombre «PHP».
2 2.0.0 1997-11-01 Considerada por sus creadores la «herramienta más rápida y sencilla» para crear páginas web dinamicas.
3 3.0.0 1998-06-06 Zeev Suraski y Andi Gutmans reescribieron la base para esta versión.4
4 4.0.0 2000-05-22 Se añadio un sistema de parsing de dos fases llamado motor Zend.
4.1.0 2001-12-10 Se introducen ‘superglobales’ ($_GET$_POST$_SESSION, etc.)
4.2.0 2002-04-22 Se deshabilitan register_globals por defecto. Datos recibidos por la red no son insertados en el espacio de nombres global, cerrando posibles agujeros de seguridad en las aplicaciones.
4.3.0 2002-12-27 Se introduce CLI, y CGI.
4.4.0 2005-07-11 Se añaden páginas man para phpize y php-config.
4.4.9 2008-08-07 Mejoras de seguridad y arreglo de bugs. Último lanzamiento de la serie PHP 4.4.
5 5.0.0 2004-07-13 Motor Zend II con un nuevo modelo de objetos.
5.1.0 2005-11-24 Mejoras de rendimiento con la introducción de variables de compilador para el nuevo motor de PHP.
5.2.0 2006-11-02 Activida extensión de filtro por defecto. Soporte JSON nativo.
5.2.17 2011-01-06 Arreglo de vulnerabilidad crítica conectada a punto flotante.
5.3.0 2009-06-30 Soporte para espacios de nombres, enlace estático en tiempo de ejecución, etiqueta de salto (goto limitada), Clausuras nativas, Soporte nativo para archivos PHP (phar), recolección de basura para referencias circulares, soporte mejorado para Windows, sqlite3, mysqlnd como reemplazo a libmysql como biblioteca para extensiones que funcionan con MySQL, fileinfo como reemplzado de mime_magic para mejor soporte MIME, extensión de Internacionalización, y etiqueta ereg obsoleta.
5.3.1 2009-11-19 Cerca de 100 bug fixes.
5.3.2 2010-03-04 Gran número de bug fixes.
5.3.3 2010-07-22 Mayoritariamente arreglo de errores; FPM SAPI.
5.3.4 2010-12-10 Mejoras a FPM SAPI.
5.3.5 2011-01-06 Arreglo de vulnerabilidad crítica relacionada a punto flotante.
5.3.6 2011-03-10 Cerca de 60 bug fixes.
5.3.7 2011-08-18 Esta versión se enfoca en la estabilidad con cerca de 90 bug fixes, algunos de los cuales tienen implicaciones a la seguridad.
5.3.8 2011-08-23 Esta versión arregla dos errores introducidos por la versión 5.3.7.
5.3.9 2012-01-10 Esta versión se enfoca en la estabilidad con cerca de 90 bug fixes, algunos de los cuales tienen implicaciones a la seguridad.
5.3.10 2012-02-02 Arreglo de vulnerabilidad de ejecución de código arbitrario reportada por Stefan Esser, CVE-2012-0830.
5.3.13 2012-05-08 Arreglo de vulnerabilidad para instalaciones basadas en CGI.
5.4.0 2012-03-01 Soporte para Trait y sintaxis abreviada de array. Elementos removidos: register_globalssafe_mode,allow_call_time_pass_referencesession_register()session_unregister() y session_is_registered(). Servidor web incorporado.10 Varias mejoras a características existentes y al rendimiento, y requerimientos de memoria menores.
5.4.1 2012-04-26 Varios bug fixes y mejoras de seguridad.
5.4.2 2012-05-03 Parche de seguridad para arreglar vulnerabilidad del parametro query string de PHP-CGI.
5.4.3 2012-05-08 Arreglo de vulnerabilidad para instalaciones basadas en CGI y también para la vulnerabilidad de desbordamiento de búfer para apache_request_headers()
6  ?.? Sin fecha El desarrollo de PHP 6 ha sido retrasado porque los desarrolladores decidieron que el enfoque actual para tratar cadenas Unicode no es correcto, y están considerando formas alternas para la siguiente versión. Las mejoras planeadas para PHP 6 fueron añadidas en su lugar en PHP 5.3.0 (soporte para espacios de nombre, enlace estático en tiempo de ejecución, funciones lambda, clasuras, goto) y 5.4.0 (traits, revinculación de clausura).

Características de PHP

A continuación listamos algunas de las principales características de PHP:

  • Orientado al desarrollo de aplicaciones web dinámicas con acceso a información almacenada en una base de datos.
  • Es considerado un lenguaje fácil de aprender,ya que en su desarrollo se simplificaron distintas especificaciones, como es el caso de la definición de las variables primitivas, ejemplo que se hace evidente en el uso de php arrays.
  • El código fuente escrito en PHP es invisible al navegador web y al cliente ya que es el servidor el que se encarga de ejecutar el código y enviar su resultado HTML al navegador. Esto hace que la programación en PHP sea segura y confiable.
  • Capacidad de conexión con la mayoría de los motores de base de datos que se utilizan en la actualidad, destaca su conectividad con MySQL y PostgreSQL.
  • Capacidad de expandir su potencial utilizando módulos (llamados ext’s o extensiones).
  • Posee una amplia documentación en su sitio web oficial, entre la cual se destaca que todas las funciones del sistema están explicadas y ejemplificadas en un único archivo de ayuda.
  • Es libre, por lo que se presenta como una alternativa de fácil acceso para todos.
  • Permite aplicar técnicas de programación orientada a objetos. Incluso aplicaciones como Zend framework, empresa que desarrolla PHP, están totalmente desarrolladas mediante esta metodología.
  • No requiere definición de tipos de variables aunque sus variables se pueden evaluar también por el tipo que estén manejando en tiempo de ejecución.
  • Tiene manejo de excepciones (desde PHP5).
  • Si bien PHP no obliga a quien lo usa a seguir una determinada metodología a la hora de programar, aun haciéndolo, el programador puede aplicar en su trabajo cualquier técnica de programación o de desarrollo que le permita escribir código ordenado, estructurado y manejable. Un ejemplo de esto son los desarrollos que en PHP se han hecho del patrón de diseño Modelo Vista Controlador (MVC), que permiten separar el tratamiento y acceso a los datos, la lógica de control y la interfaz de usuario en tres componentes independientes.

Inconvenientes

  • Como es un lenguaje que se interpreta en ejecución, para ciertos usos puede resultar un inconveniente que el código fuente no pueda ser ocultado. La ofuscación es una técnica que puede dificultar la lectura del código pero no necesariamente impide que el código sea examinado.
  • Debido a que es un lenguaje interpretado, un script en PHP suele funcionar considerablemente más lento que su equivalente en un lenguaje de bajo nivel, sin embargo este inconveniente se puede minimizar con técnicas de cache tanto en archivos como en memoria.
  • Las variables al no ser tipadas dificulta a los diferentes IDEs para ofrecer asistencias para el tipeado del código, aunque esto no es realmente un inconveniente del lenguaje en sí. Esto es solventado por Zend Studio añadiendo un comentario con el tipo a la declaración de la variable.

XAMPP, LAMP, WAMP, MAMP

XAMPP es un servidor independiente de plataforma, software libre, que consiste principalmente en la base de datos MySQL, el servidor Web Apache y los intérpretes para lenguajes de script: PHP y Perl. El nombre proviene del acrónimo de X (para cualquiera de los diferentes sistemas operativos), Apache, MySQL, PHP, Perl. El programa está liberado bajo la licencia GNU y actúa como un servidor Web libre, fácil de usar y capaz de interpretar páginas dinámicas. Actualmente XAMPP esta disponible para Microsoft Windows, GNU/Linux, Solaris, y MacOS X.

LAMP presenta una funcionalidad parecida a XAMP, pero enfocada en Linux, y WAMP lo hace enfocado en Windows.

Principales sitios desarrollados con PHP

PHP es utilizado en millones de sitios, entre los más destacados se encuentran wikipedia.org, facebook.com y WordPress.com.

Fuentes: php.netwikipedia.org