PHP Tutorial
Empezando con PHP
Buscar..
Observaciones
PHP (acrónimo recursivo para PHP: preprocesador de hipertexto) es un lenguaje de programación de código abierto muy utilizado. Es especialmente adecuado para el desarrollo web. Lo único de PHP es que sirve tanto para principiantes como para desarrolladores experimentados. Tiene una barrera de entrada baja, por lo que es fácil comenzar y, al mismo tiempo, proporciona características avanzadas ofrecidas en otros lenguajes de programación.
Fuente abierta
Es un proyecto de código abierto. Siéntete libre de involucrarte .
Especificación de idioma
PHP tiene una especificación de lenguaje .
Versiones soportadas
Actualmente, hay tres versiones soportadas : 5.6, 7.0 y 7.1.
Cada rama de lanzamiento de PHP es totalmente compatible durante dos años a partir de su lanzamiento estable inicial. Después de este período de dos años de soporte activo, cada sucursal recibe soporte por un año adicional solo para problemas de seguridad críticos. Las liberaciones durante este período se realizan según sea necesario: puede haber varias liberaciones puntuales, o ninguna, según el número de informes.
Versiones no soportadas
Una vez que se completan los tres años de soporte, la sucursal llega al final de su vida útil y ya no es compatible.
Una tabla de ramas de fin de vida está disponible.
Rastreador de problemas
Los errores y otros problemas se rastrean en https://bugs.php.net/ .
Listas de correo
Las discusiones sobre el desarrollo y uso de PHP se llevan a cabo en las listas de correo de PHP .
Documentacion oficial
Por favor ayuda a mantener o traducir la documentación oficial de PHP .
Puede usar el editor en edit.php.net . Echa un vistazo a nuestra guía para los colaboradores .
Versiones
PHP 7.x
Versión | Apoyado hasta | Fecha de lanzamiento |
---|---|---|
7.1 | 2019-12-01 | 2016-12-01 |
7.0 | 2018-12-03 | 2015-12-03 |
PHP 5.x
Versión | Apoyado hasta | Fecha de lanzamiento |
---|---|---|
5.6 | 2018-12-31 | 2014-08-28 |
5.5 | 2016-07-21 | 2013-06-20 |
5.4 | 2015-09-03 | 2012-03-01 |
5.3 | 2014-08-14 | 30-06-2009 |
5.2 | 2011-01-06 | 2006-11-02 |
5.1 | 2006-08-24 | 2005-11-24 |
5.0 | 2005-09-05 | 2004-07-13 |
PHP 4.x
Versión | Apoyado hasta | Fecha de lanzamiento |
---|---|---|
4.4 | 2008-08-07 | 2005-07-11 |
4.3 | 2005-03-31 | 2002-12-27 |
4.2 | 2002-09-06 | 2002-04-22 |
4.1 | 2002-03-12 | 2001-12-10 |
4.0 | 2001-06-23 | 2000-05-22 |
Versiones heredadas
Versión | Apoyado hasta | Fecha de lanzamiento |
---|---|---|
3.0 | 2000-10-20 | 1998-06-06 |
2.0 | 1997-11-01 | |
1.0 | 1995-06-08 |
Salida HTML del servidor web
PHP se puede utilizar para agregar contenido a archivos HTML. Si bien el HTML se procesa directamente mediante un navegador web, los scripts PHP se ejecutan en un servidor web y el HTML resultante se envía al navegador.
El siguiente código HTML contiene una declaración de PHP que agregará Hello World!
a la salida:
<!DOCTYPE html>
<html>
<head>
<title>PHP!</title>
</head>
<body>
<p><?php echo "Hello world!"; ?></p>
</body>
</html>
Cuando se guarde como un script PHP y lo ejecute un servidor web, se enviará el siguiente HTML al navegador del usuario:
<!DOCTYPE html>
<html>
<head>
<title>PHP!</title>
</head>
<body>
<p>Hello world!</p>
</body>
</html>
echo
también tiene una sintaxis de acceso directo, que le permite imprimir inmediatamente un valor. Antes de PHP 5.4.0, esta sintaxis corta solo funciona con la configuración de configuración short_open_tag habilitada.
Por ejemplo, considere el siguiente código:
<p><?= "Hello world!" ?></p>
Su salida es idéntica a la salida de lo siguiente:
<p><?php echo "Hello world!"; ?></p>
En las aplicaciones del mundo real, todos los datos de salida de PHP a una página HTML deben escaparse adecuadamente para evitar ataques de XSS ( secuencias de comandos entre sitios ) o daños en el texto.
Vea también: Cadenas y PSR-1 , que describe las mejores prácticas, incluido el uso adecuado de etiquetas cortas ( <?= ... ?>
).
Salida no HTML desde servidor web
En algunos casos, cuando se trabaja con un servidor web, puede ser necesario reemplazar el tipo de contenido predeterminado del servidor web. Puede haber casos en los que necesite enviar datos como plain text
, JSON
o XML
, por ejemplo.
La función header()
puede enviar un encabezado HTTP en bruto. Puede agregar el encabezado Content-Type
para notificar al navegador el contenido que estamos enviando.
Considere el siguiente código, donde configuramos Content-Type
como text/plain
:
header("Content-Type: text/plain");
echo "Hello World";
Esto producirá un documento de texto plano con el siguiente contenido:
Hola Mundo
Para producir contenido JSON , use el tipo de contenido application/json
lugar:
header("Content-Type: application/json");
// Create a PHP data array.
$data = ["response" => "Hello World"];
// json_encode will convert it to a valid JSON string.
echo json_encode($data);
Esto producirá un documento de tipo application/json
con el siguiente contenido:
{"respuesta": "Hola mundo"}
Tenga en cuenta que se debe llamar a la función header()
antes de que PHP produzca cualquier salida, o el servidor web ya habrá enviado encabezados para la respuesta. Por lo tanto, considere el siguiente código:
// Error: We cannot send any output before the headers
echo "Hello";
// All headers must be sent before ANY PHP output
header("Content-Type: text/plain");
echo "World";
Esto producirá una advertencia:
Advertencia: no se puede modificar la información del encabezado: los encabezados ya enviados por (la salida comenzó en /dir/example.php:2) en /dir/example.php en la línea 3
Cuando se utiliza header()
, su salida debe ser el primer byte que se envía desde el servidor. Por esta razón, es importante no tener líneas o espacios vacíos al principio del archivo antes de la etiqueta de apertura de PHP <?php
. Por la misma razón, se considera la mejor práctica (ver PSR-2 ) omitir la etiqueta de cierre de PHP ?>
De los archivos que contienen solo PHP y de los bloques de código PHP al final de un archivo.
Vea la sección de almacenamiento en búfer de salida para aprender cómo "capturar" su contenido en una variable para generar más tarde, por ejemplo, después de generar encabezados.
¡Hola Mundo!
La construcción de lenguaje más utilizada para imprimir la salida en PHP es echo
:
echo "Hello, World!\n";
Alternativamente, también puede utilizar print
:
print "Hello, World!\n";
Ambas declaraciones realizan la misma función, con pequeñas diferencias:
-
echo
tiene un retornovoid
, mientras queprint
devuelve unint
con un valor de1
-
echo
puede tomar múltiples argumentos (sin paréntesis solamente), mientras queprint
solo toma un argumento -
echo
es un poco más rápido que laprint
Tanto el echo
como el print
son construcciones de lenguaje, no funciones. Eso significa que no requieren paréntesis alrededor de sus argumentos. Para consistencia estética con funciones, se pueden incluir paréntesis. Los ejemplos extensos del uso del echo
y la print
están disponibles en otros lugares .
El printf
estilo C y las funciones relacionadas también están disponibles, como en el siguiente ejemplo:
printf("%s\n", "Hello, World!");
Consulte Generar el valor de una variable para obtener una introducción completa de las variables de salida en PHP.
Separación de instrucciones
Al igual que la mayoría de los otros lenguajes de estilo C, cada declaración termina con un punto y coma. Además, se usa una etiqueta de cierre para terminar la última línea de código del bloque PHP.
Si la última línea de código PHP termina con un punto y coma, la etiqueta de cierre es opcional si no hay ningún código después de esa línea final de código. Por ejemplo, podemos dejar la etiqueta de cierre después del echo "No error";
en el siguiente ejemplo:
<?php echo "No error"; // no closing tag is needed as long as there is no code below
Sin embargo, si hay algún otro código que sigue a su bloque de código PHP, la etiqueta de cierre ya no es opcional:
<?php echo "This will cause an error if you leave out the closing tag"; ?>
<html>
<body>
</body>
</html>
También podemos omitir el punto y coma de la última instrucción en un bloque de código PHP si ese bloque de código tiene una etiqueta de cierre:
<?php echo "I hope this helps! :D";
echo "No error" ?>
En general, se recomienda usar siempre un punto y coma y una etiqueta de cierre para cada bloque de código PHP, excepto el último bloque de código PHP, si no hay más código que siga ese bloque de código PHP.
Por lo tanto, su código básicamente debería verse así:
<?php
echo "Here we use a semicolon!";
echo "Here as well!";
echo "Here as well!";
echo "Here we use a semicolon and a closing tag because more code follows";
?>
<p>Some HTML code goes here</p>
<?php
echo "Here we use a semicolon!";
echo "Here as well!";
echo "Here as well!";
echo "Here we use a semicolon and a closing tag because more code follows";
?>
<p>Some HTML code goes here</p>
<?php
echo "Here we use a semicolon!";
echo "Here as well!";
echo "Here as well!";
echo "Here we use a semicolon but leave out the closing tag";
PHP CLI
PHP también se puede ejecutar desde la línea de comandos directamente mediante la CLI (interfaz de línea de comandos).
CLI es básicamente lo mismo que PHP desde los servidores web, excepto algunas diferencias en términos de entrada y salida estándar.
Disparando
La CLI de PHP permite cuatro formas de ejecutar código PHP:
- Entrada estándar. Ejecute el comando
php
sin ningún argumento, pero incluya código PHP en él:echo '<?php echo "Hello world!";' | php
- Nombre de archivo como argumento. Ejecute el comando
php
con el nombre de un archivo fuente PHP como primer argumento:php hello_world.php
- Código como argumento. Use la opción
-r
en el comandophp
, seguido del código para ejecutar. No se requieren las etiquetas<?php
open, ya que todo en el argumento se considera como código PHP:php -r 'echo "Hello world!";'
- Shell interactivo Use la opción
-a
en el comandophp
para iniciar un shell interactivo. Luego, escribe (o pega) el código PHP y pulsa devolver :$ php -a Interactive mode enabled php > echo "Hello world!"; Hello world!
Salida
Todas las funciones o controles que producen resultados HTML en el servidor web PHP se pueden usar para producir resultados en la secuencia stdout (descriptor de archivo 1), y todas las acciones que producen resultados en los registros de errores en el servidor web PHP producirán resultados en la secuencia stderr (archivo descriptor 2).
Example.php
<?php
echo "Stdout 1\n";
trigger_error("Stderr 2\n");
print_r("Stdout 3\n");
fwrite(STDERR, "Stderr 4\n");
throw new RuntimeException("Stderr 5\n");
?>
Stdout 6
Línea de comandos de shell $ php Example.php 2>stderr.log >stdout.log;\
> echo STDOUT; cat stdout.log; echo;\
> echo STDERR; cat stderr.log\
STDOUT
Stdout 1
Stdout 3
STDERR
Stderr 4
PHP Notice: Stderr 2
in /Example.php on line 3
PHP Fatal error: Uncaught RuntimeException: Stderr 5
in /Example.php:6
Stack trace:
#0 {main}
thrown in /Example.php on line 6
Entrada
Ver: Interfaz de línea de comandos (CLI)
Servidor incorporado de PHP
PHP 5.4+ viene con un servidor de desarrollo incorporado. Se puede usar para ejecutar aplicaciones sin tener que instalar un servidor HTTP de producción como nginx o Apache. El servidor incorporado solo está diseñado para ser utilizado con fines de desarrollo y prueba.
Se puede iniciar utilizando la bandera -S
:
php -S <host/ip>:<port>
Ejemplo de uso
- Crea un archivo
index.php
que contenga:
<?php
echo "Hello World from built-in PHP server";
Ejecute el comando
php -S localhost:8080
desde la línea de comandos. No incluyahttp://
. Esto iniciará la escucha del servidor web en el puerto 8080 utilizando el directorio actual en el que se encuentra como raíz del documento.Abra el navegador y navegue a
http://localhost:8080
. Deberías ver tu página de "Hola Mundo".
Configuración
Para anular la raíz de documento predeterminada (es decir, el directorio actual), use la -t
:
php -S <host/ip>:<port> -t <directory>
Por ejemplo, si tiene un directorio public/
en su proyecto, puede servir su proyecto desde ese directorio utilizando php -S localhost:8080 -t public/
.
Troncos
Cada vez que se realiza una solicitud desde el servidor de desarrollo, una entrada de registro como la que se muestra a continuación se escribe en la línea de comandos.
[Mon Aug 15 18:20:19 2016] ::1:52455 [200]: /
Etiquetas PHP
Hay tres tipos de etiquetas para denotar bloques de PHP en un archivo. El analizador de PHP está buscando las etiquetas de apertura y (si están presentes) para delimitar el código a interpretar.
Etiquetas estándar
Estas etiquetas son el método estándar para incrustar código PHP en un archivo.
<?php
echo "Hello World";
?>
Etiquetas de eco
Estas etiquetas están disponibles en todas las versiones de PHP, y desde PHP 5.4 siempre están habilitadas. En versiones anteriores, las etiquetas de eco solo podían activarse junto con etiquetas cortas.
<?= "Hello World" ?>
Etiquetas cortas
Puede deshabilitar o habilitar estas etiquetas con la opción short_open_tag
.
<?
echo "Hello World";
?>
Etiquetas cortas:
- no están permitidos en todos los principales estándares de codificación PHP
- Se desalientan en la documentación oficial.
- están deshabilitados por defecto en la mayoría de las distribuciones
- interferir con las instrucciones de procesamiento de XML en línea
- No se aceptan en las presentaciones de código por la mayoría de los proyectos de código abierto.
Etiquetas ASP
Al habilitar la opción asp_tags
, se pueden usar etiquetas de estilo ASP.
<%
echo "Hello World";
%>
Estas son una peculiaridad histórica y nunca deben usarse. Fueron eliminados en PHP 7.0.