stringtranslate.com

PHP

PHP es un lenguaje de programación de propósito general orientado al desarrollo web . [8] Fue creado originalmente por el programador danés-canadiense Rasmus Lerdorf en 1993 y lanzado en 1995. [9] [10] La implementación de referencia PHP ahora es producida por PHP Group. [11] PHP era originalmente una abreviatura de Página de inicio personal , [12] [13] pero ahora representa el inicialismo recursivo PHP: Preprocesador de hipertexto . [14]

El código PHP generalmente se procesa en un servidor web mediante un intérprete PHP implementado como un módulo , un demonio o 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 [15] y control de drones robóticos . [16] El código PHP también se puede ejecutar directamente desde la línea de comandos .

El intérprete PHP estándar, impulsado por Zend Engine , es un software gratuito publicado bajo la licencia PHP . PHP ha sido ampliamente adaptado y puede implementarse en la mayoría de los servidores web en una variedad de sistemas operativos y plataformas . [17]

El lenguaje PHP ha evolucionado sin una especificación o estándar formal escrito, y la implementación original actúa como el estándar de facto que otras implementaciones pretendían seguir.

W3Techs informa que a partir de 2024 , PHP es utilizado por el 76,6% de todos los sitios web cuyo lenguaje de programación se pudo determinar, y de ellos, el 58,8% usa PHP 7, que está desactualizado y se sabe que es inseguro, [18] además, la mayoría de los usuarios de 8.0 son los más Se utilizan las versiones 8.x, y tampoco es compatible, [19] lo que significa que la gran mayoría de los usuarios de PHP utilizan versiones obsoletas, y más de la mitad de todos los sitios web, que utilicen PHP o no (cuyo lenguaje de programación podría determinarse). son inseguros.

Historia

Rasmus Lerdorf , creador de PHP; y Andi Gutmans y Zeev Suraski , creadores del Zend Engine

Historia temprana

El desarrollo de PHP comenzó en 1993 [9] cuando Rasmus Lerdorf escribió varios programas Common Gateway Interface (CGI) en C , [20] [21] que utilizó para mantener su página de inicio personal . Los amplió para trabajar con formularios web y comunicarse con bases de datos , y llamó a esta implementación "Página de inicio personal/Intérprete de formularios" o PHP/FI.

Un ejemplo de la sintaxis temprana de PHP : [22]

<!-- incluir  / texto / encabezado . HTML --><!-- getenv  HTTP_USER_AGENT --> <!-- if  substr  $exec_result  Mozilla -->  ¡Oye ,  estás  usando  Netscape !< p > <!-- endif --  ><!-- base de datos sql  select * de la tabla donde usuario = '$nombre de usuario' --> <!-- ifless $numentries 1 --> Lo sentimos , ese registro no existe < p > <!-- endif exit -- > Bienvenido <!-- $user -->!< p > Te quedan <!-- $index : 0 --> créditos en tu cuenta . < p >                         <!-- incluir  / texto / pie de página . HTML -->

PHP/FI podría usarse para crear aplicaciones web simples y dinámicas . 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 (Herramientas PHP) versión 1.0" en el grupo de discusión de Usenet comp.infosystems.www.authoring.cgi el 8 de junio de 1995. [1] [23] Esta versión incluía funciones básicas como variables similares a Perl , manejo de formularios y la capacidad de incrustar HTML . En este punto, la sintaxis había cambiado para parecerse a la de Perl , pero era más simple, más limitada y menos consistente. [12] [11]

Los primeros PHP nunca tuvieron la intención de ser un nuevo lenguaje de programación ; más bien, creció orgánicamente, y Lerdorf señaló en retrospectiva: "No sé cómo detenerlo [...] nunca hubo ninguna intención de escribir un lenguaje de programación [...] No tengo la menor idea de cómo escribir un lenguaje de programación [...] Seguí agregando el siguiente paso lógico en el camino". [24] Comenzó a formarse un equipo de desarrollo y, después de meses de trabajo y pruebas beta , lanzó oficialmente PHP/FI 2 en noviembre de 1997 [25] . [ cita necesaria ]

El hecho de que PHP no se diseñó originalmente, sino que se desarrolló orgánicamente, ha llevado a una denominación inconsistente de las funciones y al ordenamiento inconsistente de sus parámetros. [26] En algunos casos, los nombres de las funciones se eligieron para que coincidieran con las bibliotecas de nivel inferior que PHP estaba "encapsulando", [27] 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 . [28]

PHP 3 y 4

Este es un ejemplo de código PHP para el sistema de gestión de contenidos WordPress .

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: Preprocesador de hipertexto . [11] [29] 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. [30] También fundaron Zend Tecnologías en Ramat Gan , Israel . [11]

El 22 de mayo de 2000, se lanzó PHP 4, impulsado por Zend Engine 1.0. [11] En agosto de 2008, esta rama había alcanzado la versión 4.4.9. PHP 4 ya no está en desarrollo y tampoco está previsto publicar ninguna actualización de seguridad. [31] [32]

PHP 5

El 1 de julio de 2004, se lanzó PHP 5, impulsado por el nuevo Zend Engine II. [11] 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 rendimiento. [33] En 2008, PHP 5 se convirtió en la única versión estable en desarrollo. El enlace estático tardío faltaba en versiones anteriores de PHP y se agregó en la versión 5.3. [34] [35]

Muchos proyectos de código abierto de alto perfil dejaron de soportar PHP 4 en código nuevo a partir del 5 de febrero de 2008, debido a la iniciativa GoPHP5, [36] proporcionada por un consorcio de desarrolladores de PHP que promueven la transición de PHP 4 a PHP 5. [37 ] [38]

Con el tiempo, los intérpretes de PHP estuvieron disponibles en la mayoría de los sistemas operativos de 32 y 64 bits existentes , ya sea compilándolos a partir del código fuente de PHP o utilizando archivos binarios prediseñados. [39] Para las versiones PHP 5.3 y 5.4, las únicas distribuciones binarias de Microsoft Windows disponibles eran compilaciones IA-32 de 32 bits , [40] [41] que requerían el modo de compatibilidad de Windows de 32 bits al usar Internet Information Services (IIS) en un sistema de 64 bits. Plataforma Windows de bits. La versión 5.5 de PHP hizo que las compilaciones x86-64 de 64 bits estuvieran disponibles para Microsoft Windows. [42]

El soporte de seguridad oficial para PHP 5.6 finalizó el 31 de diciembre de 2018. [43]

PHP 6 y Unicode

PHP recibió críticas mixtas debido a la falta de soporte nativo Unicode en el nivel del lenguaje principal. [44] [45] En 2005, se inició un proyecto encabezado por Andrei Zmievski para brindar soporte nativo Unicode en PHP, incorporando la biblioteca de Componentes Internacionales para Unicode (ICU) y representando cadenas de texto como UTF-16 internamente. [46] Dado que esto causaría cambios importantes tanto en los aspectos internos del lenguaje como en el código de usuario, se planeó lanzarlo como la versión 6.0 del lenguaje, junto con otras características importantes que se encontraban en desarrollo. [47]

Sin embargo, la escasez de desarrolladores que entendieran los cambios necesarios y los problemas de rendimiento derivados de la conversión hacia y desde UTF-16, que rara vez se utiliza en un contexto web, provocaron retrasos en el proyecto. [48] ​​Como resultado, se creó una versión PHP 5.3 en 2009, con muchas características no Unicode trasladadas desde PHP 6, en particular espacios de nombres. En marzo de 2010, el proyecto en su forma actual fue abandonado oficialmente y se preparó una versión PHP 5.4 para contener la mayoría de las características restantes no Unicode de PHP 6, como rasgos y volver a vincular cierres. [49] Las esperanzas iniciales eran que se formaría un nuevo plan para la integración de Unicode, pero en 2014 no se había adoptado ninguno. [ cita necesaria ]

PHP 7

Durante 2014 y 2015, se desarrolló una nueva versión importante de PHP, PHP 7. La numeración de esta versión generó cierto debate entre los desarrolladores internos. [50] Si bien los experimentos de PHP 6 Unicode nunca se habían publicado, varios artículos y títulos de libros hacían referencia a los nombres de PHP 6, lo que podría haber causado confusión si una nueva versión reutilizara el nombre. [51] Después de una votación, se eligió el nombre PHP 7. [52]

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, [53] y tenía como objetivo optimizar el rendimiento de PHP refactorizando Zend Engine manteniendo una compatibilidad de lenguaje casi completa. [54] El 14 de julio de 2014, los puntos de referencia basados ​​en WordPress , que sirvieron como principal conjunto de puntos de referencia para el proyecto phpng, mostraron un aumento de casi el 100% en el rendimiento. Los cambios de phpng facilitan la mejora del rendimiento en versiones futuras, ya que se considera que estructuras de datos más compactas y otros cambios son más adecuados para una migración exitosa a un compilador justo a tiempo (JIT). [55] Debido a los cambios significativos, el Zend Engine reelaborado se llamó Zend Engine 3 , sucediendo al Zend Engine 2 utilizado en PHP 5. [56]

Debido a los importantes cambios internos en phpng, debe recibir un nuevo número de versión principal de PHP, en lugar de una versión menor de PHP 5, según el proceso de lanzamiento de PHP. [57] 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 interrupciones en la compatibilidad con versiones anteriores. [ cita necesaria ] En particular, implicó los siguientes cambios:

PHP 7 también incluyó nuevas funciones de lenguaje. En particular, introdujo declaraciones de tipo de retorno para funciones [70] que complementan las declaraciones de tipo de parámetro existentes y soporte para los tipos escalares (entero, flotante, cadena y booleano) en declaraciones de tipo de parámetro y retorno. [71]

PHP 8

PHP 8 se lanzó el 26 de noviembre de 2020 y actualmente es la segunda versión principal de PHP más utilizada. PHP 8 es una versión principal y tiene cambios importantes con respecto a versiones anteriores. [72] [73] Las nuevas características y cambios notables incluyen:

Compilación justo a tiempo

La compilación justo a tiempo es compatible con PHP 8. [74]

El compilador JIT de PHP 8 puede proporcionar mejoras sustanciales de rendimiento para algunos casos de uso, [75] [76] mientras que el desarrollador de PHP Nikita Popov afirmó 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. [77] Se esperan mejoras sustanciales más para operaciones de tipo matemático que para casos de uso comunes de desarrollo web. [77] Además, el compilador JIT ofrece la posibilidad futura de mover parte del código de C a PHP, debido a las mejoras de rendimiento para algunos casos de uso. [78]

Adición de la expresión de coincidencia.

PHP 8 introdujo la matchexpresión. [79] La expresión de coincidencia es conceptualmente similar a una switchdeclaración y es más compacta para algunos casos de uso. [80] Debido a que matches una expresión, su resultado puede asignarse a una variable o devolverse desde una función. [81]

Cambios de tipo y adiciones

PHP 8 introdujo tipos de unión, un nuevo statictipo de retorno y un nuevo mixedtipo. [72]

En PHP 8 se agregaron "atributos", a menudo denominados "anotaciones" en otros lenguajes de programación, que permiten agregar metadatos a las clases. [72]

throwpasó de ser una declaración a ser una expresión. [82] Esto permite lanzar excepciones en lugares que antes no eran posibles. [72]

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 coalescente nulo ?? , pero se usa al llamar a métodos. [83] El siguiente fragmento de código no generará un error si getBirthday()devuelve nulo:

$human_readable_date  =  $usuario -> getBirthday () ?-> diffForHumans ();

La promoción de propiedades 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 clase . [72] Esto reduce la cantidad de código repetitivo que se debe escribir. [ cita necesaria ]

Otros cambios menores incluyen soporte para el uso de ::classon objetos, que sirve como alternativa para el uso de get_class(); [72] capturas sin captura en bloques 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 el soporte para comas finales en otros contextos, como en matrices. [ cita necesaria ]

Cambios y adiciones a la biblioteca estándar

Cambios adicionales

PHP 8.1

PHP 8.1 se lanzó el 25 de noviembre de 2021. [87] Agregó soporte para enumeraciones (también llamadas "enums"), declaración de propiedades como readonly(lo que evita la modificación de la propiedad después de la inicialización) y descompresión de matrices con claves de cadena. El nuevo tipo nunca se puede utilizar para indicar que una función no regresa. [88]

PHP 8.2

PHP 8.2 se lanzó el 8 de diciembre de 2022. [89] Las novedades de esta versión son readonlylas clases (cuyas propiedades de instancia son implícitamente de solo lectura), los tipos de forma normal disyuntiva (DNF) y la randomextensión, que proporciona un generador de números pseudoaleatorios con un objeto- API orientada . [90]

Historial de lanzamientos

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. [57] Según este sistema, al menos una publicación debería ocurrir cada mes. Una vez al año, debería realizarse una versión menor que puede incluir nuevas funciones. Cada versión menor debe recibir soporte durante al menos dos años con correcciones de errores y seguridad, seguidos de al menos un año solo con correcciones de seguridad, para un total de un proceso de lanzamiento de tres años para cada versión menor. No se introducirán características nuevas, a menos que sean pequeñas y autónomas, en una versión menor durante el proceso de lanzamiento de tres años.

Mascota

El elePHPant, mascota de PHP

La mascota del proyecto PHP es elePHPant , un elefante azul con el logotipo de PHP en su costado, diseñado por Vincent Pontier [201] en 1998. [202] "Las letras (PHP) formaban la forma de un elefante si se veían en un ángulo lateral." [203] El elePHPant a veces tiene un color diferente cuando está en forma de juguete de peluche . [204]

A lo largo de los años se han realizado muchas variaciones de esta mascota. Sólo los elePHPants basados ​​en el diseño original de Vincent Pontier son considerados oficiales por la comunidad. [205] Estos son coleccionables y algunos de ellos son extremadamente raros. [206]

Sintaxis

Una aplicación "Hello World" en PHP 7.4 ejecutándose en su servidor de desarrollo integrado

El siguiente "¡Hola mundo!" El programa está escrito en código PHP incrustado en un documento HTML :

<!DOCTYPE html> < html >  < head >  < title > PHP "¡Hola, mundo!" programa </ title >  </ head >  < body > <?php echo '<p>¡Hola mundo!</p>' ; ? > </cuerpo> </html> _ _ _     

Sin embargo, como no existe ningún requisito para que el código PHP esté incrustado en HTML, la versión más simple de Hello, World! puede escribirse así, con la etiqueta de cierre ?>omitida como se prefiere en archivos que contienen código PHP puro. [207]

<?php  echo  '¡Hola mundo!' ;

El intérprete PHP sólo ejecuta código PHP dentro de sus delimitadores . PHP no procesa todo lo que esté fuera de sus delimitadores, aunque el texto que no es PHP todavía está sujeto a las estructuras de control descritas en el código PHP. Los delimitadores más comunes son <?phpabrir y ?>cerrar secciones PHP. <?También existe la forma abreviada . Este delimitador corto hace que los archivos de script sean menos portátiles ya que su soporte se puede deshabilitar en la configuración local de PHP y, por lo tanto, no se recomienda. [208] [209] Por el contrario, no existe ninguna recomendación contra la etiqueta corta de eco <?=. [210] Antes de PHP 5.4.0, esta sintaxis corta echosolo funciona con la short_open_tagconfiguración habilitada, mientras que para PHP 5.4.0 y posteriores siempre está disponible. [211] [212] [208] El propósito de todos estos delimitadores es separar el código PHP del contenido que no es PHP, como el código JavaScript o el marcado HTML. [213] Así que el más corto "¡Hola, mundo!" El programa escrito en PHP es:

<? = '¡Hola mundo!' ;

La primera forma de delimitadores, <?phpy ?>, en XHTML y otros documentos XML , crea instrucciones de procesamiento XML formadas correctamente. [214] Esto significa que la mezcla resultante de código PHP y otras marcas en el archivo del lado del servidor es en sí misma XML bien formado.

Las variables tienen el prefijo un símbolo de dólar y no es necesario especificar un tipo de antemano. PHP 5 introdujo declaraciones de tipo que permiten a las funciones forzar que sus parámetros sean objetos de una clase específica, matrices, interfaces o funciones de devolución de llamada . Sin embargo, antes de PHP 7, las declaraciones de tipos no se podían usar con tipos escalares como enteros o cadenas. [71]

A continuación se muestra un ejemplo de cómo se declaran e inicializan las variables PHP.

<?php  $nombre  =  'Juan' ;  // variable de tipo cadena que se declara e inicializa  $edad  =  18 ;  // variable de tipo entero que se declara e inicializa  $altura  =  5.3 ;  // variable de tipo doble que se declara e inicializa  echo  $nombre  .  ' es '  .  $altura  .  "m alto \n " ;  // concatenando variables y cadenas  echo  " $nombre tiene $edad años." ;  // interpolando variables a una cadena ?>

A diferencia de los nombres de funciones y clases, los nombres de variables distinguen entre mayúsculas y minúsculas. Tanto las cadenas entre comillas ("") como las heredoc brindan la capacidad de interpolar el valor de una variable en la cadena. [215] PHP trata las nuevas líneas como espacios en blanco a la manera de un lenguaje de formato libre , y las declaraciones terminan con un punto y coma. [216] PHP tiene tres tipos de sintaxis de comentarios : /* */bloque de marcas y comentarios en línea; //o #se utilizan para comentarios de una línea. [217] La echo​​declaración es una de varias facilidades que PHP proporciona para generar texto. [ cita necesaria ]

En términos de palabras clave y sintaxis del lenguaje, PHP es similar a la sintaxis de estilo C. Las ifcondiciones, los bucles y los retornos de funciones son similares en sintaxis a lenguajes como C, C++, C#, Java y Perl. [ cita necesaria ]forwhile

Tipos de datos

PHP está escrito libremente . Almacena números enteros en un rango dependiente de la plataforma, ya sea como un entero con signo de 32, 64 o 128 bits equivalente al tipo largo del lenguaje C. Los enteros sin signo se convierten a valores con signo en determinadas situaciones, lo que supone un comportamiento diferente al de muchos otros lenguajes de programación. [218] Las variables enteras se pueden asignar usando notaciones decimal (positiva y negativa), octal , hexadecimal y binaria . [ cita necesaria ]

Los números de coma flotante también se almacenan en un rango específico de la plataforma. Se pueden especificar mediante notación de punto flotante o dos formas de notación científica . [219] PHP tiene un tipo booleano nativo que es similar a los tipos booleanos nativos en Java y C++ . Utilizando las reglas de conversión de tipos booleanos, los valores distintos de cero se interpretan como verdaderos y el cero como falso, como en Perl y C++. [219]

El tipo de datos nulo representa una variable que no tiene valor; NULLes el único valor permitido para este tipo de datos. [219]

Las variables del tipo "recurso" representan referencias a recursos de fuentes externas. Por lo general, estos se crean mediante funciones de una extensión particular y solo pueden ser procesados ​​por funciones de la misma extensión; Los ejemplos incluyen recursos de archivos, imágenes y bases de datos. [219]

Las matrices pueden contener elementos de cualquier tipo que PHP pueda manejar, incluidos recursos, objetos e incluso otras matrices. El orden se conserva en las listas de valores y en los hashes tanto con claves como con valores, y ambos pueden mezclarse. [219] PHP también admite cadenas , que se pueden usar con comillas simples, comillas dobles, sintaxis nowdoc o heredoc . [220]

La biblioteca PHP estándar (SPL) intenta resolver problemas estándar e implementa clases e interfaces de acceso a datos eficientes. [221]

Funciones

PHP define una gran variedad de funciones en el lenguaje principal y muchas también están disponibles en varias extensiones; Estas funciones están bien documentadas en PHP en línea. [222] Sin embargo, la biblioteca incorporada tiene una amplia variedad de convenciones de nomenclatura e inconsistencias asociadas, como se describe en la historia anterior.

El desarrollador puede definir funciones personalizadas:

function  myAge ( int  $birthYear ) :  string {  // calcula la edad restando el año de nacimiento del año actual.  $añosAntiguo  =  fecha ( 'Y' )  -  $añonacimiento ; // devuelve la edad en una cadena descriptiva.  devolver  $ años de edad  .  ( $añosOld  ==  1  ?  'año'  :  'años' ); }echo  'Estoy actualmente'  .  mi edad ( 1995 )  .  ' viejo.' ;

A partir de 2024, el resultado del programa de muestra anterior es "Actualmente tengo 29 años".

En lugar de punteros de función , se puede hacer referencia a las funciones en PHP mediante una cadena que contiene su nombre. De esta manera, las funciones PHP normales se pueden utilizar, por ejemplo, como devoluciones de llamada o dentro de tablas de funciones . [223] Las funciones definidas por el usuario pueden crearse en cualquier momento sin necesidad de crear prototipos . [222] [223] Las funciones se pueden definir dentro de bloques de código, lo que permite una decisión en tiempo de ejecución sobre si se debe definir o no una función. Hay una function_existsfunción que determina si ya se ha definido una función con un nombre determinado. Las llamadas a funciones deben usar paréntesis, con la excepción de las funciones constructoras de clases sin argumentos llamadas con el operador PHP new, en cuyo caso los paréntesis son opcionales. [ cita necesaria ]

Desde PHP 4.0.1 create_function(), una envoltura delgada alrededor eval()permitía que se crearan funciones PHP normales durante la ejecución del programa; quedó obsoleto en PHP 7.2 y eliminado en PHP 8.0 [224] a favor de la sintaxis para funciones anónimas o " cierres " [225] que pueden capturar variables del ámbito circundante, que se agregó en PHP 5.3. La sintaxis de flecha taquigráfica se agregó en PHP 7.4: [226]

función  getAdder ( $x )  {  return  fn ( $y )  =>  $x  +  $y ; }$sumador  =  getSumador ( 8 ); echo  $ sumador ( 2 );  // imprime "10"

En el ejemplo anterior, getAdder()la función crea un cierre utilizando el argumento pasado $x, que toma un argumento adicional $yy devuelve el cierre creado a la persona que llama. Tal función es un objeto de primera clase, lo que significa que puede almacenarse en una variable, pasarse como parámetro a otras funciones, etc. [227]

Inusualmente para un lenguaje de tipo dinámico, PHP admite declaraciones de tipo en parámetros de función, que se aplican en tiempo de ejecución. Esto ha sido compatible con clases e interfaces desde PHP 5.0, para matrices desde PHP 5.1, para "invocables" desde PHP 5.4 y tipos escalares (entero, flotante, cadena y booleano) desde PHP 7.0. [71] PHP 7.0 también tiene declaraciones de tipo para tipos de retorno de funciones, expresadas colocando el nombre del tipo después de la lista de parámetros, precedido por dos puntos. [70] Por ejemplo, la getAdderfunción del ejemplo anterior podría anotarse con tipos como este en PHP 7:

función  getAdder ( int  $x ) :  Cierre {  return  fn ( int  $y ) :  int  =>  $x  +  $y ; }$sumador  =  getSumador ( 8 ); echo  $ sumador ( 2 );  // imprime "10" echo  $sumador ( nulo );  // lanza una excepción porque se pasó un tipo incorrecto $adder  =  getAdder ([]);  // también lanzaría una excepción

De forma predeterminada, las declaraciones de tipo escalar siguen principios de tipificación débiles. Entonces, por ejemplo, si el tipo de un parámetro es int, PHP permitiría pasar a esa función no solo números enteros, sino también cadenas numéricas convertibles, flotantes o booleanos, y los convertiría. [71] Sin embargo, PHP 7 tiene un modo de "escritura estricta" que, cuando se usa, no permite dichas conversiones para llamadas a funciones y retornos dentro de un archivo. [71]

Objetos PHP

La funcionalidad básica de programación orientada a objetos se agregó en PHP 3 y se mejoró en PHP 4. [11] Esto permitió que PHP obtuviera una mayor abstracción, facilitando las tareas creativas para los programadores que utilizan el lenguaje. El manejo de objetos se reescribió por completo para PHP 5, ampliando el conjunto de funciones y mejorando el rendimiento. [228] En versiones anteriores de PHP, los objetos se manejaban como tipos de valores . [228] El inconveniente de este método era que el código tenía que hacer un uso intensivo de las variables de "referencia" de PHP si quería modificar un objeto que se le pasaba en lugar de crear una copia del mismo. En el nuevo enfoque, se hace referencia a los objetos por identificador y no por valor. [ cita necesaria ]

PHP 5 introdujo variables y métodos miembros privados y protegidos, junto con clases abstractas , clases finales , métodos abstractos y métodos finales . También introdujo una forma estándar de declarar constructores y destructores , similar a la de otros lenguajes orientados a objetos como C++ , y un modelo estándar de manejo de excepciones . Además, PHP 5 agregó interfaces y permitió implementar múltiples interfaces. Existen interfaces especiales que permiten que los objetos interactúen con el sistema de ejecución. Los objetos que implementan ArrayAccess se pueden usar con sintaxis de matriz y los objetos que implementan Iterator o IteratorAggregate se pueden usar con la foreach construcción del lenguaje . No hay ninguna función de tabla virtual en el motor, por lo que las variables estáticas se vinculan con un nombre en lugar de una referencia en el momento de la compilación. [229]

Si el desarrollador crea una copia de un objeto usando la palabra reservada clone, el motor Zend comprobará si __clone()se ha definido un método. De lo contrario, llamará a un valor predeterminado __clone()que copiará las propiedades del objeto. Si __clone()se define un método, será responsable de establecer las propiedades necesarias en el objeto creado. Para mayor comodidad, el motor proporcionará una función que importa las propiedades del objeto fuente, de modo que el programador pueda comenzar con una réplica por valor del objeto fuente y solo anular las propiedades que deban cambiarse. [230]

La visibilidad de las propiedades y métodos de PHP se define mediante las palabras clave public , privatey protected. El valor predeterminado es público, si solo se usa var ; vares sinónimo de public. publicSe puede acceder a los artículos declarados desde cualquier lugar. protectedlimita el acceso a las clases heredadas (y a la clase que define el elemento). privatelimita la visibilidad solo a la clase que define el elemento. [231] Los objetos del mismo tipo tienen acceso a los miembros privados y protegidos de cada uno aunque no sean la misma instancia. [ cita necesaria ]

Ejemplo

El siguiente es un ejemplo básico de programación orientada a objetos en PHP 8:

<?php usuario de clase  abstracta{  cadena  protegida $nombre ;  función  pública __construct ( cadena  $nombre ) { // ponemos la primera letra en mayúscula y el resto en minúsculas $this -> nombre  =  ucfirst ( strtolower ( $nombre )); }  función  pública saludar () :  cadena { devolver  "Hola, mi nombre es"  .  $este -> nombre ; }  trabajo de función pública  abstracta () : cadena ;  }clase  Estudiante  extiende  Usuario{  función  pública __construct ( cadena  $nombre ,  cadena privada  $curso )  { padre :: __construct ( $nombre ); }  trabajo de función  pública () : cadena  { devolver  "Aprendo"  .  $este -> curso ; }}clase  Profesor  extiende  Usuario{  función  pública __construct ( cadena  $nombre ,  matriz privada  $cursosdeenseñanza )  { padre :: __construct ( $nombre ); }  trabajo de función  pública () : cadena  { volver  "yo enseño"  .  implosionar ( ", " ,  $this -> cursosdeenseñanza ); }}$estudiantes  =  [ nuevo  estudiante ( "Alice" ,  "Ciencias de la Computación" ), nuevo  estudiante ( "Bob" ,  "Ciencias de la Computación" ), nuevo  estudiante ( "Charlie" ,  "Estudios Empresariales" ),];$profesores  =  [ nuevo  profesor ( "Dan" ,  [ "Ciencias de la Computación" ,  "Seguridad de la información" ]), nuevo  profesor ( "Erin" ,  [ "Ciencias de la Computación" ,  "Programación de gráficos 3D" ]), nuevo  profesor ( "Frankie" ,  [ "Marketing online" ,  "Estudios empresariales" ,  "Comercio electrónico" ]),];foreach  ([ $estudiantes ,  $profesores ]  como  $usuarios )  { echo  $usuarios [ 0 ] :: clase  .  "s: \n " ; array_walk ( $usuarios ,  función  ( Usuario  $usuario )  { echo  " { $usuario -> saludar () } , { $usuario -> trabajo () } \n " ; });}

Este programa genera lo siguiente:

Estudiantes:Hola, mi nombre es Alice, aprendo Ciencias de la Computación.Hola, mi nombre es Bob, aprendo Ciencias de la Computación.Hola, mi nombre es Charlie, estudio Ciencias Empresariales.Profesores:Hola, mi nombre es Dan, enseño Ciencias de la Computación, Seguridad de la Información.Hola, mi nombre es Erin, doy clases de informática y programación de gráficos 3D.Hola, mi nombre es Frankie, doy clases de Marketing Online, Estudios Empresariales, Comercio Electrónico.

Implementaciones

La única implementación PHP completa es la original, conocida simplemente como PHP. Es el más utilizado y está impulsado por Zend Engine . Para diferenciarlo de otras implementaciones, a veces se le llama extraoficialmente "Zend PHP". Zend Engine compila el código fuente PHP sobre la marcha en un formato interno que puede ejecutar, por lo que funciona como un intérprete . [232] [233] También es la "implementación de referencia" de PHP, ya que PHP no tiene ninguna especificación formal, por lo que la semántica de Zend PHP define la semántica de PHP. Debido a la semántica compleja y matizada de PHP, definida por cómo funciona Zend, es difícil que las implementaciones de la competencia ofrezcan compatibilidad completa. [ cita necesaria ]

El modelo de ejecución de solicitud única por script de PHP y el hecho de que Zend Engine sea un intérprete conducen a la ineficiencia; Como resultado, se han desarrollado varios productos para ayudar a mejorar el rendimiento de PHP. Para acelerar el tiempo de ejecución y no tener que compilar el código fuente PHP cada vez que se accede a la página web, los scripts PHP también se pueden implementar en el formato interno del motor PHP utilizando un caché de código de operación , que funciona almacenando en caché la forma compilada de un script PHP (códigos de operación) en la memoria compartida para evitar la sobrecarga de analizar y compilar el código cada vez que se ejecuta el script. Un caché de código de operación, Zend Opcache , está integrado en PHP desde la versión 5.5. [234] Otro ejemplo de caché de código de operación ampliamente utilizado es el caché PHP alternativo (APC), que está disponible como una extensión PECL . [235]

Si bien Zend PHP sigue siendo la implementación más popular, se han desarrollado varias otras implementaciones. Algunos de estos son compiladores o admiten la compilación JIT y, por lo tanto, ofrecen beneficios de rendimiento sobre Zend PHP a expensas de la falta de compatibilidad total con PHP. [ cita necesaria ] Las implementaciones alternativas incluyen las siguientes:

Licencia

PHP es software libre publicado bajo la Licencia PHP , que estipula que: [240]

Los productos derivados de este software no pueden denominarse "PHP", ni puede aparecer "PHP" en su nombre, sin el permiso previo por escrito de [email protected]. Puede indicar que su software funciona junto con PHP diciendo " Foo para PHP" en lugar de llamarlo "PHP Foo" o "phpfoo".

Esta restricción en el uso de “PHP” hace que la Licencia PHP sea incompatible con la Licencia Pública General (GPL), mientras que la Licencia Zend es incompatible debido a una cláusula publicitaria similar a la de la licencia BSD original . [241]

Desarrollo y comunidad

PHP incluye varias bibliotecas gratuitas y de código abierto en su distribución fuente o las utiliza en las compilaciones binarias PHP resultantes. PHP es fundamentalmente un sistema compatible con Internet con módulos integrados para acceder a servidores de Protocolo de transferencia de archivos (FTP) y muchos servidores de bases de datos, incluidos PostgreSQL , MySQL , Microsoft SQL Server y SQLite (que es una base de datos integrada), servidores LDAP y otros. . Numerosas funciones familiares para los programadores de C, como las de la familia stdio , están disponibles en compilaciones PHP estándar. [242]

PHP permite a los desarrolladores escribir extensiones en C para agregar funcionalidad al lenguaje PHP. Las extensiones de PHP pueden compilarse estáticamente en PHP o cargarse dinámicamente en tiempo de ejecución. Se han escrito numerosas extensiones para agregar soporte para la API de Windows , administración de procesos en sistemas operativos tipo Unix , cadenas multibyte ( Unicode ), cURL y varios formatos de compresión populares . Otras características de PHP disponibles a través de extensiones incluyen la integración con Internet Relay Chat (IRC), generación dinámica de imágenes y contenido de Adobe Flash , PHP Data Objects (PDO) como una capa de abstracción utilizada para acceder a bases de datos, [243] [244] [245] [246] [247] [248] [249] e incluso síntesis de voz . Algunas de las funciones principales del lenguaje, como las que tratan con cadenas y matrices, también se implementan como extensiones. [250] El proyecto PHP Extension Community Library (PECL) es un repositorio de extensiones del lenguaje PHP. [251]

Algunos otros proyectos, como Zephir , brindan la posibilidad de crear extensiones PHP en un lenguaje de alto nivel y compilarlas en extensiones PHP nativas. Este enfoque, en lugar de escribir extensiones PHP directamente en C, simplifica el desarrollo de extensiones y reduce el tiempo necesario para la programación y las pruebas. [252]

En diciembre de 2018, el Grupo PHP estaba formado por diez personas: Thies C. Arntzen, Stig Bakken, Shane Caraveo, Andi Gutmans , Rasmus Lerdorf , Sam Ruby , Sascha Schumann, Zeev Suraski , Jim Winstead y Andrei Zmievski . [253]

Zend Technologies proporciona una certificación PHP basada en el examen PHP 7 [254] (y anteriormente basada en PHP 5.5) para que los programadores se conviertan en desarrolladores certificados de PHP.

La Fundación PHP

El 26 de noviembre de 2021, el blog JetBrains anunció la creación de The PHP Foundation, que patrocinará el diseño y desarrollo de PHP. [256]

Instalacion y configuracion

Ejemplo de salida de la función phpinfo() en PHP 7.1

Hay dos formas principales de agregar soporte para PHP a un servidor web: como módulo de servidor web nativo o como ejecutable CGI. PHP tiene una interfaz de módulo directo llamada interfaz de programación de aplicaciones de servidor (SAPI), que es compatible con muchos servidores web, incluidos Apache HTTP Server , Microsoft IIS y iPlanet Web Server . Algunos otros servidores web, como OmniHTTPd, admiten la interfaz de programación de aplicaciones del servidor de Internet (ISAPI), que es la interfaz del módulo del servidor web de Microsoft . Si PHP no tiene soporte de módulo para un servidor web, siempre se puede utilizar como interfaz de puerta de enlace común (CGI) o procesador FastCGI ; en ese caso, el servidor web está configurado para utilizar el ejecutable CGI de PHP para procesar todas las solicitudes a archivos PHP. [257]

PHP-FPM (FastCGI Process Manager) es una implementación FastCGI alternativa para PHP, incluida con la distribución oficial de PHP desde la versión 5.3.3. [258] En comparación con la implementación anterior de FastCGI, contiene algunas características adicionales, principalmente útiles para servidores web muy cargados. [259]

Cuando se utiliza PHP para secuencias de comandos de línea de comandos, se necesita un ejecutable de interfaz de línea de comandos (CLI) de PHP. PHP admite una interfaz de programación de aplicaciones de servidor CLI (SAPI) desde PHP 4.3.0. [260] El objetivo principal de este SAPI es desarrollar aplicaciones shell utilizando PHP. Existen bastantes diferencias entre CLI SAPI y otros SAPI, aunque comparten muchos de los mismos comportamientos. [261]

PHP tiene una interfaz de módulo directo llamada SAPI para diferentes servidores web; [262] en el caso de PHP 5 y Apache 2.0 en Windows, se proporciona en forma de un archivo DLL llamado php5apache2.dll , [263] que es un módulo que, entre otras funciones, proporciona una interfaz entre PHP y el servidor web. , implementado en una forma que el servidor entienda. Este formulario es lo que se conoce como SAPI. [ cita necesaria ]

Existen diferentes tipos de SAPI para diversas extensiones de servidor web. Por ejemplo, además de los enumerados anteriormente, otros SAPI para el lenguaje PHP incluyen la interfaz de puerta de enlace común y la interfaz de línea de comandos. [262] [264]

PHP también se puede utilizar para escribir aplicaciones de interfaz gráfica de usuario (GUI) de escritorio mediante la extensión PHP-GTK . PHP-GTK no está incluido en la distribución oficial de PHP, [257] y como extensión, solo se puede usar con las versiones de PHP 5.1.0 y posteriores. La forma más común de instalar PHP-GTK es compilándolo desde el código fuente. [265]

Cuando PHP se instala y utiliza en entornos de nube , se proporcionan kits de desarrollo de software (SDK) para utilizar funciones específicas de la nube. [ cita necesaria ] Por ejemplo:

Se admiten numerosas opciones de configuración, que afectan tanto a las funciones principales como a las extensiones de PHP. [268] [269] El archivo de configuración php.inise busca en diferentes ubicaciones, dependiendo de la forma en que se utilice PHP. [270] El archivo de configuración se divide en varias secciones, [271] mientras que algunas de las opciones de configuración también se pueden configurar dentro de la configuración del servidor web. [272]

Usar

Una descripción general amplia del paquete de software LAMP, que se muestra aquí junto con Squid

PHP es un lenguaje de programación de propósito general que es especialmente adecuado para el desarrollo web del lado del servidor , en cuyo caso PHP generalmente se ejecuta en un servidor web . El tiempo de ejecución de PHP ejecuta cualquier código PHP en un archivo solicitado , generalmente para crear contenido dinámico de una página web o imágenes dinámicas utilizadas en sitios web o en otros lugares. [273] También se puede utilizar para secuencias de comandos de línea de comandos y aplicaciones de interfaz gráfica de usuario (GUI) del lado del cliente . PHP se puede implementar en la mayoría de los servidores web, muchos sistemas operativos y plataformas , y se puede utilizar con muchos sistemas de gestión de bases de datos relacionales (RDBMS). La mayoría de los proveedores de alojamiento web admiten PHP para que lo utilicen sus clientes. Está disponible de forma gratuita y PHP Group proporciona el código fuente completo para que los usuarios puedan crearlo, personalizarlo y ampliarlo para su propio uso. [17]

Página web dinámica: ejemplo de scripting del lado del servidor (PHP y MySQL)

Originalmente diseñado para crear páginas web dinámicas , PHP ahora se centra principalmente en secuencias de comandos del lado del servidor , [274] y es similar a otros lenguajes de secuencias de comandos del lado del servidor que proporcionan contenido dinámico desde un servidor web a un cliente , como Python , Microsoft ' s ASP.NET , páginas JavaServer de Sun Microsystems , [275] y . PHP también ha atraído el desarrollo de muchos marcos de software que proporcionan bloques de construcción y una estructura de diseño para promover el desarrollo rápido de aplicaciones (RAD). [ cita requerida ] Algunos de estos incluyen PRADO , CakePHP , Symfony , CodeIgniter , Laravel , Yii Framework , Phalcon y Laminas , que ofrecen características similares a otros frameworks web .mod_perl

La arquitectura LAMP se ha vuelto popular en la industria web como forma de implementar aplicaciones web. [276] PHP se usa comúnmente como P en este paquete junto con Linux , Apache y MySQL , aunque la P también puede referirse a Python , Perl o alguna combinación de los tres. Paquetes similares, WAMP y MAMP , también están disponibles para Windows y macOS , donde la primera letra representa el sistema operativo respectivo. Aunque tanto PHP como Apache se proporcionan como parte de la instalación básica de macOS, los usuarios de estos paquetes buscan un mecanismo de instalación más simple que pueda mantenerse actualizado más fácilmente. [ cita necesaria ]

Para escenarios de uso específicos y más avanzados, PHP ofrece una forma bien definida y documentada de escribir extensiones personalizadas en C o C++ . [277] [278] [279] [280] [281] [282] [283] [ se necesita fuente no primaria ] Además de extender el lenguaje en forma de bibliotecas adicionales , las extensiones proporcionan una manera de mejorar la velocidad de ejecución donde es fundamental y hay margen de mejora mediante el uso de un verdadero lenguaje compilado . [284] [285] PHP también ofrece formas bien definidas de integrarse en otros proyectos de software. De esa manera, PHP se puede utilizar fácilmente como lenguaje de programación interno para otro proyecto, proporcionando también una estrecha interfaz con las estructuras de datos internas específicas del proyecto . [286]

PHP recibió críticas mixtas debido a la falta de soporte para subprocesos múltiples en el nivel del lenguaje central, [287] aunque el uso de subprocesos es posible gracias a la extensión PECL "pthreads" . [288] [289]

Se han producido una interfaz de línea de comandos, php-cli y dos motores de scripting ActiveX Windows Script Host para PHP. [ cita necesaria ]

Estadísticas de popularidad y uso

<div style="border:sólido transparente;color de fondo:inicial;posición:absoluta;ancho:160px;alto de línea:0;

Cuota de uso de las versiones de PHP el 28 de enero de 2024 [18] [290] [291] [292] [293]

  PHP 8,3 (0,19%)
  PHP 8,2 (3,80%)
  PHP 8,1 (9,34%)
  PHP 8,0 (10,59%)
  PHP 7,4 (39,93%)
  PHP 7,3 (8,11%)
  PHP 7,2 (5,82%)
  PHP 7,1 (2,59%)
  PHP 7,0 (2,35%)
  PHP 5,6 (9,23%)
  PHP 5,5 (2,65%)
  PHP 5,4 (2,55%)
  PHP 5,3 (1,44%)
  PHP 5,2 (1,18%)
  PHP 5,1 (0,07%)
  PHP 5,0 (0,02%)
  PHP 4.x (0,2%)

PHP se utiliza para sistemas de gestión de contenido web , incluidos MediaWiki , [294] WordPress , [295] Joomla , [296] Drupal , [297] Moodle , [298] eZ Publish , eZ Platform y SilverStripe . [299]

En enero de 2013 , PHP se utilizaba en más de 240 millones de sitios web (39% de los muestreados) y estaba instalado en 2,1 millones de servidores web . [300]

A partir del 28 de enero de 2024 (2 meses después del lanzamiento de PHP 8.3), PHP se utiliza como lenguaje de programación del lado del servidor en el 76,5% de los sitios web donde se puede determinar el idioma; PHP 7 es la versión más utilizada del lenguaje: el 58,8% de los sitios web que utilizan PHP están en esa versión, mientras que el 23,9% usa PHP 8 y ​​el 17,1% usa PHP 5. [18]

Seguridad

En 2019, el 11% de todas las vulnerabilidades enumeradas en la Base de datos nacional de vulnerabilidades estaban vinculadas a PHP; [301] históricamente, alrededor del 30% de todas las vulnerabilidades enumeradas desde 1996 en esta base de datos están vinculadas a PHP. Los fallos técnicos de seguridad del propio lenguaje o de sus bibliotecas principales no son frecuentes (22 en 2009, aproximadamente el 1% del total, aunque PHP se aplica a aproximadamente el 20% de los programas enumerados). [302] Al reconocer que los programadores cometen errores, algunos lenguajes incluyen verificación de contaminación para detectar automáticamente la falta de validación de entrada , lo que genera muchos problemas. Esta característica se está desarrollando para PHP, [303] pero su inclusión en una versión ha sido rechazada varias veces en el pasado. [304] [305]

Existen parches de protección avanzada como Suhosin y Hardening -Patch, especialmente diseñados para entornos de alojamiento web. [306]

Históricamente, las versiones antiguas de PHP tenían algunos parámetros de configuración y valores predeterminados para dichas configuraciones de tiempo de ejecución que hacían que algunas aplicaciones PHP fueran propensas a problemas de seguridad. Entre éstas, magic_quotes_gpclas directivas de configuración register_globals[307] eran las más conocidas; este último hacía que cualquier parámetro de URL se convirtiera en variable PHP, abriendo un camino para graves vulnerabilidades de seguridad al permitir que un atacante estableciera el valor de cualquier variable global no inicializada e interfiriera con la ejecución de un script PHP. La compatibilidad con las configuraciones de " comillas mágicas " y "registro global" ha quedado obsoleta desde PHP 5.3.0 y se eliminó de PHP 5.4.0. [308]

Otro ejemplo de la posible vulnerabilidad de la configuración del tiempo de ejecución proviene de no deshabilitar la ejecución de PHP (por ejemplo, mediante el uso de la enginedirectiva de configuración) [309] para el directorio donde se almacenan los archivos cargados; habilitarlo puede resultar en la ejecución de código malicioso incrustado en los archivos cargados. [310] [311] [312] La mejor práctica es ubicar el directorio de imágenes fuera de la raíz del documento disponible para el servidor web y servirlo a través de un script intermediario o deshabilitar la ejecución de PHP para el directorio que almacena los archivos cargados. [ cita necesaria ]

Además, habilitar la carga dinámica de extensiones PHP (a través de enable_dluna directiva de configuración) [313] en un entorno de alojamiento web compartido puede provocar problemas de seguridad. [314] [315]

Las conversiones de tipos implícitas que dan como resultado que valores diferentes se traten como iguales, a veces en contra de la intención del programador, pueden provocar problemas de seguridad. Por ejemplo, el resultado de la comparación '0e1234' == '0'es true, porque las cadenas que se pueden analizar como números se convierten en números; en este caso, el primer valor comparado se trata como notación científica que tiene el valor (0 × 10 1234 ), que es cero. Errores como este resultaron en vulnerabilidades de autenticación en Simple Machines Forum , [316] Typo3 [317] y phpBB [318] cuando se compararon los hashes de contraseñas MD5 . La forma recomendada es utilizar hash_equals() (para sincronizar la seguridad de los ataques) o el operador de identidad ( ), como resulta en . [319]strcmp==='0e1234' === '0'false

En un análisis de 2013 de más de 170.000 desfiguraciones de sitios web , publicado por Zone-H , la técnica utilizada con más frecuencia (53%) fue la explotación de la vulnerabilidad de inclusión de archivos , principalmente relacionada con el uso inseguro de las construcciones del lenguaje PHP include, requirey allow_url_fopen. [320] [321]

Al 23 de diciembre de 2023, (1 mes después del lanzamiento de PHP 8.3), W3Techs informa que el 85,9% de los sitios web que utilizan PHP utilizan versiones 8.0 o anteriores (que ya no son compatibles con el equipo de desarrollo de PHP). [322]

Al 23 de diciembre de 2023 , el 13,6% de todos los sitios web todavía utilizan la versión 5. [291] Se recomienda encarecidamente migrar a PHP 8.1 o posterior y utilizar random_int()[323] en lugar de rand()[324] o [325] ya que estas últimas funciones no son criptográficamente seguras. Hay dos ataques que se pueden realizar sobre fuentes de entropía PHP: "ataque semilla" y "ataque de recuperación de estado". [ cita necesaria ] Con actual [ ¿cuándo? ] Tecnologías GPU, un atacante puede realizar hasta 2,30 cálculos MD5 por segundo con una GPU de $250, mientras que con $500 adicionales puede alcanzar hasta 2,32 cálculos . [326] En combinación con un " ataque de cumpleaños ", esto puede provocar graves vulnerabilidades de seguridad. [ cita necesaria ]mt_rand()

Ver también

Referencias

  1. ^ ab Lerdorf, Rasmus (8 de junio de 1995). "Anuncio: Herramientas de la página de inicio personal (herramientas PHP)" . Consultado el 7 de junio de 2011 .
  2. ^ ab Lerdorf, Rasmus (26 de abril de 2007). "PHP on Hormones - presentación de la historia de PHP realizada por Rasmus Lerdorf en la Conferencia MySQL en Santa Clara, California". La Red de Conversaciones. Archivado desde el original el 6 de enero de 2019 . Consultado el 11 de diciembre de 2009 .
  3. ^ "PHP: Archivo de noticias - 2024". www.php.net .
  4. ^ "PHP: Argumentos de función - Manual". seguro.php.net .
  5. ^ "PHP: Archivos de publicación (museo)". museo.php.net .
  6. ^ "PHP: Prefacio - Manual".
  7. ^ Stogov, Dmitry [@dstogov] (4 de diciembre de 2015). "No es un secreto que algunas ideas de optimización de #PHP7 provienen de HHVM, LuaJIT y V8. Gracias @HipHopVM @SaraMG. #php7thankyou" (Tweet) - vía Twitter .
  8. ^ "PHP: preprocesador de hipertexto". www.php.net . Consultado el 12 de febrero de 2020 .
  9. ^ ab Krill, Paul (18 de noviembre de 2013). "Cree en las exageraciones: el fundador de PHP respalda la tecnología HipHop de Facebook". InfoMundo . Consultado el 13 de octubre de 2022 .
  10. ^ "Anuncio: Herramientas de la página de inicio personal (herramientas PHP)". grupos.google.com . Consultado el 3 de noviembre de 2022 .
  11. ^ abcdefghi "Historia de PHP y proyectos relacionados". El grupo PHP . Consultado el 25 de febrero de 2008 .
  12. ^ ab "Historia de PHP". php.net .
  13. ^ Olsson, Mikaël (4 de septiembre de 2013). Referencia rápida de secuencias de comandos PHP. Presione. ISBN 978-1-4302-6284-8.
  14. ^ Manual de PHP: Prefacio, www.php.net.
  15. ^ "Introducción: ¿Qué puede hacer PHP?". Manual PHP . Consultado el 5 de marzo de 2009 .
  16. ^ helicóptero: puerto de node-ar-drone que permite al usuario controlar un Parrot AR Drone a través de PHP: jolicode/php-ar-drone, JoliCode, 2019-01-11 , consultado el 23 de febrero de 2019
  17. ^ ab "Incrustar PHP en HTML". O'Reilly. 2001-05-03. Archivado desde el original el 19 de febrero de 2008 . Consultado el 25 de febrero de 2008 .
  18. ^ abc "Estadísticas de uso de PHP para sitios web". W3Techs: encuestas sobre tecnología de la World Wide Web . W3Techs . Consultado el 28 de enero de 2024 .
  19. ^ "Estadísticas de uso y cuota de mercado de PHP versión 8 para sitios web, febrero de 2024". w3techs.com . Consultado el 13 de febrero de 2024 .
  20. ^ Lerdorf, Rasmus (20 de julio de 2012). "Me pregunto por qué la gente sigue escribiendo que PHP alguna vez se escribió en Perl. Nunca lo fue. #php". Gorjeo . Consultado el 4 de septiembre de 2014 .
  21. ^ Lerdorf, Rasmus (26 de abril de 2007). "PHP sobre hormonas". La Red de Conversaciones. Archivado desde el original (mp3) el 6 de enero de 2019 . Consultado el 22 de junio de 2009 .
  22. ^ Lerdorf, Rasmus (2007). "Diapositiva 3". "diapositivas para la charla 'PHP sobre hormonas'" . El grupo PHP . Consultado el 22 de junio de 2009 .
  23. ^ Lerdorf, Rasmus (8 de junio de 1995). "Anuncio: Herramientas de la página de inicio personal (herramientas PHP)". Grupo de noticias : comp.infosystems.www.authoring.cgi . Consultado el 17 de septiembre de 2006 .
  24. ^ "Rasmus Lerdorf, técnico senior de Yahoo: PHP, detrás del micrófono". 2003-11-19. Archivado desde el original el 28 de julio de 2013.
  25. ^ Alshetwi, AB; Rahmat, RAAO; Borhan, Minnesota; Ismael, S.; Ali, A.; Irtema, ÉL; Alfakhria, AY (2018). "Sistema experto basado en web para optimizar el tráfico por carretera en países en desarrollo" (PDF) . Consultado el 13 de febrero de 2024 .
  26. ^ "Problemas con PHP" . Consultado el 20 de diciembre de 2010 .
  27. ^ "php.internals: Re: Coherencia del nombre de la función". noticias.php.net . 28 de diciembre de 2013 . Consultado el 9 de febrero de 2014 .
  28. ^ Rasmus Lerdorf (16 de diciembre de 2013). "Re: Denominación de funciones flexibles". Grupo de noticias : php.internals . Consultado el 26 de diciembre de 2013 .
  29. ^ "PHP - Acrónimo que significa voto". PHP.net . Archivado desde el original el 15 de agosto de 2000.
  30. ^ "Zend Engine versión 2.0: descripción general y diseño de funciones". Zend Technologies Ltd. Archivado desde el original el 19 de julio de 2006 . Consultado el 17 de septiembre de 2006 .
  31. ^ "archivo de noticias de php.net 2007". El grupo PHP. 2007-07-13 . Consultado el 22 de febrero de 2008 .
  32. ^ Kerner, Sean Michael (1 de febrero de 2008). "PHP 4 está muerto: larga vida a PHP 5". Noticias de Internet. Archivado desde el original el 6 de agosto de 2018 . Consultado el 16 de diciembre de 2018 .
  33. ^ Trachtenberg, Adam (15 de julio de 2004). "¡Por qué PHP 5 es genial!". O'Reilly. Archivado desde el original el 31 de marzo de 2016 . Consultado el 22 de febrero de 2008 .
  34. ^ "Enlace estático tardío en PHP". Sándwich Digital. 23 de febrero de 2006 . Consultado el 25 de marzo de 2008 .
  35. ^ "Palabra clave estática". El grupo PHP . Consultado el 25 de marzo de 2008 .
  36. ^ "GoPHP5". Archivado desde el original el 17 de julio de 2011.
  37. ^ "Los proyectos PHP unen fuerzas para pasar a PHP 5" (PDF) . Comunicado de prensa de GoPHP5 . Archivado desde el original (PDF) el 4 de agosto de 2019 . Consultado el 23 de febrero de 2008 .
  38. ^ "GoPHP5". IrPHP5. Archivado desde el original el 27 de abril de 2011 . Consultado el 22 de febrero de 2008 .
  39. ^ "Instalación y configuración de PHP". php.net . Consultado el 29 de octubre de 2013 .
  40. ^ "PHP para Windows: versiones de fuentes y binarios (5.3)". php.net . Consultado el 29 de octubre de 2013 .
  41. ^ "PHP para Windows: versiones de fuentes y binarios (5.4)". php.net . Consultado el 29 de octubre de 2013 .
  42. ^ "PHP para Windows: versiones de fuentes y binarios (5.5)". php.net . Consultado el 29 de octubre de 2013 .
  43. ^ "PHP: versiones compatibles".
  44. ^ "Tipos: cadenas (manual de PHP)". PHP.net . Consultado el 22 de septiembre de 2013 .
  45. ^ "Detalles del tipo de cadena (Manual de PHP)". PHP.net . Consultado el 22 de septiembre de 2021 .
  46. ^ Andréi Zmievski (10 de agosto de 2005). "Documento de diseño de soporte PHP Unicode" (Lista de correo) . Consultado el 9 de febrero de 2014 .
  47. ^ "PHP 5,5 o 6,0" . Consultado el 9 de febrero de 2014 .
  48. ^ Andréi Zmievski (22 de abril de 2011). "Lo bueno, lo malo y lo feo: qué pasó con Unicode y PHP 6" . Consultado el 9 de febrero de 2014 .
  49. ^ Rasmus Lerdorf (11 de marzo de 2010). "PHP 6" (Lista de correo) . Consultado el 7 de febrero de 2014 .
  50. ^ "El interminable debate de los Muppets entre PHP 6 y PHP 7". Archivado desde el original el 19 de noviembre de 2015 . Consultado el 19 de noviembre de 2015 .
  51. ^ "RFC: nombre de la próxima versión de PHP". php.net . 2014-07-07 . Consultado el 15 de julio de 2014 .
  52. ^ "Re: [PHP-DEV] [VOTAR] [RFC] Nombre de la próxima versión de PHP (nuevamente)". 2014-07-30 . Consultado el 30 de julio de 2014 .
  53. ^ "phpng: motor PHP refactorizado con gran mejora de rendimiento". noticias.php.net .
  54. ^ "PHP: rfc: phpng". php.net . Consultado el 16 de diciembre de 2014 .
  55. ^ ab "PHP: phpng". php.net . Consultado el 15 de julio de 2014 .
  56. ^ "Fusionar rama 'ZendEngine3'". github.com . 2014-12-05 . Consultado el 5 de diciembre de 2014 .
  57. ^ abc "PHP: proceso de lanzamiento". 2011-06-20 . Consultado el 6 de octubre de 2013 .
  58. ^ ab "PHP RFC: excepciones en el motor (para PHP 7)". php.net . Consultado el 21 de mayo de 2015 .
  59. ^ ab "PHP RFC: sintaxis de variable uniforme". php.net . 2014-05-31 . Consultado el 30 de julio de 2014 .
  60. ^ "Editor PHP en línea | salida para udRhX". 3v4l.org .
  61. ^ "PHP RFC: corrige el comportamiento" foreach "". php.net . Consultado el 21 de mayo de 2015 .
  62. ^ "PHP RFC: comportamiento del constructor de clases internas". php.net . Consultado el 21 de mayo de 2015 .
  63. ^ "PHP RFC: Eliminación de SAPI y extensiones de PHP7 muertas o aún no portadas". php.net . Consultado el 21 de mayo de 2015 .
  64. ^ "PHP RFC: corregir la inconsistencia del comportamiento de la lista ()" . php.net . Consultado el 21 de mayo de 2015 .
  65. ^ "PHP RFC: eliminar etiquetas PHP alternativas". php.net . Consultado el 21 de mayo de 2015 .
  66. ^ "PHP RFC: hacer que la definición de varios casos predeterminados en un conmutador sea un error de sintaxis". php.net . Consultado el 21 de mayo de 2015 .
  67. ^ "PHP RFC: eliminar el soporte hexadecimal en cadenas numéricas". php.net . Consultado el 21 de mayo de 2015 .
  68. ^ ab "PHP RFC: semántica de enteros". php.net . Consultado el 21 de mayo de 2015 . Hacer que NaN e Infinity siempre se conviertan en cero cuando se convierten a un número entero significa una mayor coherencia entre plataformas y también es menos sorprendente de lo que se produce actualmente.
  69. ^ "PHP RFC: falla de ZPP por desbordamiento". php.net . Consultado el 21 de mayo de 2015 .
  70. ^ abc "RFC: tipos de devolución". php.net . 2015-01-27 . Consultado el 28 de enero de 2015 .
  71. ^ abcdef "RFC: declaraciones de tipo escalar". php.net . 2015-03-16 . Consultado el 17 de marzo de 2015 .
  72. ^ abcdefg Brent. "Novedades de PHP 8". Cosedora . Consultado el 22 de septiembre de 2020 .
  73. ^ "Lanzamiento de PHP 8". PHP . Consultado el 27 de noviembre de 2020 .
  74. ^ ab "PHP: rfc:jit". wiki.php.net . Consultado el 5 de abril de 2019 .
  75. ^ Brent. "PHP 8: rendimiento JIT en aplicaciones web de la vida real". Stitcher.io . Consultado el 4 de octubre de 2020 .
  76. ^ Rethams, Derick. "PHP 8: una mirada rápida a JIT".
  77. ^ ab Popov, Nikita. ""¿Qué hay de nuevo en PHP 8.0? "Nikita Popov". PHP viernes. Archivado desde el original el 11 de diciembre de 2021 . Consultado el 4 de octubre de 2020 .
  78. ^ Daniele, Carlo (25 de mayo de 2020). "Novedades de PHP 8 (características, mejoras y el compilador JIT)". Kinsta . Consultado el 24 de diciembre de 2020 .
  79. ^ Redmond, Paul (15 de julio de 2020). "Match Expression llegará a PHP 8". Noticias de Laravel . Consultado el 4 de octubre de 2020 .
  80. ^ "PHP 8.0: expresiones coincidentes". Reloj PHP . Consultado el 4 de octubre de 2020 .
  81. ^ Barnes, Eric (27 de noviembre de 2020). "¡PHP 8 ya está lanzado!". Noticias de Laravel . Consultado el 24 de diciembre de 2020 .
  82. ^ ab "PHP RFC: expresión de lanzamiento". wiki.php.net . Consultado el 14 de agosto de 2020 .
  83. ^ ab "PHP RFC: operador Nullsafe". wiki.php.net . Consultado el 14 de agosto de 2020 .
  84. ^ ab "PHP: rfc:weakrefs". wiki.php.net . Consultado el 5 de abril de 2019 .
  85. ^ Comerciante, Amit (13 de junio de 2020). "Estas nuevas funciones de cadena llegarán en PHP 8". Amit comerciante . Consultado el 4 de octubre de 2020 .
  86. ^ Popov, Nikita. "Convocatoria de participación: Anotación de argumentos de funciones internas y tipos de retorno". Externos . Consultado el 19 de noviembre de 2020 .
  87. ^ "Registro de cambios de PHP 8". PHP.net . Consultado el 5 de enero de 2024 .
  88. ^ "PHP: Anuncio de lanzamiento de PHP 8.1.0". PHP.net . Consultado el 5 de enero de 2024 .
  89. ^ "Registro de cambios de PHP 8". PHP.net . Consultado el 5 de enero de 2024 .
  90. ^ "PHP: Anuncio de lanzamiento de PHP 8.2.0". PHP.net . Consultado el 5 de enero de 2024 .
  91. ^ abcdefghijkl "Sucursales no admitidas". php.net . Consultado el 31 de julio de 2019 .
  92. ^ "Lanzamiento de PHP 4.0.0" . Consultado el 25 de octubre de 2020 .
  93. ^ abcd "PHP: Registro de cambios de PHP 4". El grupo PHP. 2008-01-03 . Consultado el 22 de febrero de 2008 .
  94. ^ "Anuncio de lanzamiento de PHP 4.1.0" . Consultado el 25 de octubre de 2020 .
  95. ^ "Anuncio de lanzamiento de PHP 4.2.0" . Consultado el 25 de octubre de 2020 .
  96. ^ "Anuncio de lanzamiento de PHP 4.3.0" . Consultado el 25 de octubre de 2020 .
  97. ^ "Usando PHP desde la línea de comandos". Manual PHP . El grupo PHP . Consultado el 11 de septiembre de 2009 .
  98. ^ "Anuncio de lanzamiento de PHP 4.4.0" . Consultado el 25 de octubre de 2020 .
  99. ^ "Anuncio de lanzamiento de PHP 4.4.0". Manual PHP . El grupo PHP . Consultado el 24 de noviembre de 2013 .
  100. ^ "¡Lanzamiento de PHP 5.0.0!" . Consultado el 25 de octubre de 2020 .
  101. ^ abc "PHP: Registro de cambios de PHP 5". El grupo PHP. 2007-11-08 . Consultado el 22 de febrero de 2008 .
  102. ^ "Anuncio de lanzamiento de PHP 5.1.0" . Consultado el 25 de octubre de 2020 .
  103. ^ "Manual de PHP: DOP". El grupo PHP. 2011-11-15 . Consultado el 15 de noviembre de 2011 .
  104. ^ "Anuncio de lanzamiento de PHP 5.2.0" . Consultado el 25 de octubre de 2020 .
  105. ^ "Anuncio de lanzamiento de PHP 5.3.0" . Consultado el 25 de octubre de 2020 .
  106. ^ "Anuncio de lanzamiento de PHP 5.4.0" . Consultado el 25 de octubre de 2020 .
  107. ^ "Servidor web integrado" . Consultado el 26 de marzo de 2012 .
  108. ^ "Anuncio de lanzamiento de PHP 5.5.0" . Consultado el 25 de octubre de 2020 .
  109. ^ abcd "Versiones compatibles". php.net . Consultado el 13 de diciembre de 2017 .
  110. ^ "Cambios en PHP 5.5.0". php.net . Consultado el 3 de marzo de 2015 .
  111. ^ "Anuncio de lanzamiento de PHP 5.6.0" . Consultado el 25 de octubre de 2020 .
  112. ^ "Migración de PHP 5.5.x a PHP 5.6.x". php.net . Consultado el 24 de marzo de 2014 .
  113. ^ "Restablecer PHP 6". Ha habido libros en los estantes que pretenden cubrir PHP 6 desde al menos 2008. Pero, en marzo de 2010, la versión PHP 6 no está disponible; de ​​hecho, ni siquiera está cerca de salir. Los acontecimientos recientes sugieren que PHP 6 no se lanzará antes de 2011, si es que se lanza.
  114. ^ "PHP 7 avanza a toda velocidad". 2014-10-31. Las versiones recientes de PHP han sido parte de la serie de lanzamientos 5.x, pero no habrá PHP 6. "Vamos a omitir [la versión] 6, porque hace años teníamos planes para una versión 6, pero esos planes fueron muy diferente de lo que estamos haciendo ahora", dijo Gutmans. Ir directamente a la versión 7 evita confusiones.
  115. ^ "Archivo de noticias - 2018: Lanzamiento de PHP 7.2.9". php.net . 2018-08-16 . Consultado el 16 de agosto de 2018 .
  116. ^ "PHP: rfc:size_t_and_int64_next". php.net . Consultado el 16 de diciembre de 2014 .
  117. ^ "PHP: rfc:abstract_syntax_tree". php.net . Consultado el 16 de diciembre de 2014 .
  118. ^ "PHP: rfc: cierre_apply". php.net . Consultado el 16 de diciembre de 2014 .
  119. ^ "PHP: rfc: integer_semantics". php.net . Consultado el 16 de diciembre de 2014 .
  120. ^ "PHP: rfc:isset_ternary". php.net . Consultado el 16 de diciembre de 2014 .
  121. ^ "RFC: sintaxis de escape de punto de código Unicode". 2014-11-24 . Consultado el 19 de diciembre de 2014 .
  122. ^ "Operador de comparación combinada (nave espacial)". php.net . Consultado el 21 de mayo de 2015 .
  123. ^ "PHP RFC: delegación de generadores". php.net . Consultado el 21 de mayo de 2015 .
  124. ^ "PHP RFC: clases anónimas". php.net . Consultado el 21 de mayo de 2015 .
  125. ^ "PHP RFC: CSPRNG fácil de usar". php.net . Consultado el 21 de mayo de 2015 .
  126. ^ "PHP RFC: declaraciones de uso grupal". php.net . Consultado el 21 de mayo de 2015 .
  127. ^ "PHP: rfc: iterable". php.net . 2016-06-10 . Consultado el 30 de junio de 2023 .
  128. ^ "PHP: rfc:nullable_types". php.net . 2014-04-10 . Consultado el 30 de junio de 2023 .
  129. ^ "PHP: rfc:void_return_type". php.net . 09/11/2015 . Consultado el 14 de noviembre de 2015 .
  130. ^ "PHP: rfc:class_constant_visibility". php.net . 2015-10-27 . Consultado el 8 de diciembre de 2015 .
  131. ^ "PHP: rfc: short_list_syntax". php.net . 2016-04-07 . Consultado el 30 de junio de 2023 .
  132. ^ "PHP: rfc: captura múltiple". php.net . 2016-03-06 . Consultado el 30 de junio de 2023 .
  133. ^ "PHP: rfc: sugerencia de tipo de objeto". wiki.php.net .
  134. ^ "PHP: rfc:libsodio". wiki.php.net .
  135. ^ "PHP: rfc: permitir-anulación-de-función-abstracta". wiki.php.net .
  136. ^ "PHP: rfc: parámetro-sin-tipo-varianza". wiki.php.net .
  137. ^ "PHP: todo: php73". wiki.php.net .
  138. ^ "PHP: rfc:flexible_heredoc_nowdoc_syntaxes". wiki.php.net .
  139. ^ "PHP: rfc: lista_referencia_assignment". wiki.php.net .
  140. ^ "PHP: rfc:pcre2-migración". wiki.php.net .
  141. ^ "PHP: hora hora - Manual". php.net .
  142. ^ "¡Lanzamiento de PHP 7.4.0!". php.net . Consultado el 28 de noviembre de 2019 .
  143. ^ "PHP: rfc: typed_properties_v2". wiki.php.net . Consultado el 4 de abril de 2019 .
  144. ^ "PHP: rfc: precarga". wiki.php.net . Consultado el 4 de abril de 2019 .
  145. ^ "PHP: rfc:null_coalesce_equal_operator". wiki.php.net . Consultado el 4 de abril de 2019 .
  146. ^ "PHP: rfc: mejorar-openssl-pseudo-bytes aleatorios". wiki.php.net . Consultado el 4 de abril de 2019 .
  147. ^ "PHP: rfc:ffi". wiki.php.net . Consultado el 5 de abril de 2019 .
  148. ^ "PHP: rfc: permanente_hash_ext". wiki.php.net . Consultado el 5 de abril de 2019 .
  149. ^ "PHP: rfc: contraseña_registry". wiki.php.net . Consultado el 5 de abril de 2019 .
  150. ^ "PHP: rfc:mb_str_split". wiki.php.net . Consultado el 5 de abril de 2019 .
  151. ^ "PHP: rfc: referencia_reflexión". wiki.php.net . Consultado el 5 de abril de 2019 .
  152. ^ "PHP: rfc: desaprobar-y-eliminar-ext-wddx". wiki.php.net . Consultado el 5 de abril de 2019 .
  153. ^ "PHP: rfc:custom_object_serialization". wiki.php.net . Consultado el 5 de abril de 2019 .
  154. ^ "PHP: versiones compatibles". php.net . Consultado el 26 de noviembre de 2023 .
  155. ^ "PHP: rfc: negativo_array_index". wiki.php.net . Consultado el 5 de abril de 2019 .
  156. ^ "PHP RFC: Validación de métodos de rasgos abstractos". wiki.php.net . Consultado el 14 de agosto de 2020 .
  157. ^ "PHP RFC: comparaciones más sensatas entre cadenas y números". wiki.php.net . Consultado el 14 de agosto de 2020 .
  158. ^ "PHP RFC: cadenas numéricas más sensatas". wiki.php.net . Consultado el 14 de agosto de 2020 .
  159. ^ "PHP RFC: comprobaciones de tipo más estrictas para operadores aritméticos/bit a bit". wiki.php.net . Consultado el 14 de agosto de 2020 .
  160. ^ "PHP RFC: Reclasificación de advertencias del motor". wiki.php.net . Consultado el 14 de agosto de 2020 .
  161. ^ "PHP: rfc: consistente_type_errors". wiki.php.net . Consultado el 5 de abril de 2019 .
  162. ^ "PHP: rfc:lsp_errors". wiki.php.net . Consultado el 26 de mayo de 2019 .
  163. ^ "PHP RFC: flotante independiente de la configuración regional para conversión de cadena". wiki.php.net . Consultado el 14 de agosto de 2020 .
  164. ^ "PHP RFC: ajustes de sintaxis variable". wiki.php.net . Consultado el 14 de agosto de 2020 .
  165. ^ "PHP RFC: Atributos V2". wiki.php.net . Consultado el 14 de agosto de 2020 .
  166. ^ "PHP RFC: modificaciones de atributos". wiki.php.net . Consultado el 14 de agosto de 2020 .
  167. ^ "PHP RFC: sintaxis de atributos más corta". wiki.php.net . Consultado el 20 de junio de 2020 .
  168. ^ "PHP RFC: cambio de sintaxis de atributos más corto". wiki.php.net . Consultado el 14 de agosto de 2020 .
  169. ^ "PHP RFC: argumentos con nombre". wiki.php.net . Consultado el 14 de agosto de 2020 .
  170. ^ "PHP RFC: expresión de coincidencia v2". wiki.php.net . Consultado el 14 de agosto de 2020 .
  171. ^ "PHP RFC: Promoción de propiedades de constructores". wiki.php.net . Consultado el 14 de agosto de 2020 .
  172. ^ "PHP RFC: tipos de unión 2.0". wiki.php.net . Consultado el 14 de agosto de 2020 .
  173. ^ "PHP RFC: tipo mixto v2". wiki.php.net . Consultado el 14 de agosto de 2020 .
  174. ^ "PHP RFC: tipo de retorno estático". wiki.php.net . Consultado el 14 de agosto de 2020 .
  175. ^ "PHP RFC: capturas sin captura". wiki.php.net . Consultado el 14 de agosto de 2020 .
  176. ^ André, Tyson. "PHP RFC: extensión JSON siempre disponible". PHP . Consultado el 25 de octubre de 2020 .
  177. ^ "PHP: todo: php81". wiki.php.net . Consultado el 16 de junio de 2022 .
  178. ^ "PHP RFC: notación literal entera octal explícita". wiki.php.net . Consultado el 25 de noviembre de 2020 .
  179. ^ "PHP RFC: enumeraciones". wiki.php.net . Consultado el 25 de marzo de 2021 .
  180. ^ "PHP: rfc:readonly_properties_v2". wiki.php.net . Consultado el 26 de noviembre de 2021 .
  181. ^ "PHP: rfc: first_class_callable_syntax". wiki.php.net . Consultado el 26 de noviembre de 2021 .
  182. ^ "PHP: rfc:new_in_initializers". wiki.php.net . Consultado el 26 de noviembre de 2021 .
  183. ^ "PHP: rfc: tipos de intersección pura". wiki.php.net . Consultado el 26 de noviembre de 2021 .
  184. ^ "PHP: rfc: noreturn_type". wiki.php.net . Consultado el 26 de noviembre de 2021 .
  185. ^ "PHP: rfc:final_class_const". wiki.php.net . Consultado el 26 de noviembre de 2021 .
  186. ^ "PHP: rfc: fibras". wiki.php.net . Consultado el 26 de noviembre de 2021 .
  187. ^ "PHP: todo: php82". wiki.php.net . Consultado el 16 de junio de 2022 .
  188. ^ "PHP: rfc:readonly_classes". wiki.php.net . Consultado el 16 de junio de 2022 .
  189. ^ "PHP: rfc: tipos-independientes-falso-nulos". wiki.php.net . Consultado el 16 de junio de 2022 .
  190. ^ "PHP: rfc: tipo verdadero". wiki.php.net . Consultado el 16 de junio de 2022 .
  191. ^ "PHP: rfc: strtolower-ascii". wiki.php.net . Consultado el 16 de junio de 2022 .
  192. ^ "PHP: rfc: dnf_types". wiki.php.net . Consultado el 7 de febrero de 2023 .
  193. ^ "PHP: rfc:constants_in_traits". wiki.php.net . Consultado el 7 de febrero de 2023 .
  194. ^ "¡Lanzamiento de PHP 8.3.0!". php.net . 23 de noviembre de 2023 . Consultado el 24 de noviembre de 2023 .
  195. ^ "PHP: rfc: typed_class_constants". wiki.php.net . Consultado el 17 de diciembre de 2023 .
  196. ^ "PHP: rfc:dynamic_class_constant_fetch". wiki.php.net . Consultado el 17 de diciembre de 2023 .
  197. ^ "PHP: rfc:marking_overriden_methods". wiki.php.net . Consultado el 17 de diciembre de 2023 .
  198. ^ "PHP: rfc:readonly_amendments". wiki.php.net . Consultado el 17 de diciembre de 2023 .
  199. ^ "PHP: rfc:json_validate". wiki.php.net . Consultado el 17 de diciembre de 2023 .
  200. ^ "PHP: rfc:randomizer_additions". wiki.php.net . Consultado el 17 de diciembre de 2023 .
  201. ^ "PHP: ElePHPant". 4 de octubre de 2014 . Consultado el 4 de octubre de 2014 .
  202. ^ "Redireccionando ...". wwphp-fb.github.io .
  203. ^ "El nacimiento de la mascota PHP: ¡el creador del elePHPant Vincent Pontier revela la verdadera historia!". 7php.com . 2014-01-06.
  204. ^ "ElePHPant". PHP.tierra . Consultado el 13 de febrero de 2024 .
  205. ^ "PHP: ElePHPant". www.php.net .
  206. ^ "Una guía de campo sobre elefantes". afieldguidetoelephpants.net .
  207. ^ "etiquetas - Manual". php.net . Consultado el 17 de febrero de 2014 .
  208. ^ ab "PHP: rfc: shortags". php.net . 2008-04-03 . Consultado el 8 de mayo de 2014 .
  209. ^ "PHP: sintaxis básica". El grupo PHP . Consultado el 22 de febrero de 2008 .
  210. ^ "Estándar de codificación básica". Grupo de interoperabilidad del framework PHP . Consultado el 3 de enero de 2016 .
  211. ^ "eco - Manual". php.net . Consultado el 17 de febrero de 2014 .
  212. ^ "Descripción de las directivas principales de php.ini - Manual". php.net . 2002-03-17 . Consultado el 17 de febrero de 2014 .
  213. ^ "Su primera página habilitada para PHP". El grupo PHP . Consultado el 25 de febrero de 2008 .
  214. ^ Rebuzno, Tim; et al. (26 de noviembre de 2008). "Instrucciones de procesamiento". Lenguaje de marcado extensible (XML) 1.0 (quinta edición) . W3C . Consultado el 18 de junio de 2009 .
  215. ^ "Variables". El grupo PHP . Consultado el 16 de marzo de 2008 .
  216. ^ "Separación de instrucciones". El grupo PHP . Consultado el 16 de marzo de 2008 .
  217. ^ "Comentarios". El grupo PHP . Consultado el 16 de marzo de 2008 .
  218. ^ "Enteros en PHP, funcionamiento con tijeras y portabilidad". Blog de rendimiento de MySQL. 27 de marzo de 2007 . Consultado el 28 de marzo de 2007 .
  219. ^ abcde "Tipos". El grupo PHP . Consultado el 16 de marzo de 2008 .
  220. ^ "Cuerdas". El grupo PHP . Consultado el 21 de marzo de 2008 .
  221. ^ "SPL - Biblioteca PHP estándar". PHP.net . 16 de marzo de 2009 . Consultado el 16 de marzo de 2009 .
  222. ^ ab "Funciones definidas por el usuario (manual de PHP)". php.net . 2014-07-04 . Consultado el 7 de julio de 2014 .
  223. ^ ab "Funciones variables (manual de PHP)". php.net . 2014-07-04 . Consultado el 7 de julio de 2014 .
  224. ^ "create_function() (manual de PHP)". php.net . 2022-04-06 . Consultado el 4 de mayo de 2022 .
  225. ^ "Funciones anónimas (manual de PHP)". php.net . 2014-07-04 . Consultado el 7 de julio de 2014 .
  226. ^ "Funciones de flecha (manual de PHP)". php.net . Consultado el 25 de enero de 2021 .
  227. ^ Christian Seiler; Dmitry Stogov (1 de julio de 2008). "Solicitud de comentarios: funciones y cierres de Lambda". php.net . Consultado el 7 de julio de 2014 .
  228. ^ ab "Referencias de objetos PHP 5". mjtsai.com . Consultado el 16 de marzo de 2008 .
  229. ^ "Clases y objetos (PHP 5)". El grupo PHP . Consultado el 16 de marzo de 2008 .
  230. ^ "Clonación de objetos". El grupo PHP . Consultado el 16 de marzo de 2008 .
  231. ^ "Visibilidad (Manual de PHP)". theserverpages.com . 2005-05-19. Archivado desde el original el 24 de septiembre de 2010 . Consultado el 26 de agosto de 2010 .
  232. ^ "¿Cómo funcionan los lenguajes informáticos?". Archivado desde el original el 16 de julio de 2011 . Consultado el 4 de noviembre de 2009 .
  233. ^ Gilmore, W. Jason (23 de enero de 2006). Principiantes de PHP y MySQL 5: de principiante a profesional. Presione. pag. 43.ISBN _ 1590595521.
  234. ^ "[VOTAR] Integración de Zend Optimizer+ en la distribución PHP". noticias.php.net . Consultado el 8 de marzo de 2013 .
  235. ^ "Caché PHP alternativa". PHP.net . Archivado desde el original el 15 de noviembre de 2013 . Consultado el 21 de septiembre de 2013 .
  236. ^ "Somos el 98,5% (y el 16%)« HipHop Virtual Machine ". hhvm.com . Diciembre 2013 . Consultado el 23 de febrero de 2014 .
  237. ^ "Los puntos de referencia definitivos de PHP 5.6, 7.0, 7.1, 7.2 y 7.3 (2019)". 2019-01-14 . Consultado el 19 de abril de 2019 .
  238. ^ Krill, Paul (20 de septiembre de 2017). "¡Olvídese de PHP! El motor HHVM de Facebook cambia a Hack". InfoMundo . Consultado el 6 de febrero de 2019 .
  239. ^ "Anuncio en GitHub que elimina la compatibilidad con HPHPc". GitHub . Consultado el 24 de mayo de 2013 .
  240. ^ "La licencia PHP, versión 3.01" . Consultado el 20 de mayo de 2010 .
  241. ^ "Licencias de software libre incompatibles con GPL". Licencias Varias y Comentarios sobre ellas . Fundación de Software Libre . Consultado el 3 de enero de 2011 .
  242. ^ "PHP: Listado de funciones y métodos - Manual". El grupo PHP . Consultado el 14 de enero de 2015 .
  243. ^ "Introducción - Manual". php.net . 2013-06-07 . Consultado el 13 de junio de 2013 .
  244. ^ Darryl Patterson (5 de agosto de 2004). "Simplifique la lógica empresarial con PHP DataObjects - O'Reilly Media". ibm.com . Archivado desde el original el 16 de diciembre de 2014 . Consultado el 16 de diciembre de 2014 .
  245. ^ "IBM - Estados Unidos" . Consultado el 16 de diciembre de 2014 .
  246. ^ "Cinco problemas comunes de bases de datos PHP". ibm.com . 2006-08-01 . Consultado el 13 de junio de 2013 .
  247. ^ "IBM Redbooks: desarrollo de aplicaciones PHP para servidores de datos IBM". redbooks.ibm.com . Consultado el 16 de diciembre de 2014 .
  248. ^ "Revista php[architect] - La revista para programadores de PHP". www.phparch.com .
  249. ^ Krill, Paul (19 de octubre de 2005). "PHP se está imponiendo en las empresas, compitiendo con Java". InfoMundo . Archivado desde el original el 13 de julio de 2014.
  250. ^ "Referencia cruzada: /PHP_5_4/ext/standard/". php.net . Archivado desde el original el 16 de marzo de 2012 . Consultado el 16 de diciembre de 2014 .
  251. ^ "Desarrollo de extensiones PHP personalizadas". devnewz.com . 2002-09-09. Archivado desde el original el 18 de febrero de 2008 . Consultado el 25 de febrero de 2008 .
  252. ^ "¿Por qué Zephir?". zephir-lang.com . 2015-10-20 . Consultado el 14 de diciembre de 2015 .
  253. ^ "Créditos PHP" . Consultado el 16 de diciembre de 2018 .
  254. ^ "Aprenda PHP mediante formación PHP y certificación PHP". www.zend.com . Consultado el 16 de noviembre de 2020 .
  255. ^ Caminante, James (13 de diciembre de 2021). "Qué significa la nueva base PHP para el futuro de PHP". Cómo hacerlo geek . Consultado el 26 de noviembre de 2023 .
  256. ^ "La nueva vida de PHP - La Fundación PHP | El Blog PhpStorm". El blog de JetBrains . 22 de noviembre de 2021 . Consultado el 16 de junio de 2022 .
  257. ^ ab "Consideraciones generales de instalación". php.net . Consultado el 22 de septiembre de 2013 .
  258. ^ "Archivo de noticias: ¡Lanzamiento de PHP 5.3.3!". php.net . 2010-07-22.
  259. ^ "Administrador de procesos FastCGI (FPM)". php.net . Consultado el 22 de septiembre de 2013 .
  260. ^ "Uso de la línea de comandos: Introducción". php.net . Consultado el 22 de septiembre de 2013 .
  261. ^ "Uso de la línea de comandos: diferencias con otros SAPI". php.net . Consultado el 22 de septiembre de 2013 .
  262. ^ ab "Consideraciones generales de instalación". php.net . Consultado el 22 de septiembre de 2013 .
  263. ^ "PHP: Apache 2.x en Microsoft Windows". php.net . Archivado desde el original el 26 de septiembre de 2013 . Consultado el 22 de septiembre de 2013 .
  264. ^ "Uso de la línea de comandos: Introducción". php.net . Consultado el 22 de septiembre de 2013 .
  265. ^ "Instalación de PHP-GTK 2". php.net . Consultado el 22 de septiembre de 2013 .
  266. ^ "SDK de AWS para PHP". aws.amazon.com . Consultado el 6 de marzo de 2014 .
  267. ^ "Windows Azure SDK para PHP: Centro de laboratorios y puentes de interoperabilidad". interoperabilidadbridges.com . Archivado desde el original el 20 de marzo de 2014 . Consultado el 6 de marzo de 2014 .
  268. ^ "Configuración del tiempo de ejecución: índice". php.net . Consultado el 22 de septiembre de 2013 .
  269. ^ "Directivas php.ini: Lista de directivas php.ini". php.net . Consultado el 22 de septiembre de 2013 .
  270. ^ "Configuración del tiempo de ejecución: el archivo de configuración". PHP.net . Consultado el 22 de septiembre de 2013 .
  271. ^ "Directivas php.ini: lista de secciones php.ini". PHP.net . Consultado el 22 de septiembre de 2013 .
  272. ^ "Configuración del tiempo de ejecución: donde se puede establecer una configuración". PHP.net . Consultado el 22 de septiembre de 2013 .
  273. ^ "Procesamiento manual de imágenes PHP y GD";. php.net . Consultado el 9 de abril de 2011 .
  274. ^ "Lenguaje de secuencias de comandos del lado del servidor PHP". Universidad de Indiana . 2007-04-04. Archivado desde el original el 21 de enero de 2016 . Consultado el 25 de febrero de 2008 .
  275. ^ "Tecnología JavaServer Pages: documento técnico de comparación de métodos de JavaServer Pages para contenido dinámico del lado del servidor". Microsistemas solares . Consultado el 25 de febrero de 2008 .
  276. ^ "Cinco formas sencillas de ajustar su aplicación LAMP". IBM . 2011-01-25.
  277. ^ "PHP en el núcleo: estructura de extensión". PHP.net . Consultado el 22 de septiembre de 2013 .
  278. ^ "PHP en el núcleo: la extensión" contador "-un ejemplo continuo". PHP.net . Consultado el 22 de septiembre de 2013 .
  279. ^ "Escritura de extensiones, parte I: Introducción a PHP y Zend". Tecnologías Zend . 2005-03-01. Archivado desde el original el 24 de septiembre de 2013 . Consultado el 22 de septiembre de 2013 .
  280. ^ "Escritura de extensiones, parte II: parámetros, matrices y ZVAL". Tecnologías Zend . 2005-06-06. Archivado desde el original el 26 de septiembre de 2013 . Consultado el 22 de septiembre de 2013 .
  281. ^ "Escritura de extensiones, parte II: parámetros, matrices y ZVAL (continuación)". Tecnologías Zend . 2005-06-06. Archivado desde el original el 26 de septiembre de 2013 . Consultado el 22 de septiembre de 2013 .
  282. ^ "Escritura de extensión, parte III: recursos". Tecnologías Zend . 2006-05-12. Archivado desde el original el 26 de septiembre de 2013 . Consultado el 22 de septiembre de 2013 .
  283. ^ "Conclusión de clases de C++ en una extensión PHP". Tecnologías Zend . 2009-04-22. Archivado desde el original el 20 de septiembre de 2013 . Consultado el 22 de septiembre de 2013 .
  284. ^ "¿Extender PHP con C++?". Desbordamiento de pila . Consultado el 22 de septiembre de 2013 .
  285. ^ "¿Cómo puedo utilizar el código C++ para interactuar con PHP?". Desbordamiento de pila . Consultado el 22 de septiembre de 2013 .
  286. ^ Golemón, Sara (2006). Extendiendo e incrustando PHP . Sam. ISBN 978-0-672-32704-9.
  287. ^ "Solicitud n.º 46919: subprocesos múltiples". PHP.net . Consultado el 22 de septiembre de 2013 .
  288. ^ "pthreads: Introducción (Manual de PHP)". PHP.net . Consultado el 22 de septiembre de 2013 .
  289. ^ "PECL :: Paquete :: pthreads". pecl.php.net . Consultado el 9 de febrero de 2014 .
  290. ^ "Estadísticas de uso y cuota de mercado de PHP versión 4 para sitios web, enero de 2024". w3techs.com .
  291. ^ ab "Estadísticas de uso y participación de mercado de PHP versión 5 para sitios web, enero de 2024". w3techs.com .
  292. ^ "Estadísticas de uso y cuota de mercado de PHP versión 7 para sitios web, enero de 2024". w3techs.com .
  293. ^ "Estadísticas de uso y cuota de mercado de PHP versión 8 para sitios web, enero de 2024". w3techs.com .
  294. ^ "Manual: requisitos de instalación #PHP". MediosWiki. 25 de enero de 2010 . Consultado el 26 de febrero de 2010 . PHP es el lenguaje de programación en el que está escrito MediaWiki [...]
  295. ^ "Acerca de WordPress" . Consultado el 26 de febrero de 2010 . WordPress fue construido sobre PHP
  296. ^ Kempkens, Alex. "¡Joomla! - Sistema de gestión de contenidos para crear sitios web y aplicaciones".
  297. ^ "PHP y Drupal". Drupal.org. 16 de septiembre de 2007 . Consultado el 13 de junio de 2010 .
  298. ^ "Acerca de". Moodle.org . Consultado el 20 de diciembre de 2009 .
  299. ^ "Requisitos del servidor de SilverStripe". Archivado desde el original el 28 de noviembre de 2014 . Consultado el 13 de octubre de 2014 . SilverStripe requiere PHP 5.3.2+
  300. ^ Ide, Andy (31 de enero de 2013). "PHP simplemente crece y crece" . Consultado el 1 de abril de 2013 .
  301. ^ "Estadísticas de vulnerabilidades de búsqueda de la base de datos nacional de vulnerabilidades (NVD)" . Consultado el 22 de noviembre de 2019 .
  302. ^ "PHP: rfc: contaminación". wiki.php.net .
  303. ^ "Notas de la reunión de desarrolladores, noviembre de 2005".
  304. ^ "Decisión sobre el modo de contaminación, noviembre de 2007". Archivado desde el original el 26 de febrero de 2009.
  305. ^ "Proyecto PHP reforzado". 2008-08-15. Archivado desde el original el 24 de febrero de 2019 . Consultado el 22 de agosto de 2019 .
  306. ^ "Seguridad: uso de Register Globals". Manual PHP . PHP.net . Consultado el 22 de septiembre de 2013 .
  307. ^ "Citas mágicas". Manual PHP . PHP.net . Consultado el 17 de enero de 2014 .
  308. ^ "Directiva de configuración del 'motor'". PHP: configuración de tiempo de ejecución . PHP.net . Consultado el 13 de febrero de 2014 .
  309. ^ "Explotación de seguridad PHP con imágenes GIF". 2007-06-22. Archivado desde el original el 27 de septiembre de 2013 . Consultado el 22 de septiembre de 2013 .
  310. ^ "Explosión de seguridad de PHP con imágenes GIF". Blog de clases de PHP. 2007-06-20 . Consultado el 22 de septiembre de 2013 .
  311. ^ "Pasar PHP malicioso a través de getimagesize()". 2007-06-04. Archivado desde el original el 21 de septiembre de 2013 . Consultado el 22 de septiembre de 2013 .
  312. ^ "Directiva de configuración 'enable_dl'" . PHP: configuración de tiempo de ejecución . PHP.net . Consultado el 13 de febrero de 2014 .
  313. ^ "Referencia de función PHP: dl()". PHP.net . Consultado el 22 de septiembre de 2013 .
  314. ^ "Mi anfitrión no repara su troyano". Charla sobre alojamiento web . Consultado el 22 de septiembre de 2013 .
  315. ^ Raz0r (25 de enero de 2013). "Foro de máquinas simples <= 2.0.3 Restablecimiento de contraseña de administrador".{{cite web}}: Mantenimiento CS1: nombres numéricos: lista de autores ( enlace )
  316. ^ Seguridad de mordisco. "EXPLICACIÓN DE TYPO3-SA-2010-020, TYPO3-SA-2010-022".
  317. ^ "Криптостойкость и небезопасное сравнение". Ahack.ru (en ruso).
  318. ^ "Operadores de comparación". PHP.net.
  319. ^ Krawczyk, Pawel (2013). "Ataques más comunes a aplicaciones web". IPSec.pl. Archivado desde el original el 15 de abril de 2015 . Consultado el 15 de abril de 2015 .
  320. ^ Krawczyk, Pawel (2013). "Entonces, ¿cuáles son las fallas de aplicación" más críticas "? En el nuevo OWASP Top 10". IPSec.pl . Consultado el 15 de abril de 2015 .
  321. ^ "Estadísticas de uso y cuota de mercado de PHP para sitios web, diciembre de 2023". w3techs.com . Consultado el 23 de diciembre de 2020 .
  322. ^ "PHP: Random_int - Manual".
  323. ^ "PHP: Rand - Manual".
  324. ^ "PHP: Mt_rand - Manual".
  325. ^ "Olvidé su contraseña: ataques aleatorios contra aplicaciones PHP". www.readkong.com .

Otras lecturas

Escuche este artículo ( 35 minutos )
Icono de Wikipedia hablado
Este archivo de audio se creó a partir de una revisión de este artículo con fecha del 23 de noviembre de 2011 y no refleja ediciones posteriores. ( 23/11/2011 )

enlaces externos