PHPEmpezando con PHP


Observaciones

introduzca la descripción de la imagen aquí

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>
 
PHP 5.x 5.4

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 ( <?= ... ?> ).

¡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 retorno void , mientras que print devuelve un int con un valor de 1
  • echo puede tomar múltiples argumentos (sin paréntesis solamente), mientras que print solo toma un argumento
  • echo es un poco más rápido que la print

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";
 

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.

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

  1. Crea un archivo index.php que contenga:
<?php
echo "Hello World from built-in PHP server";
 
  1. Ejecute el comando php -S localhost:8080 desde la línea de comandos. No incluya http:// . 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.

  2. 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]: /
 

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:

  1. Entrada estándar. Ejecute el comando php sin ningún argumento, pero incluya código PHP en él:
    echo '<?php echo "Hello world!";' | php
  2. Nombre de archivo como argumento. Ejecute el comando php con el nombre de un archivo fuente PHP como primer argumento:
    php hello_world.php
  3. Código como argumento. Use la opción -r en el comando php , 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!";'
  4. Shell interactivo Use la opción -a en el comando php 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)

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";
?>
 
PHP 5.x 5.4

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.
PHP 5.x 5.6

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.