PHP es un lenguaje de secuencias de comandos de propósito general especialmente adecuado para el desarrollo web . [5] Fue creado originalmente por el programador danés-canadiense Rasmus Lerdorf en 1994. [6] La implementación de referencia PHP ahora es producida por The PHP Group. [7] PHP originalmente significaba página de inicio personal , [6] pero ahora representa el inicialismo recursivo PHP: preprocesador de hipertexto . [8]
![]() | |
Paradigma | Imperativo , funcional , orientado a objetos , procedimental , reflexivo |
---|---|
Diseñada por | Rasmus Lerdorf |
Desarrollador | El equipo de desarrollo de PHP, Zend Technologies |
Apareció por primera vez | 1995 [1] |
Lanzamiento estable | 8.0.6 [2] ![]() |
Disciplina de mecanografía | Dinámico , débil desde la versión 7.0: Gradual [3] |
Lenguaje de implementación | C (principalmente; algunos componentes C ++ ) |
SO | Similar a Unix , Windows , macOS |
Licencia | Licencia PHP (la mayor parte del motor Zend bajo licencia de motor Zend ) |
Extensiones de nombre de archivo | .php , .phar , .phtml , .pht ,.phps |
Sitio web | www |
Implementaciones importantes | |
Motor Zend , HHVM , PeachPie , Quercus , Parrot | |
Influenciado por | |
Perl , HTML , C , C ++ , Java , Tcl , [1] JavaScript , Hack [4] | |
Influenciado | |
Hack , JSP , ASP | |
|
El código PHP generalmente se procesa en un servidor web mediante un intérprete de PHP implementado como un módulo , un demonio o como un ejecutable de Common Gateway Interface (CGI). En un servidor web, el resultado del código PHP interpretado y ejecutado, que puede ser cualquier tipo de datos, como HTML generado o datos de imágenes binarias , formaría la totalidad o parte de una respuesta HTTP . Existen varios sistemas de plantillas web , sistemas de gestión de contenido web y marcos web que pueden emplearse para orquestar o facilitar la generación de esa respuesta. Además, PHP se puede utilizar para muchas tareas de programación fuera del contexto web, como aplicaciones gráficas independientes [9] y control de drones robóticos . [10] El código PHP también se puede ejecutar directamente desde la línea de comandos .
El intérprete de PHP estándar, impulsado por Zend Engine , es un software gratuito publicado bajo la licencia de PHP . PHP ha sido ampliamente adaptado y se puede implementar en la mayoría de los servidores web en casi todos los sistemas operativos y plataformas , de forma gratuita. [11]
El lenguaje PHP evolucionó sin una especificación formal escrita o estándar hasta 2014, con la implementación original actuando como el estándar de facto que otras implementaciones pretendían seguir. Desde 2014, se ha trabajado para crear una especificación PHP formal. [12]
W3Techs informa que, en abril de 2021 [actualizar], "PHP es utilizado por el 79,2% de todos los sitios web cuyo lenguaje de programación del lado del servidor conocemos". [13]
Historia
Historia temprana
El desarrollo de PHP comenzó en 1994 cuando Rasmus Lerdorf escribió varios programas CGI ( Common Gateway Interface ) en C, [14] [15] [16] que utilizó para mantener su página de inicio personal . Los amplió para trabajar con formularios web y para comunicarse con bases de datos , y llamó a esta implementación "Intérprete de formularios / página de inicio personal" o PHP / FI.
PHP / FI se puede utilizar para crear aplicaciones web dinámicas y sencillas . Para acelerar la notificación de errores y mejorar el código, Lerdorf anunció inicialmente el lanzamiento de PHP / FI como "Herramientas de página de inicio personal (PHP Tools) versión 1.0" en el grupo de discusión de Usenet comp.infosystems.www.authoring.cgi el 8 de junio de 1995 . [17] [18] Esta versión ya tenía la funcionalidad básica que PHP tiene hoy. Esto incluía variables similares a Perl , manejo de formularios y la capacidad de incrustar HTML. La sintaxis se parecía a la de Perl , pero era más simple, más limitada y menos consistente. [7]
Un ejemplo de la sintaxis PHP temprana :
incluir / texto / encabezado . html ->getenv HTTP_USER_AGENT -> si substr $ exec_result Mozilla -> Hey , usted está utilizando Netscape ! < P > endif ->sql base de datos de seleccionar * de la tabla , donde usuario = '$ nombre de usuario' -> ifless $ NumEntries 1 -> Lo sentimos , que registro no no existe < p > endif salida -> Bienvenido $ usuario ! -> < p > Usted tiene $ index : 0 -> créditos que quedan en su cuenta <. p >incluir / texto / pie de página . html ->
PHP temprano no tenía la intención de ser un nuevo lenguaje de programación y creció orgánicamente, con Lerdorf observando en retrospectiva: "No sé cómo detenerlo, nunca hubo la intención de escribir un lenguaje de programación [...] absolutamente ninguna idea de cómo escribir un lenguaje de programación, simplemente seguí agregando el siguiente paso lógico en el camino ". [19] Un equipo de desarrollo comenzó a formarse y, después de meses de trabajo y pruebas beta , lanzó oficialmente PHP / FI 2 en noviembre de 1997.
El hecho de que PHP no se diseñó originalmente, sino que se desarrolló orgánicamente ha dado lugar a una nomenclatura inconsistente de funciones y un orden inconsistente de sus parámetros. [20] En algunos casos, los nombres de las funciones se eligieron para que coincidieran con las bibliotecas de nivel inferior que PHP estaba "envolviendo", [21] mientras que en algunas versiones muy tempranas de PHP la longitud de los nombres de las funciones se usaba internamente como una función hash. , por lo que se eligieron nombres para mejorar la distribución de los valores hash. [22]
PHP 3 y 4
Zeev Suraski y Andi Gutmans reescribieron el analizador en 1997 y formaron la base de PHP 3, cambiando el nombre del lenguaje por el acrónimo recursivo PHP: Hypertext Preprocessor . [7] [23] Posteriormente, comenzaron las pruebas públicas de PHP 3, y el lanzamiento oficial se produjo en junio de 1998. Suraski y Gutmans luego comenzaron una nueva reescritura del núcleo de PHP, produciendo Zend Engine en 1999. [24] También fundaron Zend Tecnologías en Ramat Gan , Israel. [7]
El 22 de mayo de 2000, se lanzó PHP 4, impulsado por Zend Engine 1.0. [7] En agosto de 2008, esta rama alcanzó la versión 4.4.9. PHP 4 ya no está en desarrollo ni se lanzará ninguna actualización de seguridad. [25] [26]
PHP 5
El 1 de julio de 2004, PHP 5 fue lanzado impulsado por el nuevo Zend Engine II. [7] PHP 5 incluyó nuevas características como soporte mejorado para programación orientada a objetos , la extensión PHP Data Objects (PDO) (que define una interfaz liviana y consistente para acceder a bases de datos) y numerosas mejoras de desempeño. [27] En 2008, PHP 5 se convirtió en la única versión estable en desarrollo. El enlace estático tardío había faltado en PHP y se agregó en la versión 5.3. [28] [29]
Muchos proyectos de código abierto de alto perfil dejaron de admitir PHP 4 en código nuevo a partir del 5 de febrero de 2008, debido a la iniciativa GoPHP5, [30] proporcionada por un consorcio de desarrolladores de PHP que promueven la transición de PHP 4 a PHP 5. [31 ] [32]
Con el tiempo, los intérpretes de PHP estuvieron disponibles en la mayoría de los sistemas operativos existentes de 32 y 64 bits , ya sea construyéndolos a partir del código fuente PHP o usando binarios prediseñados. [33] Para las versiones 5.3 y 5.4 de PHP, las únicas distribuciones binarias de Microsoft Windows disponibles eran compilaciones IA-32 de 32 bits , [34] [35] que requieren el modo de compatibilidad de Windows de 32 bits mientras se usa Internet Information Services (IIS) en un 64 -Bit de plataforma Windows. La versión 5.5 de PHP hizo que las compilaciones x86-64 de 64 bits estuvieran disponibles para Microsoft Windows. [36]
El soporte de seguridad oficial para PHP 5.6 finalizó el 31 de diciembre de 2018. [37]
PHP 6 y Unicode
PHP recibió críticas mixtas debido a la falta de compatibilidad nativa con Unicode en el nivel del idioma principal. [38] [39] En 2005, se inició un proyecto encabezado por Andrei Zmievski para brindar soporte nativo Unicode a través de PHP, incorporando la biblioteca International Components for Unicode (ICU) y representando cadenas de texto como UTF-16 internamente. [40] Dado que esto causaría cambios importantes tanto en los aspectos internos del lenguaje como en el código de usuario, se planeó lanzar esto como la versión 6.0 del lenguaje, junto con otras características importantes en desarrollo. [41]
Sin embargo, la escasez de desarrolladores que entendieron los cambios necesarios y los problemas de rendimiento que surgen de la conversión hacia y desde UTF-16, que rara vez se usa en un contexto web, provocaron retrasos en el proyecto. [42] Como resultado, se creó una versión de PHP 5.3 en 2009, con muchas características que no son Unicode retroportadas desde PHP 6, en particular espacios de nombres. En marzo de 2010, el proyecto en su forma actual se abandonó oficialmente y se preparó una versión PHP 5.4 que contiene la mayoría de las características restantes que no son Unicode de PHP 6, como rasgos y reenlace de cierre. [43] Las esperanzas iniciales eran que se formaría un nuevo plan para la integración Unicode, pero en 2014 no se había adoptado ninguno.
PHP 7
Durante 2014 y 2015, se desarrolló una nueva versión principal de PHP, que fue numerada PHP 7. La numeración de esta versión implicó cierto debate entre los desarrolladores internos. [44] Si bien el experimento PHP 6 Unicode nunca se había publicado, varios artículos y títulos de libros hicieron referencia al nombre PHP 6, lo que podría haber causado confusión si una nueva versión reutilizara el nombre. [45] Después de una votación, se eligió el nombre PHP 7. [46]
La base de PHP 7 es una rama de PHP que originalmente se denominó PHP de próxima generación ( phpng ). Fue escrito por Dmitry Stogov, Xinchen Hui y Nikita Popov, [47] y tenía como objetivo optimizar el rendimiento de PHP mediante la refactorización del motor Zend al tiempo que conservaba una compatibilidad casi completa del lenguaje. [48] Para el 14 de julio de 2014, los puntos de referencia basados en WordPress , que sirvieron como la suite de referencia principal para el proyecto phpng, mostraron un aumento de casi un 100% en el rendimiento. También se espera que los cambios de phpng faciliten la mejora del rendimiento en el futuro, ya que las estructuras de datos más compactas y otros cambios se consideran más adecuados para una migración exitosa a un compilador Just-In -Time (JIT). [49] Debido a los cambios significativos, el motor Zend reelaborado se llama Zend Engine 3 , sucediendo al Zend Engine 2 utilizado en PHP 5. [50]
Debido a cambios internos importantes en phpng, debe recibir un nuevo número de versión principal de PHP, en lugar de una versión menor de PHP 5, de acuerdo con el proceso de lanzamiento de PHP. [51] Las versiones principales de PHP pueden romper la compatibilidad con versiones anteriores del código y, por lo tanto, PHP 7 presentó una oportunidad para otras mejoras más allá de phpng que requieren rupturas de compatibilidad con versiones anteriores. En particular, implicó los siguientes cambios:
- Muchos mecanismos de error de PHP heredados de nivel fatal o recuperable fueron reemplazados por excepciones modernas orientadas a objetos . [52]
- La sintaxis para desreferenciar variable fue revisado a fin de ser internamente más consistente y completa, lo que permite el uso de los operadores
->
,[]
,()
,{}
, y::
, con expresiones del lado izquierdo significativas arbitrarias. [53] - La compatibilidad con los métodos de constructor de estilo PHP 4 heredados quedó obsoleta. [54]
- El comportamiento de la foreachdeclaración se cambió para que sea más predecible. [55]
- Los constructores para las pocas clases integradas en PHP que devolvieron nulos en caso de falla se cambiaron para lanzar una excepción en su lugar, por coherencia. [56]
- Varias interfaces de programación de aplicaciones de servidor (SAPI) y extensiones que no se mantuvieron o en desuso se eliminaron del núcleo de PHP, sobre todo la
mysql
extensión heredada . [57] - El comportamiento del
list()
operador se modificó para eliminar la compatibilidad con cadenas. [58] - Se eliminó el soporte para los delimitadores de estilo ASP heredados
<%
y%>
y. [59]
- Se corrigió una supervisión que permitía que una declaración de cambio tuviera múltiples
default
cláusulas. [60] - Se eliminó el soporte para el soporte de números hexadecimales en algunas conversiones implícitas de cadenas a tipos de números. [61]
- Se cambiaron los operadores de desplazamiento a la izquierda y a la derecha para que se comporten de forma más coherente en todas las plataformas. [62]
- Se cambiaron las conversiones entre números de punto flotante y enteros (por ejemplo, se cambió el infinito para convertirlo en cero) y se implementaron de manera más consistente en todas las plataformas. [62] [63]
PHP 7 también incluyó nuevas funciones de lenguaje. Más notablemente, introduce declaraciones de tipo de retorno para funciones [64] que complementan las declaraciones de tipo de parámetro existentes, y soporte para los tipos escalares (integer, float, string y booleano) en declaraciones de tipo de parámetro y retorno. [sesenta y cinco]
PHP 8
PHP 8 se lanzó el 26 de noviembre de 2020. PHP 8 es una versión principal y tiene cambios importantes con respecto a versiones anteriores. [66] [67] Las nuevas funciones y los cambios notables incluyen:
Recopilación justo a tiempo
La compilación justo a tiempo es compatible con PHP 8. [68]
El compilador JIT de PHP 8 puede proporcionar mejoras sustanciales de rendimiento para algunos casos de uso. [69] [70] El desarrollador de PHP Nikita Popov ha declarado que las mejoras de rendimiento para la mayoría de los sitios web serán menos sustanciales que la actualización de PHP 5 a PHP 7. [71] Se espera que las mejoras de rendimiento debido a la adición del compilador JIT sean más sustancial para operaciones de tipo matemático que para casos de uso comunes de desarrollo web. [71] Además, el compilador JIT ofrece un potencial futuro para mover algunos códigos de C a PHP, debido a las mejoras de rendimiento para algunos casos de uso. [72]
Adición de la expresión de coincidencia
PHP 8 introdujo la match
expresión. [73] La expresión de coincidencia es conceptualmente similar a una switch
declaración y es más compacta para algunos casos de uso. [74] Debido a que match
es una expresión, su resultado puede capturarse en una variable o devolverse desde una función. [75]
Cambios de tipo y adiciones
PHP 8 introdujo tipos de unión, un nuevo static
tipo de retorno y un nuevo mixed
tipo. [66]
Los "atributos", a menudo denominados "anotaciones" en otros lenguajes de programación, se agregaron en PHP 8, lo que permite agregar metadatos a las clases. [66]
throw
pasó de ser una declaración a ser una expresión. [76] Esto permite lanzar excepciones en lugares que antes no eran posibles. [66]
Cambios y adiciones de sintaxis
PHP 8 incluye cambios para permitir sintaxis alternativas, más concisas o más consistentes en varios escenarios. Por ejemplo, el operador nullsafe es similar al operador de fusión nula ??
, pero se usa al llamar a métodos. [77] El siguiente fragmento de código no generará un error si getBirthday()
devuelve un valor nulo:
$ human_readable_date = $ usuario -> getBirthday () ? -> diffForHumans ();
La promoción de la propiedad del constructor se ha agregado como " azúcar sintáctico " , lo que permite que las propiedades de la clase se establezcan automáticamente cuando los parámetros se pasan a un constructor de la clase . [66] Esto reduce la cantidad de código repetitivo que debe escribirse.
Otros cambios menores incluyen soporte para el uso de ::class
en objetos, que sirve como una alternativa para el uso de get_class()
; [66] capturas sin captura en bloques de try-catch; ajustes de sintaxis variable para resolver inconsistencias; soporte para argumentos con nombre; y soporte para comas finales en listas de parámetros, lo que agrega coherencia con soporte para comas finales en otros contextos, como en matrices.
Cambios y adiciones estándar de la biblioteca
- Se agregaron mapas débiles en PHP 8. A
WeakMap
contiene referencias a objetos, pero estas referencias no impiden que dichos objetos sean recolectados como basura . [78] Esto puede proporcionar mejoras de rendimiento en escenarios donde los datos se almacenan en caché ; esto es de particular relevancia para los ORM . [66] - Varios ajustes a las interfaces, como agregar soporte para crear
DateTime
objetos a partir de interfaces y la adición de unaStringable
interfaz que se puede usar para sugerencias de tipo. - Varias funciones nuevas que incluyen str_contains (), str_starts_with () y str_ends_with (); [79] fdiv (); get_debug_type (); y get_resource_id ()
- Implementación de objeto de token_get_all ()
Cambios adicionales
- Las anotaciones de tipo también se agregaron al código fuente C de PHP para permitir que las funciones y métodos internos tengan "información de tipo completa en reflexión". [80]
- Herencia con métodos privados
- Métodos abstractos en mejoras de rasgos
Historial de versiones
Versión | Fecha de lanzamiento | Admitido hasta [81] | Notas |
---|---|---|---|
1.0 | 8 de junio de 1995 | Oficialmente llamado "Herramientas de la página de inicio personal (Herramientas PHP)". Este es el primer uso del nombre "PHP". [7] | |
2.0 | 1 de noviembre de 1997 | Oficialmente llamado "PHP / FI 2.0". Esta es la primera versión que en realidad podría caracterizarse como PHP, ya que es un lenguaje independiente con muchas características que han perdurado hasta el día de hoy. | |
3,0 | 6 de junio de 1998 | 20 de octubre de 2000 [81] | El desarrollo pasa de una persona a varios desarrolladores. Zeev Suraski y Andi Gutmans reescriben la base de esta versión. [7] |
4.0 | 22 de mayo de 2000 [82] | 23 de junio de 2001 [81] | Se agregó un sistema más avanzado de análisis / ejecución de etiquetas de dos etapas llamado motor Zend. [83] |
4.1 | 10 de diciembre de 2001 [84] | 12 de marzo de 2002 [81] | Introducido "superglobals" ( $_GET , $_POST , $_SESSION , etc.) [83] |
4.2 | 22 de abril de 2002 [85] | 6 de septiembre de 2002 [81] | Desactivado register_globals por defecto. Los datos recibidos a través de la red ya no se insertan directamente en el espacio de nombres global , cerrando posibles agujeros de seguridad en las aplicaciones. [83] |
4.3 | 27 de diciembre de 2002 [86] | 31 de marzo de 2005 [81] | Introdujo la interfaz de línea de comandos (CLI), para complementar el CGI. [83] [87] |
4.4 | 11 de julio de 2005 [88] | 7 de agosto de 2008 [81] | Se corrigió un error de corrupción de memoria, que requería romper la compatibilidad binaria con extensiones compiladas en PHP versión 4.3.x. [89] |
5,0 | 13 de julio de 2004 [90] | 5 de septiembre de 2005 [81] | Zend Engine II con un nuevo modelo de objetos. [91] |
5.1 | 24 de noviembre de 2005 [92] | 24 de agosto de 2006 [81] | Mejoras de rendimiento con la introducción de variables del compilador en PHP Engine rediseñado. [91] Se agregaron objetos de datos PHP (PDO) como una interfaz coherente para acceder a las bases de datos. [93] |
5.2 | 2 de noviembre de 2006 [94] | 6 de enero de 2011 [81] | Habilitada la extensión del filtro de forma predeterminada. Soporte JSON nativo . [91] |
5.3 | 30 de junio de 2009 [95] | 14 de agosto de 2014 [81] | Soporte de espacio de nombres ; enlaces estáticos tardíos , etiqueta de salto ( goto limitado ), funciones anónimas , cierres , archivos PHP (phar), recolección de basura para referencias circulares, soporte mejorado de Windows , sqlite3, mysqlnd como reemplazo de libmysql como biblioteca subyacente para las extensiones que funcionan con MySQL , fileinfo como reemplazo de mime_magic para una mejor compatibilidad con MIME , la extensión de internacionalización y la desaprobación de la extensión ereg. |
5.4 | 1 de marzo de 2012 [96] | 3 de septiembre de 2015 [81] | Soporte de rasgos , soporte de sintaxis de matriz corta. Los elementos eliminados: register_globals , safe_mode , allow_call_time_pass_reference , , y . Servidor web integrado. [97] Varias mejoras a las características existentes, rendimiento y requisitos de memoria reducidos.session_register() session_unregister() session_is_registered() |
5.5 | 20 de junio de 2013 [98] | 10 de julio de 2016 [99] | Soporte para generadores , finally bloques para manejo de excepciones, OpCache (basado en Zend Optimizer +) incluido en distribución oficial. [100] |
5,6 | 28 de agosto de 2014 [101] | 31 de diciembre de 2018 [99] | Expresiones escalares constantes, funciones variadas , desempaquetado de argumentos, nuevo operador de exponenciación, extensiones de la use declaración para funciones y constantes, nuevo phpdbg depurador como módulo SAPI y otras mejoras menores. [102] |
6.x | No publicado | N / A | Versión abandonada de PHP que planeaba incluir soporte nativo Unicode. [103] [104] |
7.0 | 3 de diciembre de 2015 [105] | 10 de enero de 2019 [51] | Zend Engine 3 (mejoras de rendimiento [49] y compatibilidad con enteros de 64 bits en Windows [106] ), sintaxis variable uniforme, [53] proceso de compilación basado en AST , [107] agregado , [108] consistencia de cambio bit a bit entre plataformas, [ 109] operador ( fusión nula ), [110] sintaxis de escape de punto de código Unicode , [111] declaraciones de tipo de retorno, [64] declaraciones de tipo escalar (entero, flotante, cadena y booleano), [65] comparación de tres vías "nave espacial" operador, [112] delegación de generador , [113] clases anónimas , [114] API CSPRNG más simple y más consistentemente disponible , [115] reemplazo de muchos "errores" internos de PHP restantes con las excepciones más modernas , [52] y sintaxis abreviada para importar varios elementos desde un espacio de nombres. [116]Closure::call() ?? <=> |
7.1 | 1 de diciembre de 2016 | 1 de diciembre de 2019 [99] | tipo de retorno vacío , [117] modificadores de visibilidad constante de clase [118] |
7.2 | 30 de noviembre de 2017 | 30 de noviembre de 2020 [99] | Declaración de parámetro de objeto y tipo de retorno, [119] extensión Libsodium, [120] anulación de método abstracto, [121] ampliación del tipo de parámetro [122] |
7.3 | 6 de diciembre de 2018 [123] | 6 de diciembre de 2021 | Sintaxis flexible de Heredoc y Nowdoc, [124] compatibilidad con la asignación de referencias y deconstrucción de matrices con list (), [125] compatibilidad con PCRE2, [126] función hrtime () [127] |
7.4 | 28 de noviembre de 2019 [128] | 28 de noviembre de 2022 | Propiedades tipo 2.0, [129] precarga, [130] operador de asignación de coalescencia nula, [131] mejorar openssl_random_pseudo_bytes, [132] Referencias débiles, [78] FFI - interfaz de función externa , [133] extensión hash siempre disponible, [134] registro de hash de contraseña, [135] división de cadenas multibyte, [136] reflexión para referencias, [137] desagregar ext / wddx, [138] nuevo mecanismo de serialización de objetos personalizados [139] |
8.0 | 26 de noviembre de 2020 [140] | 26 de noviembre de 2023 | Compilación Just-In-Time (JIT) , [68] matrices que comienzan con un índice negativo, [141] semántica de lenguaje más estricta / sana (validación de métodos de rasgos abstractos), [142] comparaciones entre cadenas y números más sensatos, [143] numérico más sensato strings, [144] TypeError en operadores aritméticos / bit a bit no válidos, [145] reclasificación de varios errores de motor, [146] errores de tipo coherentes para funciones internas, [147] error fatal para firmas de métodos incompatibles [148] ), flotante independiente de la configuración regional a la conversión de cadenas, [149] ajustes de sintaxis de variables, [150] atributos, [151] [152] [153] [154] argumentos con nombre, [155] expresión de coincidencia, [156] promoción de propiedad del constructor, [157] tipos de unión, [158] tipo mixto, [159] tipo de retorno estático, [160] operador nullsafe, [77] capturas sin captura, [161] expresión de lanzamiento, [76] la extensión JSON siempre está disponible. [162] |
8.1 | ?? Noviembre de 2021 | ?? Noviembre 2024 | Notación literal de entero octal explícito, [163] enumeraciones [164] |
Leyenda: Versión antigua Versión anterior, aún mantenida Ultima versión Última versión de vista previa Lanzamiento futuro |
A partir del 28 de junio de 2011, el equipo de desarrollo de PHP implementó un cronograma para el lanzamiento de nuevas versiones de PHP. [51] Con este sistema, debería producirse al menos un lanzamiento cada mes. Una vez al año, debería producirse una versión menor que puede incluir nuevas funciones. Cada versión menor debe ser compatible con al menos dos años con seguridad y correcciones de errores, seguido de al menos un año de solo correcciones de seguridad, para un total de un proceso de lanzamiento de tres años para cada versión menor. No se introducirán nuevas funciones, a menos que sean pequeñas y autónomas, en una versión menor durante el proceso de publicación de tres años.
Mascota

La mascota del proyecto PHP es elePHPant , un elefante azul con el logotipo de PHP en un costado, diseñado por Vincent Pontier [165] en 1998. [166] "Las letras (PHP) tenían la forma de un elefante si se veían en un ángulo lateral ". [167] El elePHPant a veces tiene un color diferente cuando está en forma de peluche .
Se han realizado muchas variaciones de esta mascota a lo largo de los años. Solo los elePHPants basados en el diseño original de Vincent Pontier son considerados oficiales por la comunidad. [168] Estos son coleccionables y algunos de ellos son extremadamente raros. [169]
Sintaxis

El siguiente "¡Hola, mundo!" El programa está escrito en código PHP incrustado en un documento HTML :
PHP "¡Hola, mundo!" programa php echo ' ¡Hola, mundo!
' ; ?>