This is a good article. Click here for more information.
Listen to this article

PHP

Ir a: navegación, búsqueda de
Este artículo está sobre el lenguaje de scripting. Para otras aplicaciones, vea PHP (desambiguación).
PHP
PHP-logo.svg
Paradigma de Imperativo de, funcional, orientado a objetos, procedimiento, reflexivo
Diseñado por Rasmus Lerdorf
Desarrollador El equipo de desarrollo de PHP, Zend Technologies
Apareció por primera vez 08 de junio de 1995; hace 21 años)1995-06-08)[1]
Versión estable
7.1.2 [2] 17 de febrero de 2017 ; hace 21 días )2017-02-17)
Disciplina de mecanografía Dinámica, débil, gradual (a partir de PHP 7.0.0)[3]
Lenguaje de implementación C (principalmente; algunos de los componentes C++)
OS Unix-como, Windows
Licencia de Licencia PHP (la mayoría de motor Zend bajo Licencia de motor de Zend & La Licencia TSRM)
Extensiones de nombre de archivo .php .phtml, .php3, PHP4, .php5, .php7, .phps
Sitio web php.net
Principales implementaciones de
Motor de Zend, HHVM, Phalanger, Quercus, Proyecto cero, Loro
Influenciado por
C, C++, Java, Perl, TCL[1]
Influenciado
Halcón, Hack
  • Programación PHP en Wikilibros

PHP es un server-side scripting lenguaje diseñado principalmente para Desarrollo Web pero también se utiliza como un lenguaje de programación de propósito general. Creado originalmente por Rasmus Lerdorf en 1994,[4] el PHP implementación de referencia ahora es producido por el equipo de desarrollo de PHP.[5] Estaba parado originalmente para PHP Página de inicio personal,[4] pero ahora está parado para el acrónimo recursivo PHP: Hypertext Preprocessor.[6]

Código PHP puede incluirse en HTML o código de HTML5, o puede utilizarse en combinación con varios sistemas de plantilla Web, sistemas de gestión de contenidos web y frameworks web. Código PHP generalmente es procesado por un PHP intérprete implementado como un módulo de en el servidor web o como un Interfaz de Gateway común Ejecutables (CGI). El servidor web combina los resultados del código PHP interpretado y ejecutado, que puede ser cualquier tipo de datos, incluyendo imágenes, con la página web generada. Código PHP también puede ser ejecutado con un interfaz de línea de comandos (CLI) y puede usarse para implementar independiente aplicaciones gráficas.[7]

El intérprete PHP estándar, desarrollado por la Motor de Zend, es software libre publicado bajo la Licencia PHP. PHP ha sido ampliamente adaptado y se puede implementar en la mayoría de servidores web en casi todos Sistema operativo y plataforma, de forma gratuita.[8]

El lenguaje PHP evolucionado sin un escrito Especificación formal o estándar hasta el 2014, dejando al intérprete PHP canónico como un de hecho estándar. Desde 2014 trabajo ha pasado a crear una especificación formal de PHP.[9]

Contenido

  • 1 Historia
    • 1.1 Historia temprana
    • 1.2 PHP 3 y 4
    • 1.3 PHP 5
    • 1.4 PHP 6 y Unicode
    • 1.5 PHP 7
    • 1.6 Historia de lanzamiento
  • 2 Mascota
  • 3 Sintaxis de
    • 3.1 Tipos de datos
    • 3.2 Funciones
    • 3.3 Programación orientada a objetos
  • 4 Implementaciones de
  • 5 Concesión de licencias
  • 6 Desarrollo y comunidad
  • 7 Instalación y configuración
  • 8 Uso
  • 9 Seguridad
  • 10 Véase también
  • 11 Referencias
  • 12 Lectura adicional
  • 13 Acoplamientos externos

Historia

Historia temprana

Rasmus Lerdorf (izquierda), quien escribió el original Interfaz de Gateway común Componente (CGI), junto con Andi Gutmans (medio) y Zeev Suraski (derecha), que reescribió la Analizador que formó PHP 3.

PHP desarrollo comenzó en 1995 cuando Rasmus Lerdorf escribió varios Interfaz de Gateway común Programas (CGI) en C,[10][11][12] que utiliza para mantener su Página personal. Extendió para trabajar con formularios web forms y comunicarse con bases de datosy esta implementación "Personal Home Page/formas intérprete" o PHP/FI.

PHP/FI podría ayudar a construir simple y dinámico aplicaciones Web. Para acelerar el error presentación de informes y para mejorar el código, Lerdorf inicialmente anunció el lanzamiento de PHP/FI como "Versión Personal página herramientas PHP 1.0" en la Usenet Grupo de discusión comp.Infosystems.www.Authoring.cgi en 08 de junio de 1995.[13][14] Esta versión ya tenía la funcionalidad básica que PHP tiene a partir de 2013. Esto incluyó Variables de Perl-como, manipulación de la forma y la capacidad de incrustar HTML. El Sintaxis de se asemejó a la de Perl, pero era más simple, más limitado y menos consistente.[5]

Lerdorf no tenía intención de PHP temprano para convertirse en un nuevo lenguaje de programación, pero creció orgánicamente, con Lerdorf observando en retrospectiva: "no sé cómo pararlo, nunca hubo ninguna intención de escribir un lenguaje de programación [...] No tengo absolutamente ni idea cómo escribir un lenguaje de programación, solo seguí agregando el siguiente paso lógico en el camino."[15] Un equipo de desarrollo comenzó al formulario y, después de meses de trabajo y Beta pruebas, oficialmente lanzado PHP/FI 2 en noviembre de 1997.

El hecho de que PHP carecía de un diseño general original pero en su lugar se desarrolló orgánicamente ha llevado al nombramiento inconsistente de pedidos incoherentes de sus parámetros y funciones.[16] En algunos casos, los nombres de las funciones fueron elegidos para que coincida con las bibliotecas de nivel inferior que PHP fue "envolver",[17] mientras que en algunas versiones muy tempranas de PHP la longitud de los nombres de función se utiliza internamente como un función hash, por lo que los nombres fueron elegidos para mejorar la distribución de los valores hash.[18]

PHP 3 y 4

Zeev Suraski y Andi Gutmans reescribió el Analizador en 1997 y formó la base del php3, cambiando el nombre de la lengua a la acrónimo recursivo PHP: Hypertext Preprocessor.[5][19] Luego, prueba pública de PHP 3 comenzaron, y el lanzamiento oficial se produjo en junio de 1998. Suraski y Gutmans comenzó entonces una nueva reescribir la del núcleo de PHP, produciendo la Motor de Zend en 1999.[20] También fundaron Zend Technologies en Ramat GanIsrael.[5]

22 de mayo de 2000, fue lanzado PHP 4, con la 1.0 de motor Zend.[5] En agosto de 2008 esta rama alcanzó versión 4.4.9. PHP 4 ya no está bajo desarrollo ni se publicará las actualizaciones de seguridad.[21][22]

PHP 5

13 de julio de 2004, fue lanzado PHP 5, accionado por el nuevo Zend Engine II.[5] PHP 5 incluye nuevas características tales como soporte mejorado para programación orientada a objetos, la extensión de los objetos de datos de PHP (PDO) (que define una interfaz ligera y consistente para acceder a bases de datos) y numerosas mejoras de rendimiento.[23] PHP 5 se convirtió la versión estable sólo bajo desarrollo en 2008. Enlace estático había estado faltando desde PHP y se añadió en la versión 5.3.[24][25]

Muchos proyectos de código abierto de alto perfil dejaron de soportar PHP 4 en el nuevo código a partir del 05 de febrero de 2008, debido a la iniciativa GoPHP5,[26] proporcionados por un consorcio de desarrolladores PHP promover la transición desde PHP 4 a PHP 5.[27][28]

Con el tiempo, intérpretes PHP llegó a estar disponibles en la mayoría de las 32-bit y 64-bit sistemas operativos, ya sea mediante la construcción de código PHP o mediante prefabricadas binarios.[29] Para las versiones PHP 5.3 y 5.4, disponible sólo Microsoft Windows fueron de las distribuciones binarias de 32 bits x86 construye,[30][31] modo de compatibilidad de Windows de 32 bits que requieren durante el uso de Servicios de Internet Information (IIS) en una plataforma Windows de 64 bits. PHP versión 5.5 hace el 64-bit x86-64 versiones disponibles para Microsoft Windows.[32]

PHP 6 y Unicode

PHP ha recibido críticas por carecer nativos Unicode soportan en el nivel de lengua básico, en cambio sólo apoyo bytes. En 2005, se inició un proyecto dirigido por Andrei Zmievski para traer soporte de Unicode nativo a través de PHP, incrustando los Componentes internacionales para Unicode Biblioteca (UCI) y que representa a cadenas de texto como UTF-16 internamente.[33] Ya que esto provocaría cambios importantes para el funcionamiento interno de la lengua y con código de usuario, fue planeado para lanzar esta versión 6.0 de la lengua, junto con otras características importantes entonces en desarrollo.[34]

Sin embargo, una escasez de programadores que entendían los cambios necesarios y problemas de rendimiento derivadas de la conversión a y de UTF-16, que raramente se utiliza en un contexto web, condujo a retrasos en el proyecto.[35] Como resultado, se creó una versión de PHP 5.3 en 2009, con muchas características no-Unicode portado detrás de PHP 6, en particular los espacios de nombres. En marzo de 2010, el proyecto en su forma actual fue oficialmente abandonado, y una versión de PHP 5.4 se preparó conteniendo más restantes características no-Unicode de PHP 6, como rasgos y cierre volver a atar.[36] Esperanza inicial era que formarían un nuevo plan para la integración de Unicode, pero a partir de 2014 no se han adoptado.

PHP 7

Durante 2014 y 2015, se desarrolló una nueva versión principal del PHP, que fue número 7 de PHP. La numeración de esta versión implicó un debate.[37] Mientras que el experimento de PHP 6 Unicode nunca había sido liberado, varios artículos y títulos de libros se hace referencia el nombre del PHP 6, que pudo haber causado confusión hubiera una nueva versión reutilizar el nombre.[38] Después de una votación, fue elegido el nombre PHP 7.[39]

La base de PHP 7 es un PHP rama originalmente fue bautizada como PHP generación (phpng). Fue creado por Dmitry Stogov, Xinchen Hui y Nikita Popov,[40] y dirigido a optimizar el rendimiento de PHP por refactorización el motor Zend para utilizar más compacto estructuras de datos con mejorado localidad de caché conservando compatibilidad casi total del idioma.[41] A partir del 14 de julio de 2014, WordPress-basado en puntos de referencia, que sirvió como el principal punto de referencia para el proyecto phpng, mostraron un aumento de casi 100% en rendimiento. También se esperan cambios de phpng para hacer más fácil mejorar el rendimiento en el futuro, como más compacta de las estructuras de datos y otros cambios se consideran más adecuados para una migración exitosa a un Just-in-time Compilador de (JIT).[42] Debido a los cambios significativos, es llamado el motor Zend reelaborado Motor Zend 3, sucediendo a Zend Engine 2 utilizado en PHP 5.[43]

Debido a cambios internos importantes en phpng, debe recibir un nuevo versión principal número de PHP, en lugar de una menor liberación de PHP 5, según el proceso de liberación de PHP.[44] Principales versiones de PHP se les permite romper la compatibilidad con versiones anteriores del código y por lo tanto PHP 7 presenta una oportunidad para otras mejoras más allá de phpng que requieren saltos de compatibilidad con versiones anteriores, incluyendo un mayor uso de excepciones,[45][46] trabajo sintaxis variable para ser más coherente y completo,[47] y la degradación o remoción de varias características heredadas.[48][49]

7 PHP también introdujo nuevas características de lenguaje, incluyendo declaraciones de tipo de valor devuelto de funciones,[50] que complementan las declaraciones de tipo de parámetro existente y soporte para los tipos escalares (entero, flotador, string y boolean) en parámetro y las declaraciones de tipo de valor devuelto.[51]

Historia de lanzamiento

Clave
Color Significado Desarrollo
Rojo Versión antigua No hay desarrollo
Amarillo Versión estable Correcciones de seguridad
Verde Versión estable Correcciones de bug y seguridad
Azul Versión futura Nuevas características
Versión Fecha de lanzamiento Soporte hasta[52] Notas
1.0 08 de junio de 1995 Oficialmente llamado "Personal Home Page herramientas (PHP Tools)". Este es el primer uso del nombre "PHP".[5]
2.0 01 de noviembre de 1997 Oficialmente llamado "PHP/FI 2.0". Esta es la primera versión que realmente podría ser caracterizada como PHP, siendo una lengua independiente con muchas características que han perdurado hasta la actualidad.
3.0 06 de junio de 1998 20 de octubre de 2000[52] Desarrollo se mueve de una persona a varios desarrolladores. Zeev Suraski y Andi Gutmans reescriben la base para esta versión.[5]
4.0 22 de mayo de 2000 23 de junio de 2001[52] Añadido más avanzada de dos etapas analizar/ejecutar el sistema de análisis de etiquetas llamado el motor Zend.[53]
4.1 10 de diciembre de 2001 12 de marzo de 2002[52] () Introducida "superglobales"$_GET, $_POST, $_SESSIONetc..)[53]
4.2 22 de abril de 2002 06 de septiembre de 2002[52] Con discapacidad register_globals de forma predeterminada. Datos recibidos por la red no se insertan directamente en el global espacio de nombres, cerrar posibles brechas de seguridad en aplicaciones.[53]
4.3 27 de diciembre de 2002 31 de marzo de 2005[52] Introdujo el interfaz de línea de comandos (CLI), para complementar el CGI.[53][54]
4.4 11 de julio de 2005 07 de agosto de 2008[52] Corregido un error de corrupción de memoria, que requiere romper la compatibilidad binaria con extensiones compilado contra la versión de PHP 4.3. x.[55]
5.0 13 de julio de 2004 05 de septiembre de 2005[52] Zend Engine II con un nuevo modelo de objeto.[56]
5.1 24 de noviembre de 2005 24 de agosto de 2006[52] Mejoras en el rendimiento con la introducción de las variables del compilador en reingeniería motor de PHP.[56] Añadido PHP datos objetos (DOP) como una interfaz consistente para acceder a bases de datos.[57]
5.2 02 de noviembre de 2006 06 de enero de 2011[52] Activada la extensión filtro por defecto. Nativo JSON apoyo.[56]
5.3 30 de junio de 2009 14 de agosto de 2014[52] Namespace apoyo; finales enlaces estáticos, etiqueta de salto (limitada Goto), cierres de, Archivos PHP (phar), recolección de basura para referencias circulares, mejorado Windows apoyo, sqlite3, mysqlnd como un reemplazo para compilada biblioteca subyacente para las extensiones que funcionan con MySQL, fileinfo como un reemplazo para mime_magic para mejor MIME apoyo, la extensión de la internacionalización y descarte de extensión ereg.
5.4 01 de marzo de 2012 03 de septiembre de 2015[52] Rasgo de soporte, soporte de sintaxis corta gama. Artículos sacados: register_globals, safe_mode, allow_call_time_pass_reference, session_register(), session_unregister() y session_is_registered(). Servidor web incorporado.[58] Varias mejoras en las funcionalidades existentes, funcionamiento y requisitos de memoria reducida.
5.5 20 de junio de 2013 21 de julio de 2016[52] Apoyo a la generadores de, Finalmente bloques de excepciones, manejo de OpCache (basado en Zend Optimizer +) incluido en la distribución oficial.[59]
5.6 28 de agosto de 2014 31 de diciembre de 2018[60] Expresiones escalares constantes, funciones variadic, argumento desembalaje, nuevo operador de exponenciación, extensiones de la uso Declaración de funciones y constantes, nuevas phpdbg depurador como un módulo SAPI y otras pequeñas mejoras.[61]
6.x No liberado N / A Abandonado versión de PHP que planeaba incluir soporte de Unicode nativo.[62][63]
7.0 03 de diciembre de 2015[2] 03 de diciembre de 2018[60] Zend Engine 3 (mejoras en el rendimiento[42] y el apoyo de entero de 64 bits en Windows[64]), uniforme sintaxis variable,[47] AST-basado en el proceso de compilación,[65] añadido Cierre::Llame al(),[66] consistencia de desplazamiento bit a bit a través de plataformas,[67] ?? (NULL se aglutinan) operador,[68] Unicode punto de código secuencia de escape,[69] devolver las declaraciones de tipo,[50] escalares (entero, flotador, string y boolean) las declaraciones de tipo,[51] <> = "nave espacial" comparación de tres vías operador,[70] generador de Delegación,[71] clases anónimas,[72] más simple y más consistentemente disponible CSPRNG API,[73] reemplazo de muchos restantes PHP "errores internos" con la más moderna excepciones,[45] y la sintaxis de la taquigrafía para la importación de varios elementos de un espacio de nombres.[74]
7.1 01 de diciembre de 2016[75][76] 01 de diciembre de 2019[60] tipo de valor devuelto void,[77] constante de clase modificadores de visibilidad,[78] tipos que aceptan valores NULL,[79] Iterable pseudo tipo,[80] captura de múltiples tipos de excepción.[81]

A partir del 28 de junio de 2011, el grupo de PHP implementa una línea de tiempo para el lanzamiento de nuevas versiones de PHP.[44] Bajo este sistema, por lo menos un lanzamiento ocurriera cada mes. Una vez al año, debe ocurrir una liberación menor que pueden incluir nuevas funciones. Cada versión menor debe disponerse por lo menos durante dos años con seguridad y correcciones de errores, seguidos por al menos un año solo de correcciones de seguridad, para un total de un proceso de liberación de tres años para cada versión de menor importancia. No hay novedades, salvo que son pequeño y autónomo, que se introducirá en una versión menor durante el proceso de liberación de tres años.

Mascota

El elePHPant, mascota PHP.

La mascota del proyecto PHP es el elePHPant, un azul elefante con el logo PHP por su parte, diseñado por Vincent Pontier[82] en 1998.[83] El elePHPant a veces diferentemente cuando se colorea juguete de la felpa forma.

Sintaxis de

Artículo principal: Semántica y sintaxis PHP

Los siguientes programa "Hola, mundo!" está escrito en código PHP incrustado en una HTML documento:

<! Html DOCTYPE >
<HTML>
    <cabeza>
        <Título>Prueba PHP< /Título>
    < /cabeza>
    <cuerpo>
        <? php Eco '< p > Hola mundo < /p >'; ? >
    < /cuerpo>
< /HTML>

Sin embargo, como no hay requisito existe para que código PHP embebido en HTML, la versión más simple de ¡Hola mundo! puede ser escrito como este, con la etiqueta de cierre que se omite como preferido en archivos que contienen código PHP puro[84]

 <? ="Hola, mundo";

El intérprete PHP sólo ejecuta código PHP dentro de su delimitadores de. Nada fuera de sus delimitadores no es procesado por PHP, aunque texto PHP no está todavía sujeto a estructuras de control descrito en código PHP. Los delimitadores más comunes son <? php para abrir y ? > para cerrar las secciones PHP. La forma abreviada ¿<? También existe. Esto hace que delimitador corta archivos de secuencia de comandos menos portable, desde apoyo para ellos puede ser desactivado en la configuración de PHP local y por lo tanto se desaconseja.[85][86] Sin embargo, no hay ninguna recomendación contra el uso de la etiqueta corta eco <? =.[87] Antes de PHP 5.4.0, esta sintaxis corta para echo() sólo funciona con el short_open_tag configuración configuración activada, mientras que para PHP 5.4.0 y más adelante está siempre disponible.[85][88][89] El propósito de estos delimitadores es separar el código PHP de contenido no son PHP, tales como JavaScript código o formato HTML.[90]

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

Variables van precedidas de un símbolo de dólary un tipo no necesita ser especificado con antelación. PHP 5 presentó tipo de sugerencias que permite funciones a la fuerza sus parámetros para ser objetos de una clase específica, arreglos de discos, interfaces o funciones de devolución de llamada. Sin embargo, antes de PHP 7.0, tipo consejos no podían utilizarse con tipos escalares como enteros o cadenas.[51]

A diferencia de los nombres de función y clase, nombres de variables distinguen mayúsculas y minúsculas. Dos comillas dobles ("") y heredoc cadenas ofrecen la posibilidad de interpolar el valor de la variable en la cadena.[92] PHP trata saltos de línea como espacio en blanco a la manera de un lenguaje de forma gratuita, y declaraciones son terminadas por un punto y coma.[93] PHP tiene tres tipos de Sintaxis de comentarios: /* */ marcas comentarios de bloque y en línea; // así como # se utilizan para los comentarios de una línea.[94] El Eco la declaración es una de varias instalaciones de que PHP proporciona al texto de salida, por ejemplo, en un explorador web.

En términos de palabras clave y sintaxis del lenguaje, PHP es similar a la sintaxis de estilo C. if condiciones, para y al mismo tiempo lazos y función devuelve es similar en sintaxis a lenguajes como C, C++, C#, Java y Perl.

El siguiente es un ejemplo de PHP para el lazo:

<? php 
para ($x = 0; $x < = 100; $x++) {
    Eco "el número es: $x < br >";
} 
? >

Tipos de datos

PHP almacena números enteros en un rango depende de la plataforma, 32-bit o 64-bit firmado entero equivalente a la Tipo largo de lenguaje C. Enteros sin signo se convierten a la firma valores en ciertas situaciones; Este comportamiento es diferente de la de otros lenguajes de programación.[95] Pueden asignar variables de número entero con decimales (positivos y negativos), octal, hexadecimal, y binario notaciones.

Punto flotante también se registran en una gama específica de la plataforma. Puede especificar utilizando notación de punto flotante, o dos formas de notación científica.[96] PHP tiene un nativo Boolean tipo que es similar a los tipos booleanos nativos en Java y C++. Usando las reglas de conversión de tipo booleano, valores distintos de cero se interpretan como true y el cero como falso, como en Perl y C++.[96]

El tipo de datos null representa una variable que no tiene ningún valor; NULL es el único permitido valor para este tipo de datos.[96]

Variables del tipo "recurso" representan referencias a recursos de fuentes externas. Estos normalmente son creados por funciones de una extensión particular y sólo pueden ser procesados por las funciones de la misma extensión; los ejemplos incluyen archivo, imagen y recursos de la base de datos.[96]

Arreglos de discos pueden contener elementos de cualquier tipo que puede manejar PHP, incluyendo recursos, objetos y otros arreglos de discos. Orden se conserva en las listas de valores y en hashes con las claves y valores, y los dos pueden ser entremezclados.[96] PHP también soporta cadenas, que puede ser utilizado con comillas simples, comillas dobles, nowdoc o heredoc Sintaxis.[97]

La librería estándar de PHP (SPL) intenta solucionar problemas estándar e implementa interfaces de acceso de datos eficiente y clases.[98]

Funciones

PHP define una gran variedad de funciones en el lenguaje y muchos también están disponibles en varias extensiones; Estas funciones están bien documentadas en la documentación de PHP.[99] Sin embargo, la biblioteca incorporada tiene una gran variedad de terminología y las incoherencias asociadas, como se describe en historia por encima de.

Funciones personalizadas pueden ser definidas por el desarrollador, por ejemplo:

función myAge($birthYear) {                                  define una función, éste se llama "myAge"
    $yearsOld = fecha('Y') - $birthYear;                       calcula la edad
    volver $yearsOld . 'año' . ($yearsOld != 1 ? de ' : ''); Devuelve la edad de una ficha descriptiva
}

Eco 'Estoy' . myAge(1981) . 'viejos'.;               salidas el texto concatenado
                                                              con el valor de retorno de myAge()
Como resultado de esta sintaxis, se llama myAge().

En 2017, la salida del programa anterior muestra es 'Actualmente tengo 36 años'.

En lugar de punteros a función, funciones en PHP pueden ser referenciadas por una cadena que contiene su nombre. De esta manera, las funciones normales de PHP pueden utilizarse, por ejemplo, como devoluciones de llamada o dentro tablas de función.[100] Funciones definidas por el usuario pueden crearse en cualquier momento sin ser el prototipo.[99][100] Las funciones pueden definirse dentro de bloques de código, permitiendo un decisión de tiempo de ejecución en cuanto a si o no una función debe definirse. Hay un function_exists función que determina si una función con un nombre ya ha sido definida. Llamadas de función deben utilizar paréntesis, con la excepción de clase sin argumentos constructor de funciones de llamada con el operador PHP Nuevo, en cuyo caso los paréntesis son opcionales.

Hasta PHP 5.3, soporte para funciones anónimas y cierres de no existía en PHP. Mientras que create_function) existe desde PHP 4.0.1, es simplemente una envoltura delgada alrededor de eval() que permite las funciones normales de PHP que se creará durante la ejecución del programa.[101] PHP 5.3 añadido sintaxis para definir una función anónima o «cierre»[102] que puede capturar las variables del ámbito circundante:

función getAdder($x) {
    volver función($y) uso ($x) {
        volver $x + $y;
    };
}

$adder = getAdder(8);
Eco $adder(2); imprime "10"

En el ejemplo anterior, getAdder() la función crea un cierre utilizando pasado argumento $x (la palabra clave uso las importaciones de una variable del contexto léxico), que toma un argumento adicional $yy devuelve el cierre creado a la persona que llama. Esta función es un objeto de primera clase, lo que significa que puede ser almacenado en una variable se pasa como parámetro a otras funciones, etcetera.[103]

Inusualmente idiomas dinámicamente mecanografiadas, PHP soporta las declaraciones de tipos de parámetros de la función, que se aplican en tiempo de ejecución. Esto ha sido apoyado por las clases e interfaces desde PHP 5.0, para arreglos de discos desde PHP 5.1, para "amortizables" desde PHP 5.4 y los tipos escalares (entero, flotador, string y boolean) desde PHP 7.0.[51] PHP 7.0 también tiene declaraciones de tipo para tipos de valor devuelto de función, expresadas colocando el nombre de tipo después de la lista de parámetros, precedido por dos puntos.[50] Por ejemplo, la getAdder función del ejemplo anterior podría anotarse con tipos así en PHP 7:

función getAdder(int $x): \Closure {
    volver función(int $y) uso ($x) : int {
        volver $x + $y;
    };
}

$adder = getAdder(8);
Eco $adder(2);        imprime "10"
Eco $adder(null);     produce una excepción porque se pasó de un tipo incorrecto
$adder = getAdder([]); también lanzaría una excepción

Por defecto, las declaraciones de tipo escalar siguen débiles principios de mecanografía. Así, por ejemplo, si tipo de un parámetro es int, PHP permitiría no sólo enteros, pero también convertibles cadenas numéricas, flotadores o booleanos a esa función y les convierta.[51] Sin embargo, PHP 7 tiene un modo "mecanografiar terminante" que, cuando se utiliza, no permite tales conversiones para llamadas a funciones y vuelve dentro de un archivo.[51]

Programación orientada a objetos

Básico programación orientada a objetos funcionalidad fue añadida en PHP 3 y mejorada en PHP 4.[5] Esto permitió para que obtener más abstracción, facilitando tareas creativas para programadores en el lenguaje PHP. Manejo de objeto fue completamente reescrito para PHP 5, ampliando el conjunto de características y mejorar el rendimiento.[104] En versiones anteriores de PHP, los objetos se manejaron como tipos de valor.[104] El inconveniente de este método era ese código tuvo que hacer uso intensivo de las variables de «referencia» de PHP si quisiera modificar un objeto que fue pasado en lugar de crear una copia de la misma. En el nuevo enfoque, se hace referencia a objetos por mangoy no por valor.

PHP 5 introduce privada y protegida variables miembro y métodos, junto con clases abstractas, clases finales, métodos abstractos, y métodos finales. También introdujo una forma estándar de la declaración de constructores de y destructores, similar a la de otros lenguajes orientados a objeto como C++y un estándar manejo de excepciones modelo. Además, ha añadido PHP 5 interfaces de y permitió varias interfaces a implementarse. Hay interfaces especiales que permiten a los objetos interactuar con el sistema de tiempo de ejecución. Objetos implementar ArrayAccess puede utilizarse con arreglo de discos sintaxis y objetos que implementan Iterador o IteratorAggregate se puede utilizar con el foreach construcción de la lengua. No hay ninguna mesa virtual característica en el motor, tan variables estáticas están limitados con un nombre en lugar de una referencia en tiempo de compilación.[105]

Si el desarrollador crea una copia de un objeto utilizando la palabra reservada clon, el motor Zend comprobará si una __clone() método ha sido definido. Si no, llamará por defecto __clone() que copia las propiedades del objeto. Si un __clone() se define el método, entonces será responsable de establecer las propiedades necesarias en el objeto creado. Para mayor comodidad, el motor suministra una función que importa las propiedades del objeto de origen, por lo que el programador puede empezar con un valor por réplica del objeto de origen y propiedades de anulación sólo que necesitan ser cambiadas.[106]

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

clase Persona
{
    público $firstName;
    público $lastName;

    público función __construct($firstName, $lastName = '') { argumento de segundo opcional
        $this->Apellido = $firstName;
        $this->Apellido  = $lastName;
    }

    público función saludar a() {
        volver 'Hola, mi nombre es' . $this->Apellido .
               (($this->Apellido != '') ? (' ' . $this->Apellido) : '') . '.';
    }

    público estática función staticGreet($firstName, $lastName) {
        volver 'Hola, mi nombre es' . $firstName . ' ' . $lastName . '.';
    }
}

$he    = Nuevo Persona('John', 'Smith');
$she   = Nuevo Persona('Sally', 'Davis');
$other = Nuevo Persona('iAmine');

Eco $he->saludar a(); imprime "Hola, mi nombre es John Smith."
Eco ' < br / >';

Eco $she->saludar a(); imprime "Hola, mi nombre es Sally Davis."
Eco ' < br / >';

Eco $other->saludar a(); imprime "Hola, mi nombre es iAmine."
Eco ' < br / >';

Eco Persona::staticGreet('Jane', 'Doe'); imprime "Hola, mi nombre es Jane Doe."

El visibilidad de PHP propiedades y métodos se define mediante la Palabras clave público, privado, y protegido. El valor por defecto es público, aunque sólo var se utiliza; var es un sinónimo de público. Artículos declarados público encontrará en todas partes. protegido limita el acceso a clases heredadas (y a la clase que define el artículo). privado límites de visibilidad sólo a la clase que define el elemento.[107] Objetos del mismo tipo tienen acceso a los miembros privados y protegidos aunque no sean la misma instancia. Características de visibilidad de miembro de PHP a veces se han descrito como "muy útil".[108] Sin embargo, a veces, también se han descrito como "irrelevantes en el mejor y al peor de los casos positivamente perjudiciales."[109]

Implementaciones de

El original, aplicación de PHP sólo completa y más ampliamente utilizada es accionada por el Motor de Zend y conocido simplemente como PHP. Para eliminar la ambigüedad de lo de otras implementaciones, a veces unofficially se refiere a como "Zend PHP". El motor de Zend recoge PHP código fuente on-the-fly en un formato interno que puede ejecutar, por lo tanto funciona como un intérprete.[110][111] También es la "implementación de referencia" de PHP, PHP no tiene ninguna especificación formal, como por lo que la semántica de PHP Zend define la semántica de PHP sí mismo. Debido a la semántica compleja y matizada de PHP, definida cómo funciona Zend, es difícil para las implementaciones que compiten ofrecer una compatibilidad completa.

Modelo de simple petición por secuencia de comandos ejecución de PHP y el hecho de que el motor Zend es un intérprete, conduce a la ineficacia; como resultado, diversos productos han sido desarrollados para ayudar a mejorar el rendimiento de PHP. Con el fin de 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, scripts PHP pueden también implantarse en formato interno del motor PHP usando un código de operación memoria caché, que trabaja por almacenamiento en caché la forma compilada de un script PHP (opcodes) en memoria compartida para evitar la sobrecarga de análisis sintáctico y compilación de el código cada vez que se ejecuta el script. Una caché de código de operación, Opcache Zend, está construido en PHP desde la versión 5.5.[112] Otro ejemplo de una caché de opcode ampliamente utilizado es el Escondrijo alternativo de PHP (APC), que está disponible como un PECL extensión.[113]

Mientras que Zend PHP sigue siendo la aplicación más popular, se han desarrollado varias otras implementaciones. Algunos de estos son compiladores de o apoyo Compilación JITy por lo tanto, ofrecen ventajas de rendimiento Zend PHP a costa de carecer de total compatibilidad con PHP. Implementaciones alternativas las siguientes:

  • Máquina Virtual de HipHop (HHVM) – desarrollado en Facebook y está disponible como código abierto, convierte código PHP en código de bytes de alto nivel (comúnmente conocido como un lenguaje intermedio), que luego se traduce en código de máquina x86-64 dinámicamente en tiempo de ejecución por un Just-in-time Compilador de (JIT), lo que resulta en mejoras de rendimiento de hasta 6 ×.[114]
  • Loro– una máquina virtual para ejecutar lenguajes dinámicos eficientemente; PIPP transforma el código fuente PHP en el Representación intermedia de loro, que luego es traducido en bytecode de Parrot y ejecutado por la máquina virtual.
  • Phalanger-compila PHP en Lengua intermedia común Bytecode (CIL)
  • HipHop– desarrollado en Facebook y está disponible como código abierto, transforma los scripts PHP en C++ código y, a continuación, compila el resultado código, reduciendo la carga del servidor hasta un 50%. A principios de 2013, Facebook lo desaprobado a favor de HHVM debido a múltiples razones, entre ellas las dificultades de implementación y la falta de soporte para el lenguaje de PHP todo, incluyendo la create_function) y eval() construcciones.[115]

Concesión de licencias

PHP es software libre publicado bajo la Licencia PHP, que establece que:[116]

Productos derivados de este software no pueden ser llamados "PHP", ni "PHP" aparezcan en su nombre, sin el previo permiso por escrito de group@php.net. Puede indicar que el software funciona en conjunto con PHP diciendo"Foo para PHP"en lugar de llamarlo"PHP Foo"o"phpfoo".

Esta restricción en el uso de "PHP" hace la licencia PHP incompatible con las Licencia pública general de (GPL), mientras que la licencia Zend es incompatible debido a una cláusula de publicidad similar a la del original Licencia BSD.[117]

Desarrollo y comunidad

PHP incluye varios bibliotecas gratis y de código abierto su distribución de código fuente, o en aplicaciones en binario resultante PHP construye. PHP es fundamentalmente un Internet-sistema cuenta con módulos incorporados para acceder a Protocolo de transferencia de archivos Servidores (FTP) y muchos servidores de base de datos, incluyendo PostgreSQL, MySQL, Microsoft SQL Server y SQLite (que es una base de datos incorporada), LDAP servidores y otros. Numerosas funciones familiares a los programadores de C, como los de la stdio familia, estan disponibles en versiones PHP estándar.[118]

PHP permite a los desarrolladores a escribir extensiones en C para agregar funcionalidad al lenguaje PHP. Extensiones de PHP pueden ser compiladas estáticamente en PHP o cargadas dinámicamente en tiempo de ejecución. Se han escrito numerosas extensiones para añadir soporte para el Windows API, gestión de procesos en Unix-como sistemas operativos, () cadenas multibyteUnicode), Rizoy varios populares formatos de compresión. Otras características PHP, disponible a través de extensiones incluyen integración con IRC, generación dinámica de imágenes y Adobe Flash contenido, Objetos de datos PHP (DOP) como un nivel de abstracción utilizado para acceder a bases de datos,[119][120][121][122][123][124][125] e incluso síntesis de voz. Algunas funciones básicas de la lengua, como los relacionados con cadenas y matrices, también se ponen en ejecución como extensiones.[126] El Biblioteca de comunidad la extensión PHP Proyecto (PECL) es un repositorio de extensiones para el lenguaje PHP.[127]

Algunos otros proyectos, tales como Céfiro, ofrecen la posibilidad de extensiones PHP en un lenguaje de alto nivel y compilado en extensiones nativas de PHP. 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 pruebas.[128]

El grupo de PHP consiste en diez personas (a partir de 2015): Thies C. Arntzen, Stig Bakken, Shane Caraveo, Andi Gutmans, Rasmus Lerdorf, Rubí del SAM, Sascha Schumann, Zeev Suraski, Jim Winstead, Andrei Zmievski.[129]

Zend Technologies proporciona un Certificación PHP basado en PHP 5.5[130] examen para los programadores a ser certificados los desarrolladores PHP.

Instalación y configuración

Hay dos formas principales para agregar soporte para PHP en un servidor web – como un módulo del servidor web nativo o como un ejecutable CGI. PHP dispone de una interfaz de módulo directo llamada Interfaz de programación de aplicaciones de servidor (SAPI), que es apoyada por muchos servidores web incluyendo Servidor HTTP Apache, Microsoft IIS, Netscape (ahora difunto) y iPlanet. Algunos otros servidores web, como OmniHTTPd, apoyan la Internet Server Application Programming Interface (ISAPI), que es un Microsoftde interfaz de módulo de servidor web. Si PHP no tiene módulo soporte para un servidor web, siempre puede utilizarse como un Interfaz de Gateway común (CGI) o FastCGI procesador; en ese caso, el servidor web está configurado para utilizar CGI de PHP ejecutable para procesar todas las peticiones a archivos PHP.[131]

PHP-FPM (FastCGI Process Manager) es una implementación alternativa de FastCGI para PHP, con la distribución oficial de PHP desde la versión 5.3.3.[132] En comparación con la mayor aplicación FastCGI, contiene algunas características adicionales, sobre todo útiles para servidores muy cargados.[133]

Cuando se utiliza PHP para scripting de línea de comandos, un PHP interfaz de línea de comandos Ejecutable (CLI) es necesario. PHP soporta una SAPI CLI a partir de PHP 4.3.0.[134] El objetivo principal de este SAPI está desarrollando cáscara aplicaciones utilizando PHP. Hay bastantes diferencias entre la SAPI CLI y otros SAPIs, aunque comparten muchas de las mismas conductas.[135]

PHP dispone de una interfaz de módulo directo llamada SAPI para servidores de web diferentes;[136] en el caso de PHP 5 y Apache 2.0 en Windows, se presenta en forma de un DLL, EL CUAL archivo llamado php5apache2.dll,[137] 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. Esta forma es lo que se conoce como una SAPI.

Hay diferentes tipos de SAPIs de varias extensiones de servidor de web. Por ejemplo, además de las SAPIs mencionados, otros para el PHP lenguaje incluyen la Interfaz de Gateway común (CGI) y interfaz de línea de comandos (CLI).[136][138]

PHP también puede utilizarse para escribir escritorio interfaz gráfica de usuario Aplicaciones (GUI), utilizando la PHP-GTK extensión. PHP-GTK no está incluido en la distribución oficial de PHP,[131] y como una extensión puede ser usado sólo con versiones de PHP 5.1.0 y posteriores. La forma más común de instalar PHP-GTK es compilarlo desde el código fuente.[139]

Cuando PHP está instalado y utilizado en nube entornos, kits de desarrollo de software (SDK) se proporciona para el uso de las funciones específicas de la nube. Por ejemplo:

  • Amazon Web Services proporciona el SDK AWS para PHP[140]
  • Windows Azure puede usarse con el Windows Azure SDK para PHP.[141]

Numerosas opciones de configuración son compatibles, que afectan a características PHP y extensiones.[142][143] Archivo de configuración php.ini se ha buscado en diferentes lugares, dependiendo de la utilización PHP.[144] El archivo de configuración se divide en varias secciones,[145] mientras que algunas de las opciones de configuración se pueden establecer también en la configuración del servidor web.[146]

Uso

Una visión amplia de la paquete de software de la lámpara, aparece aquí junto con Calamar.

PHP es un lenguaje que está especialmente preparado para lado del servidor Desarrollo Web, en cuyo caso PHP se ejecuta generalmente en una servidor Web. Código PHP de un archivo solicitado es ejecutado el Runtime de PHP, generalmente para crear Página web dinámica imágenes de contenido o dinámicas utilizado en sitios web o en otros lugares.[147] También puede ser utilizado para de línea de comandos secuencias de comandos y lado del cliente interfaz gráfica de usuario Aplicaciones (GUI). PHP se puede implementar en servidores de web más, muchos sistemas operativos y plataformasy puede ser utilizado con muchos sistemas de gestión de bases de datos relacionales (RDBMS). La mayor parte web hosting proveedores de soporte PHP para su uso por sus clientes. Está disponible de forma gratuita, y el grupo de PHP proporciona el código fuente completo para que los usuarios crear, personalizar y ampliar para su propio uso.[8]

Página web dinámica: ejemplo de server-side scripting (PHP y MySQL).

PHP actúa principalmente como un filtro,[148] tomar la entrada de un archivo o una secuencia que contiene el texto y/o las instrucciones de PHP y salir otro flujo de datos. Más comúnmente el resultado será HTML, aunque podría ser JSON, XML o datos binarios como imagen o formatos de audio. A partir de PHP 4, PHP Analizador recoge entrada para producir bytecode para el procesamiento de la Motor de Zend, dando mejor rendimiento su intérprete predecesor.[149]

Originalmente diseñado para crear dinámicas páginas web, PHP ahora se centra principalmente en server-side scripting,[150] y es similar a otros lenguajes de scripting de servidor que proporciona contenido dinámico desde un servidor web a una cliente, tales como Microsoft's ASP.NET, Sun Microsystems' Páginas de JavaServer,[151] y mod_perl. PHP ha atraído también el desarrollo de muchos marcos de software que proporcionan bloques de construcción y una estructura de diseño para promover la desarrollo rápido de aplicaciones (RAD). Algunos de éstos incluyen PRADO, CakePHP, Symfony, CodeIgniter, Laravel, Yii Framework, Phalcon y Zend Framework, que ofrece características similares a otros frameworks web.

El Arquitectura de lámpara se ha convertido en popular en la industria de la web como una forma de implementar aplicaciones web.[152] PHP es utilizado comúnmente como el P en este paquete junto a 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, con el primer pie de letra para el respectivo sistema operativo. Aunque PHP y Apache se proporciona como parte de la base de macOS de instalación, los usuarios de estos paquetes buscan un mecanismo de instalación más simple que puede ser más fácilmente mantiene al día.

A partir de abril de 2007, dominios de Internet más 20 millones tenían servicios web alojados en servidores con PHP instalado y mod_php se registró como el más popular Servidor HTTP Apache módulo.[153] A partir de octubre de 2010, PHP fue utilizado como el lenguaje de programación de servidor en el 75% de todos los sitios web era conocido cuyo lenguaje de programación del lado del servidor[154] (a partir de febrero de 2014, el porcentaje había alcanzado el 82%[155]), y PHP fue el software de código abierto más utilizado en las empresas.[156] Sistemas de gestión de contenidos web escrito en PHP incluyen MediaWiki,[157] Joomla,[158] eZ Publish, eZ plataforma, SilverStripe,[159] WordPress,[160] Drupal,[161] y Moodle.[162] Sitios web escrito en PHP, en back-end o usuario hacia parte, incluyen Facebook,[163] Digg,[164] Tumblr,[165] Dailymotion,[166] y Flojo.[167]

Para los escenarios de uso específicos y más avanzado, PHP ofrece un camino bien definido y documentado para escribir extensiones personalizadas C o C++.[168][169][170][171][172][173][174] Además de extender la lengua en forma de adicional bibliotecas, extensiones proporcionan una forma para mejorar la velocidad de ejecución donde es crítico y hay espacio para mejoras mediante el uso de una verdadera lenguaje compilado.[175][176] PHP también ofrece formas definidas para la incorporación de sí mismo en otros proyectos de software. Así PHP se puede utilizar fácilmente como un interno lenguaje de scripting para otro proyecto, también proporciona interconexión estrecha con específica de proyecto interno estructuras de datos.[177]

PHP recibió revisiones mezcladas debido a carecer de apoyo para subprocesamiento múltiple en el nivel de lengua básico,[178] Aunque con hilos es hecha posible por la "pthreads" PECL extensión.[179][180]

A partir de enero de 2013, PHP fue utilizado en más de 240 millones sitios web (39% de los muestreados) y se instaló en 2,1 millones servidores Web.[181]

Seguridad

En 2013, 9% de todas las vulnerabilidades se enumeran por el Base de datos de vulnerabilidad nacional estaban relacionados con PHP;[182] Históricamente, alrededor del 30% de todas las vulnerabilidades desde 1996 en esta base de datos están relacionados con PHP. Fallos de seguridad técnica de la lengua sí mismo o de sus bibliotecas de base no son frecuentes; (estos número 22 en 2009, que era alrededor del 1% del total, aunque PHP se aplica a cerca de 20% de los programas enumerados.)[183] Reconociendo que los programadores cometen errores, algunos lenguajes incluyen contaminar la comprobación detectar automáticamente la falta de validación de entrada que induce a muchas cuestiones. Tal característica está siendo desarrollado para PHP,[184] pero su inclusión en una versión ha sido rechazada varias veces en el pasado.[185][186]

Avanzan parches de protección, tales como Suhosin y Endurecimiento-Patch, que son especialmente diseñados para entornos de alojamiento web,[187] debido principalmente a estos ambientes se consideran lugares donde puede ejecutar código escrito.

Hay ciertas características del lenguaje y parámetros de configuración (sobre todo los valores predeterminados para estos ajustes de tiempo de ejecución) que hacen aplicaciones PHP propenso a problemas de seguridad. Entre éstos, magic_quotes_gpc y register_globals[188] las directivas de configuración son los más conocidos; Este último hecho los parámetros de URL se convierten en variables PHP, abrir un camino para vulnerabilidades de seguridad permitiendo a un atacante establecer el valor de cualquier variable global sin inicializar e interferir en la ejecución de un script PHP. Apoyo a"comillas mágicas"y"register globals"se ha desaprobado a partir de PHP 5.3.0 y retirado a partir de PHP 5.4.0.[189]

Otro ejemplo de la vulnerabilidad de la configuración de tiempo de ejecución viene de no desactivar la ejecución de PHP (a través de motor Directiva de configuración)[190] para el directorio donde se almacenan imágenes; dejar la configuración por defecto puede resultar en la ejecución de código malicioso de PHP incrustado en las imágenes.[191][192][193] También, dejando habilitada la carga dinámica de extensiones de PHP (a través de enable_dl Directiva de configuración)[194] en un hosting web compartido medio ambiente puede conducir a problemas de seguridad.[195][196]

También, implica conversiones de tipo resultan en incompatible ser tratadas como idénticas contra la intención del programador pueden conducir a problemas de seguridad. Por ejemplo, el resultado de la comparación "0e1234" == "0" comparación es true porque en comparación con el primer valor se trata como notación científica tener el valor (0×101234), es decir, cero. Esta característica dio lugar a la vulnerabilidad de autenticación en Simple Machines Forum,[197] TYPO3[198] y phpBB[199] Cuando MD5 hashes de contraseñas se compararon. En cambio, ya sea la función strcmp o el operador () identidad===) debe ser utilizado; "0e1234" == "0" resultados en falso.[200]

En un análisis de 2013 de más de 170.000 desfiguraciones del Web, publicado por Zone-H, el más frecuente (53%) técnica utilizada fue la explotación de vulnerabilidad de inclusión de archivos, sobre todo relacionados con el uso inseguro de las funciones PHP incluyen, requieren, y allow_url_fopen.[201][202]

Véase también

  • PERA (Extensión de PHP y repositorio de la aplicación)
  • Biblioteca de comunidad la extensión PHP (PECL)
  • Acelerador de PHP
  • Lista de aceleradores de PHP
  • Lista de paquetes AMP
  • Lista de editores de PHP
  • PHP-GTK
  • Procesador de la plantilla
  • XAMPP (Paquete de pila de libre y de código abierto multiplataforma web server solución)
  • Zend Server
  • Hack (lenguaje de programación)
  • Comparación de lenguajes de programación
  • Comparación de frameworks web

Referencias

  1. ^ a b Lerdorf, Rasmus (2007-04-26). «PHP hormonas – historia de la presentación de PHP por Rasmus Lerdorf en la Conferencia de MySQL en Santa Clara, California». La red de conversaciones. 2009-12-11. 
  2. ^ a b «PHP: PHP 7 cambios». php.net. 17 de febrero 2017. 
  3. ^ "Tipo de alusión". PHP.net. 5 de septiembre 2016. 
  4. ^ a b "Historia de PHP". php.net. 
  5. ^ a b c d e f g h i "Historia de PHP y proyectos relacionados con el". El grupo de PHP. 2008-02-25. 
  6. ^ Manual de PHP: Prefacio, www.php.net
  7. ^ "Introducción: ¿Qué puede hacer PHP?". Manual de PHP. 2009-03-05. 
  8. ^ a b "Incrustar PHP en HTML". O ' Reilly. 2001-05-03. 2008-02-25. 
  9. ^ Jackson, Joab (2014-07-31). "PHP es una especificación formal, en el último". ITworld. IDG. 
  10. ^ Lerdorf, Rasmus (2012-07-20). "me pregunto por qué la gente mantener escrito que PHP fue escrito en Perl. Nunca fue. #php". Twitter. 2014-09-04. 
  11. ^ Lerdorf, Rasmus (2007-04-26). «PHP hormonas» (mp3). La red de conversaciones. 2009-06-22. 
  12. ^ Lerdorf, Rasmus (2007). "Diapositiva 3". diapositivas de la charla 'PHP hormonas'. El grupo de PHP. 2009-06-22. 
  13. ^ Lerdorf, Rasmus (08 de junio de 1995). "anunciar: Página de Inicio Personal herramientas PHP". 7 de junio 2011. 
  14. ^ Lerdorf, Rasmus (1995-06-08). "anunciar: Página de Inicio Personal herramientas PHP". Grupo de noticias:comp.Infosystems.www.Authoring.cgi. 2006-09-17. 
  15. ^ «Yahoo técnica de Rasmus Lerdorf, Senior: PHP, a la voz». 2003-11-19. archivar de el original 2013-07-28. , citado en Felipe Ribeiro (07 de agosto de 2012). "Este no es otro artículo"PHP apesta"". 
  16. ^ «Problemas con PHP». 20 de diciembre 2010. 
  17. ^ "php.internals: Re: consistencia del nombre de la función". News.php.net. 28 / 12 / 2013. 2014-02-09. 
  18. ^ Rasmus Lerdorf (-16 de Dic-2013). "re: nombres de función Flexible". Grupo de noticias:php.Internals. 26 de diciembre, 2013. 
  19. ^ «PHP - acrónimo significado voto». PHP.net. Archivado de el original en 15 de agosto de 2000. 
  20. ^ "versión del motor Zend 2.0: diseño y función de resumen". Zend Technologies Ltd. 2006-09-17. 
  21. ^ «archivo de noticias de php.net 2007». El grupo de PHP. 2007-07-13. 2008-02-22. 
  22. ^ Kerner, Sean Michael (2008-02-01). "PHP 4 es muerto, largo vive PHP 5". InternetNews. 2008-03-16. 
  23. ^ Trachtenberg, Adán (2004-07-15). "por qué PHP 5 rocas!". O ' Reilly. 2008-02-22. 
  24. ^ "Enlace estático en PHP". Sandwich de digital. 2006-02-23. 2008-03-25. 
  25. ^ "Palabra clave static". El grupo de PHP. 2008-03-25. 
  26. ^ «GoPHP5». Archivado de el original el 2011-07-17. 
  27. ^ GoPHP5. «PHP proyectos unen fuerzas para ir PHP 5» (PDF). Comunicado de prensa GoPHP5. Archivado de el original (PDF) en el 2009-12-10. 2008-02-23. 
  28. ^ «GoPHP5». GoPHP5. Archivado de el original el 2011-04-27. 2008-02-22. 
  29. ^ "Instalación de PHP y configuración". www.php.net. 29 / 10 / 2013. 
  30. ^ "PHP para Windows: versiones de binarios y fuentes (5.3)". php.net. 29 / 10 / 2013. 
  31. ^ "PHP para Windows: versiones de binarios y fuentes (5.4)". php.net. 29 / 10 / 2013. 
  32. ^ "PHP para Windows: versiones de binarios y fuentes (5.5)". php.net. 29 / 10 / 2013. 
  33. ^ Andrei Zmievski (2005-08-10). "Documento de diseño de soporte de Unicode de PHP (lista de correo el post)". 2014-02-09. 
  34. ^ «PHP 5.5 o 6.0». 2014-02-09. 
  35. ^ Andrei Zmievski. "el bueno, el malo y el feo: Qué pasó con Unicode y PHP 6". 2014-02-09. 
  36. ^ Rasmus Lerdorf (2010-03-11). «PHP 6 (lista de correo post)». 2014-02-07. 
  37. ^ https://philsturgeon.uk/php/2014/07/23/Neverending-Muppet-debate-of-PHP-6-v-php-7/
  38. ^ «RFC: nombre de la próxima versión de PHP». php.net. 2014-07-07. 2014-07-15. 
  39. ^ "re: [PHP-DEV] [votación] [RFC] nombre de próximo lanzamiento de PHP (otra vez)". 2014-07-30. 2014-07-30. 
  40. ^ https://News.php.net/php.Internals/73888
  41. ^ «PHP: rfc:phpng». php.net. 16 de diciembre 2014. 
  42. ^ a b «PHP: phpng». php.net. 2014-07-15. 
  43. ^ "Fusionar rama ' ZendEngine3'". github.com. 2014-12-05. 2014-12-05. 
  44. ^ a b «PHP: proceso de liberación». 2011-06-20. 2013-10-06. 
  45. ^ a b «RFC PHP: excepciones en el motor (para PHP 7)». php.net. 2015-05-21. 
  46. ^ «RFC PHP: comportamiento del Constructor de clases internas». php.net. 2015-05-21. 
  47. ^ a b «RFC PHP: sintaxis Variable de uniforme». php.net. 2014-05-31. 2014-07-30. 
  48. ^ «RFC PHP: eliminación de muertos o aún no PHP7 portado SAPIs y extensiones». php.net. 2015-05-21. 
  49. ^ «RFC PHP: quitar las etiquetas PHP alternativos». php.net. 2015-05-21. 
  50. ^ a b c «RFC: tipos de devolución». php.net. 2015-01-27. 2015-01-28. 
  51. ^ a b c d e f «RFC: declaraciones de tipo escalar». php.net. 2015-03-16. 2015-03-17. 
  52. ^ a b c d e f g h i j k l m «Ramas». php.net. 2015-11-14. 
  53. ^ a b c d «PHP: PHP 4 cambios». El grupo de PHP. 2008-01-03. 2008-02-22. 
  54. ^ "Usando PHP desde la línea de comandos". Manual de PHP. El grupo de PHP. 2009-09-11. 
  55. ^ «Anuncio del lanzamiento de PHP 4.4.0». Mannual PHP. El grupo de PHP. 24 / 11 / 2013. 
  56. ^ a b c «PHP: PHP 5 cambios». El grupo de PHP. 2007-11-08. 2008-02-22. 
  57. ^ "Manual de PHP: DOP". El grupo de PHP. 2011-11-15. 2011-11-15. 
  58. ^ "el web server incorporado". 26 de marzo, 2012. 
  59. ^ «PHP 5.5.0 cambia». php.net. 2015-03-03. 
  60. ^ a b c "Versiones admitidas". php.net. 2015-12-02. 
  61. ^ "migración de PHP 5.5. x a PHP 5.6.x". php.net. 2014-03-24. 
  62. ^ "Reposición PHP 6". Han habido libros en los estantes que tienen por objeto cubrir 6 PHP desde al menos 2008. Pero, en marzo de 2010, la versión 6 de PHP no es hacia fuera - de hecho, ni siquiera es cerca hacia fuera. Los acontecimientos recientes sugieren que PHP 6 no será lanzado antes del 2011 - si, de hecho, se libera a todos. 
  63. ^ «PHP 7 avanza toda velocidad». Las versiones recientes de PHP han sido parte de la serie de versión 5.x, pero no habrá ningún PHP 6. "Vamos a saltar [versión] 6 porque hace años, no teníamos planes para un 6, pero los planes eran muy diferentes a lo que estamos haciendo ahora", dijo Gutmans. Ir a versión 7 evita confusión. 
  64. ^ «PHP: rfc:size_t_and_int64_next». php.net. 16 de diciembre 2014. 
  65. ^ «PHP: rfc:abstract_syntax_tree». php.net. 16 de diciembre 2014. 
  66. ^ «PHP: rfc:closure_apply». php.net. 16 de diciembre 2014. 
  67. ^ «PHP: rfc:integer_semantics». php.net. 16 de diciembre 2014. 
  68. ^ «PHP: rfc:isset_ternary». php.net. 16 de diciembre 2014. 
  69. ^ «RFC: sintaxis de Escape de punto de código de Unicode». 2014-11-24. 19 / 12 / 2014. 
  70. ^ "Operador de comparación combinada (nave espacial)". php.net. 2015-05-21. 
  71. ^ «RFC PHP: Delegación de generador». php.net. 2015-05-21. 
  72. ^ «RFC PHP: clases anónimas». php.net. 2015-05-21. 
  73. ^ «RFC PHP: CSPRNG usuario fácil-tierra». php.net. 2015-05-21. 
  74. ^ «RFC PHP: uso declaraciones del grupo». php.net. 2015-05-21. 
  75. ^ "Tareas de preparación". 5 de julio 2016. 
  76. ^ «PHP 7.1.0 GA - externos». externals.IO. 2016-11-30. 
  77. ^ «PHP: rfc:void_return_type». php.net. 2015-11-09. 2015-11-14. 
  78. ^ «PHP: rfc:class_constant_visibility». php.net. 27 / 10 / 2015. 2015-12-08. 
  79. ^ «RFC PHP: tipos que aceptan valores NULL». php.net. 2014-04-10. 2016-06-14. 
  80. ^ «RFC PHP: Iterable». php.net. 2016-06-10. 2017-02-19. 
  81. ^ «RFC PHP: captura de múltiples tipos de excepción». php.net. 2016-03-06. 2017-02-19. 
  82. ^ «PHP: ElePHPant». 04 de octubre de 2014. 4 Oct 2014. 
  83. ^ https://wwphp-FB.github.IO/FAQ/Community/ElePHPant/
  84. ^ "etiquetas - Manual". php.net. 17 / 02 / 2014. 
  85. ^ a b «PHP: rfc:shortags». php.net. 2008-04-03. 2014-05-08. 
  86. ^ «PHP: sintaxis básica». El grupo de PHP. 2008-02-22. 
  87. ^ "Norma básica de la codificación". Grupo de interoperabilidad de Framework de PHP. 2016-01-03. 
  88. ^ "eco - Manual de". php.net. 17 / 02 / 2014. 
  89. ^ "Descripción de directivas php.ini de núcleo - Manual". php.net. 2002-03-17. 17 / 02 / 2014. 
  90. ^ "Su primera página en PHP con". El grupo de PHP. 2008-02-25. 
  91. ^ Bray, Tim; et al (26 de noviembre de 2008). "Las instrucciones de procesamiento". Lenguaje de marcado extensible (XML) 1.0 (quinta edición). W3C. 2009-06-18. 
  92. ^ "Variables". El grupo de PHP. 2008-03-16. 
  93. ^ "Separación de la instrucción". El grupo de PHP. 2008-03-16. 
  94. ^ "Comentarios". El grupo de PHP. 2008-03-16. 
  95. ^ "Enteros en PHP, corriendo con tijeras y portabilidad". MySQL Performance Blog. 27 de marzo de 2007. 2007-03-28. 
  96. ^ a b c d e "Tipos". El grupo de PHP. 2008-03-16. 
  97. ^ "Cadenas". El grupo de PHP. 2008-03-21. 
  98. ^ "SPL-StandardPHPLibrary". PHP.net. 16 de marzo de 2009. 2009-03-16. 
  99. ^ a b "funciones definidas por el usuario (manual de PHP)". php.net. 2014-07-04. 2014-07-07. 
  100. ^ a b "Variable funciones (manual de PHP)". php.net. 2014-07-04. 2014-07-07. 
  101. ^ "create_function () (manual de PHP)". php.net. 2014-07-04. 2014-07-07. 
  102. ^ "Funciones anónimas (manual de PHP)". php.net. 2014-07-04. 2014-07-07. 
  103. ^ Christian Seiler; Dmitry Stogov (2008-07-01). "solicitud de comentarios: las funciones Lambda y cierres". php.net. 2014-07-07. 
  104. ^ a b «PHP 5 objeto referencias». mjtsai.com. 2008-03-16. 
  105. ^ "Clases y objetos (PHP 5)". El grupo de PHP. 2008-03-16. 
  106. ^ "objeto clonación". El grupo de PHP. 2008-03-16. 
  107. ^ "Visibilidad (Manual de PHP)". theserverpages.com. 2005-05-19. 2010-08-26. 
  108. ^ Gervasio, Alejandro. "Más en métodos privados con PHP 5 miembros visibilidad". devshed.com. 24 de noviembre 2010. 
  109. ^ "visibilidad en PHP: público, privado y protegido". aperiplus.sourceforge.net. 2010-08-26. 
  110. ^ "El lenguajes de programación, ¿cómo funcionan?". 2009-11-04. 
  111. ^ (Gilmore 2006p. 43)
  112. ^ "[votación] integrar Zend Optimizer + en la distribución de PHP". News.php.net. 2013-03-08. 
  113. ^ "Alternativa PHP Cache". PHP.net. 21 / 09 / 2013. 
  114. ^ "Somos el 98,5% (y el 16%) «HipHop Virtual Machine". hhvm.com. Diciembre de 2013. 23 / 02 / 2014. 
  115. ^ "Anuncio en GitHub retirar apoyo de HPHPc". 2013-05-24. 
  116. ^ "La licencia de PHP, versión 3.01". 2010-05-20. 
  117. ^ «Licencias de Software libre Incompatible con la GPL». Diversas licencias y comentarios sobre ellos. Free Software Foundation. 2011-01-03. 
  118. ^ «PHP: Listado de función y método - Manual». El grupo de PHP. 2015-01-14. 
  119. ^ "Introducción - Manual". php.net. 2013-06-07. 2013-06-13. 
  120. ^ Darryl Patterson (05 de agosto de 2004). "Simplificar la lógica de negocio con PHP DataObjects - o ' Reilly Media". IBM.com. 16 de diciembre 2014. 
  121. ^ "IBM - Estados Unidos". IBM - Estados Unidos. 16 de diciembre 2014. 
  122. ^ "Cinco problemas comunes que PHP base de datos". IBM.com. 2006-08-01. 2013-06-13. 
  123. ^ "IBM Redbooks - desarrollo de aplicaciones PHP para servidores de datos de IBM". Redbooks.IBM.com. 16 de diciembre 2014. 
  124. ^ php | arquitecto
  125. ^ Krill, Paul (19 de octubre de 2005). «PHP calando en las empresas, compitiendo con Java». InfoWorld. Archivado de el original en 13 de julio de 2014. 
  126. ^ "cruce de referencia: PHP_5_4/ext/standard/". php.net. 16 de diciembre 2014. 
  127. ^ "Desarrollo de extensiones de PHP personalizado". devnewz.com. 2002-09-09. archivados de el original en 2008-02-18. 2008-02-25. 
  128. ^ "¿Por qué Céfiro?". Céfiro-lang.com. 20 / 10 / 2015. 2015-12-14. 
  129. ^ "Créditos PHP". php.net. 2015-07-29. 
  130. ^ https://www.Zend.com/en/Services/Certification/PHP-5-Certification
  131. ^ a b "Consideraciones generales de instalación". php.net. 22 / 09 / 2013. 
  132. ^ «Archivo de noticias: PHP 5.3.3 liberado!». php.net. 2010-07-22. 
  133. ^ "Gestor de procesos FastCGI (FPM)". php.net. 22 / 09 / 2013. 
  134. ^ "uso de línea de comandos: introducción". php.net. 22 / 09 / 2013. 
  135. ^ "uso de línea de comandos: diferencias a otros SAPIs". php.net. 22 / 09 / 2013. 
  136. ^ a b "Consideraciones generales de instalación". php.net. 22 / 09 / 2013. 
  137. ^ «PHP: Apache 2.x de Microsoft Windows». php.net. 22 / 09 / 2013. 
  138. ^ "uso de línea de comandos: introducción". php.net. 22 / 09 / 2013. 
  139. ^ "Instalación de PHP-GTK 2". php.net. 22 / 09 / 2013. 
  140. ^ "AWS SDK para PHP". AWS.Amazon.com. 2014-03-06. 
  141. ^ "Windows Azure SDK para PHP - centro de laboratorios y puentes de interoperabilidad". interoperabilitybridges.com. 2014-03-06. 
  142. ^ "Configuración de tiempo de ejecución: tabla de contenido". php.net. 22 / 09 / 2013. 
  143. ^ "las directivas de php.ini: lista de directivas php.ini". php.net. 22 / 09 / 2013. 
  144. ^ "configuración de tiempo de ejecución: el archivo de configuración". PHP.net. 22 / 09 / 2013. 
  145. ^ "las directivas de php.ini: lista de secciones de php.ini". PHP.net. 22 / 09 / 2013. 
  146. ^ "configuración de tiempo de ejecución: donde se puede establecer una configuración". PHP.net. 22 / 09 / 2013. 
  147. ^ "Tratamiento de la imagen Manual de PHP y GD;". php.net. 2011-04-09. 
  148. ^ Programa archivado 11 de junio de 2008, en el Máquina de Wayback.
  149. ^ "PHP y MySQL". Universidad de Alabama. Archivado de el original en 2008-02-28. 2008-02-25. 
  150. ^ "PHP Server-Side Scripting Language". Universidad de Indiana. 2007-04-04. 2008-02-25. 
  151. ^ "Páginas de JavaServer tecnologías — JavaServer Pages comparando métodos de servidor dinámico de contenido libro blanco". Sun Microsystems. 2008-02-25. 
  152. ^ «Cinco formas sencillas de afinar la aplicación de la lámpara». 
  153. ^ «PHP: PHP uso Stats». SecuritySpace. 2007-04-01. 2008-02-24. 
  154. ^ "Uso de lenguajes de programación de lado del servidor para páginas web". W3Techs. 2010-10-29. 2010-10-29. 
  155. ^ "Uso de lenguajes de programación de lado del servidor para páginas web". W3Techs. 2014-03-19. 
  156. ^ «PHP y Perl que se caiga la parte de la empresa». 
  157. ^ "Requisitos de instalación: manual #PHP". MediaWiki. 2010-01-25. 2010-02-26. PHP es el lenguaje de programación que MediaWiki está escrito [...] 
  158. ^ ¿Qué es Joomla?
  159. ^ "Requisitos del servidor de SilverStripe". 13 de octubre 2014. SilverStripe requiere PHP 5.3.2+ 
  160. ^ "Acerca de WordPress". 2010-02-26. WordPress fue [...] construido en PHP 
  161. ^ «PHP y Drupal». Drupal.org. 2010-06-13. 
  162. ^ "Acerca de". Moodle.org. 2009-12-20. 
  163. ^ «PHP y Facebook | Facebook". Blog.Facebook.com. 2009-07-29. 
  164. ^ «PHP y Digg». O ' Reilly. 2010-06-13. 
  165. ^ «PHP 7 en Tumblr». Ingeniería de Tumblr. 04 de noviembre de 2016. 
  166. ^ "implementación de PHP 7 en Dailymotion". Blog ingeniería de DailyMotion. 03 de octubre de 2016. 
  167. ^ "Tomar en serio PHP". Blog de ingeniería flojo. 12 de octubre de 2016. 
  168. ^ «PHP en el núcleo: estructura de extensión». PHP.net. 22 / 09 / 2013. 
  169. ^ «PHP en la base: el "contador" extensión – ejemplo continua». PHP.net. 22 / 09 / 2013. 
  170. ^ «Extensión de la escritura parte I: Introducción a PHP y Zend». Zend Technologies. 2005-03-01. 22 / 09 / 2013. 
  171. ^ "extensión de la escritura parte II: parámetros, matrices y ZVALs". Zend Technologies. 2005-06-06. 22 / 09 / 2013. 
  172. ^ "Extensión de la escritura parte II: parámetros, matrices y ZVALs (continuadas)". Zend Technologies. 2005-06-06. 22 / 09 / 2013. 
  173. ^ "extensión escritura parte III: recursos". Zend Technologies. 2006-05-12. 22 / 09 / 2013. 
  174. ^ "Envoltura de clases C++ en una extensión PHP". Zend Technologies. 2009-04-22. 22 / 09 / 2013. 
  175. ^ "Extendiendo PHP con C++?". Desbordamiento de pila. 22 / 09 / 2013. 
  176. ^ "¿Cómo puedo usar código de C++ para interactuar con PHP?". Desbordamiento de pila. 22 / 09 / 2013. 
  177. ^ Golemon, Sara (2006). Extendiendo e incrustación PHP. ISBN 978-0-672-32704-9. 
  178. ^ "error de solicitud #46919: Multi threading". PHP.net. 22 / 09 / 2013. 
  179. ^ "pthreads: Introducción (Manual de PHP)". PHP.net. 22 / 09 / 2013. 
  180. ^ "PECL:: paquete:: pthreads". PECL.php.net. 2014-02-09. 
  181. ^ IDE, Andy (2013-01-31). «PHP sólo crece y crece». 2013-04-01. 
  182. ^ "Vulnerabilidad nacional (NVD) la base de datos buscar vulnerabilidades". 2014-03-19. 
  183. ^ "Modo de mancha PHP RFC". 
  184. ^ "Desarrolladora de notas, de la reunión de noviembre de 2005". 
  185. ^ "Contaminar la decisión de modo, de noviembre de 2007". 
  186. ^ "Proyecto hardened-PHP". 2008-08-15. 
  187. ^ "seguridad: uso de Register Globals". Manual de PHP. PHP.net. 22 / 09 / 2013. 
  188. ^ "Magic Quotes". Manual de PHP. PHP.net. 2014-01-17. 
  189. ^ "'motor ' Directiva de configuración ". PHP: Configuración de tiempo de ejecución. PHP.net. 13 / 02 / 2014. 
  190. ^ «PHP seguridad aprovechar con imágenes GIF». 2007-06-22. 22 / 09 / 2013. 
  191. ^ "Proeza de seguridad PHP con imágenes GIF". Blog de clases de PHP. 2007-06-20. 22 / 09 / 2013. 
  192. ^ "Paso PHP maliciosos por getimagesize()". 2007-06-04. 22 / 09 / 2013. 
  193. ^ "'enable_dl' Directiva de configuración ". PHP: Configuración de tiempo de ejecución. PHP.net. 13 / 02 / 2014. 
  194. ^ "Referencia de función PHP: dl()". PHP.net. 22 / 09 / 2013. 
  195. ^ "mi anfitrión no arregla a su troyano". WebHosting Talk. 22 / 09 / 2013. 
  196. ^ Raz0r. "Simple Machines Forum < = 2.0.3 Admin Password Reset". 
  197. ^ Mordisquear la seguridad. "TYPO3-SA-2010-020, TYPO3-SA-2010-022 EXPLICÓ". 
  198. ^ Ahack.ru. "КРИПТОСТОЙКОСТЬ И НЕБЕЗОПАСНОЕ СРАВНЕНИЕ". 
  199. ^ "Operadores de comparación". PHP.net. 
  200. ^ Pawel Krawczyk (2013). "ataques más comunes en aplicaciones web". IPSec.pl. 2015-04-15. 
  201. ^ Pawel Krawczyk (2013). "¿Cuáles son los defectos de aplicación"más críticos"? En nuevo OWASP Top 10". IPSec.pl. 2015-04-15. 

Lectura adicional

  • Paul Ford (11 de junio de 2015). "¿Qué es código?. Bloomberg Businessweek. ¿Cuál es el mínimo que debo saber sobre PHP? 

Acoplamientos externos

  • Sitio web oficial
  • PHP en DMOZ
  • Manual de referencia de PHP
  • Repositorio del código fuente PHP en GitHub
  • PHP PHP y Symfony: estructura, estabilidad y flexibilidad

Otras Páginas

Obtenido de"https://en.copro.org/w/index.php?title=php&oldid=769578601"