====== 02 - PHP I: Introducción ======
PHP (acrónimo recursivo de PHP: Hypertext Preprocessor) es un lenguaje de código abierto especialmente adecuado para el desarrollo web y que puede ser incrustado en HTML.
PHP es un lenguaje del lado del servidor. Lo que distingue a este tipo de lenguajes de los lenguajes del lado del cliente (como Javascript), es que el código es ejecutado en el servidor, y éste generará una respuesta (código HTML, JSON, XML...) que será enviado al cliente. Por lo tanto, el cliente recibirá el resultado de ejecutar el script, aunque no sabrá el código PHP que lo ha generado.
Aunque es posible crear páginas con sólo código PHP (de hecho, es lo recomendable en la mayoría de casos como veremos más adelante), es muy habitual ver partes de código PHP incrustadas en páginas HTML.
A diferencia de los archivos HTML, los ficheros PHP no son interpretados por los navegadores, con lo que no podemos abrirlos directamente en ninguno de ellos. Tiene que ser el servidor HTTP el que los interprete y genere la correspondiente respuesta, para lo cual tendrá que tener instalado un intérprete PHP.
PHP es un lenguaje débilmente tipado, lo que nos permite, entre otras cosas, no declarar el tipo de las variables. Por este motivo tiene mucho detractores, pero ¿significa éso que es un mal lenguaje de programación?. No, el hecho de que nos permita programar “mal” no significa que tengamos que hacerlo. Al final la eficacia y el rendimiento de un lenguaje de programación depende más de la forma en que programamos que del propio lenguaje.
===== Crear archivos PHP =====
Para crear archivos PHP podemos utilizar cualquier editor de textos (incluso el Notepad de Windows o el editor de texto de Linux), aunque lo recomendable es usar algún editor de textos enriquecido que nos de ventajas como resaltado de código, funciones de debug, referencia del lenguaje…
Los archivos PHP pueden tener cualquier nombre válido de fichero (aunque es bueno seguir una serie de recomendaciones para facilitar el trabajo) seguido de la extensión //.php//.
Vamos a empezar a programar con PHP. Para eso, crea el archivo //holaMundo.php// en la carpeta //htdocs_apache/DWS/ejemplos/T2//. Dentro del archivo, escribe el siguiente código (aunque es muy sencillo, no te preocupes ahora por lo que hace el código, ya lo irás aprendiendo a lo largo del curso):
No te olvides de la etiqueta de apertura **En la configuración de Apache podemos modificar el archivo que cargará por defecto cuando entremos en esa url.
Vuelve a renombrar el archivo anterior a //holaMundo.html// para que no nos lo cargue cuando ejecutemos los ejemplos de este tema (cuando nuestras webs sean más complejas, cada ejemplo estará en una carpeta diferente, con lo que ya no tendremos ese problema).
===== Estructura archivo PHP =====
Un archivo PHP puede contener cualquier código válido de los archivos HTML (HTML, CSS, JavaScript...), así como trozos de código PHP.
Como hemos dicho antes, lo mejor es separar el código PHP del HTML en diferentes archivos (igual que siempre es recomendable separar el CSS o el JS), aunque para webs sencillas se puede incrustar el PHP directamente en el HTML.
==== Etiquetas de apertura y cierre ====
Para incrustar código PHP dentro del HTML tenemos que indicar al intérprete donde comienza y termina. Ésto lo hacemos mediante la etiqueta de apertura ****. Cuando PHP analiza un fichero busca esas etiquetas, y considera todo lo que hay dentro código PHP, mientras ignora el resto.
Ejemplo
También existe la posibilidad de usar la etiqueta abreviada **** como apertura, aunque su uso está desaconsejado, porque puede generar conflictos, por ejemplo, con ciertas etiquetas usadas en XML
¿Porqué en nuestro fichero //holaMundo.php// no hemos usado la etiqueta de cierre? Cuando un fichero contiene sólo código PHP (o termina con código PHP sin nada detrás), es recomendable no usar la etiqueta de cierre, así se previene la adición de espacios en blanco o nuevas líneas accidentales después de la etiqueta de cierre, lo cual causaría efectos no deseados debido a que PHP comenzará la salida del búffer cuando no había intención por parte del programador de enviar ninguna salida en ese punto del script.
Ejemplo
Hola Mundo
Los fragmentos PHP se pueden insertar en cualquier lugar del archivo. Lo único que hay que tener en cuenta es que el analizador interpretara el código de forma secuencial, con lo que mostrará la posible salida generada justo en el lugar donde está el código PHP.
Crea otro archivo //holaMundo2.php// con el siguiente código:
Ejemplo
Hola Mundo HTML
Accede a // http://localhost/DWS/ejemplos/T2/holaMundo2.php // desde el navegador y comprueba el resultado.
{{ :clase:daw:dws:1eval:php04.png?400 |}}
Si te fijas, el archivo anterior no contiene nada de código PHP, sin embargo el interprete de PHP lo analiza y lo sirve sin ningún problema. Es posible crear archivos PHP sin código PHP, aunque no tiene mucho sentido, ya que el archivo será analizado para buscar código PHP, con lo que se ralentizará el proceso.
Otra cosa a tener en cuenta es que dentro de las etiquetas //// sólo puede haber código PHP. Si metemos algo de código HTML (o de cualquier otro tipo que no sea PHP), el analizador nos dirá que hay errores en la página.
===== sintaxis básica =====
==== echo y print ====
La sentencia [[https://www.php.net/manual/es/function.echo.php|echo]] de PHP, imprime una o más cadenas **en el fichero**.
Ejemplo
Cuando el interprete analiza el fichero anterior lo convierte en:
Ejemplo
Hola mundo;
La etiqueta **=** equivale a ////. Por lo tanto, la instrucción //= “Hola Mundo”?>// es equivalente a ////.
Dentro de un //echo// se pueden añadir etiquetas HTML:
Ejemplo
Hola mundo
";
?>
El ejemplo anterior nos sirve para entender la diferencia entre imprimir la cadena en el fichero o en el navegador. Si ejecutamos el archivo anterior la salida es:
{{ :clase:daw:dws:1eval:php05.png?400 |}}
Si vemos el código fuente (código HTML) desde el navegador, nos saldrá algo parecido a ésto:
{{ :clase:daw:dws:1eval:php06.png?400 |}}
Si la sentencia //echo// imprimiera la cadena en el navegador, la salida debería ser:
{{ :clase:daw:dws:1eval:php07.png?400 |}}
Básicamente, lo que hace el interprete de PHP es transformar primero la página //.php// en //.html// y después enviarla al navegador (simplificándolo mucho, obviamente), con lo que el navegador interpreta las etiquetas HTML como toca.
La etiqueta [[https://www.php.net/manual/es/function.print.php|print]] funciona casi igual que //echo//. La diferencia principal es que con //echo// se pueden imprimir varias líneas a la vez separadas por coma, mientras que //print// sólo puede imprimir una línea.
Podemos utilizar comillas simples o dobles para definir las cadenas a imprimir. La diferencia fundamental es que con comillas dobles PHP puede interpretar las variables que contiene y con las simples no.
";
echo 'El valor de la variable 2 es $var2';
?>
{{ :clase:daw:dws:1eval:php08.png?400 |}}
PHP no inserta un salto de línea después de una sentencia //echo// o //print//, con lo que si queremos que haya un //intro// entre dos cadenas, deberemos añadir //
// al final de cada una de ellas.
==== Comentarios ====
Podemos añadir comentarios a un fichero PHP mediante la etiqueta **/ /** si el comentario ocupa una sola línea, con **/* */** si queremos comentar un bloque entero, o con **#** si queremos comentar el final de una línea.
==== Separador de instrucciones ====
En PHP las diferentes instrucciones se tienen que separar con **;**. Un error común al empezar a programar con PHP es olvidar los punto y coma después de cada instrucción. Aunque no es lo más recomendable, se pueden encadenar varias instrucciones en la misma línea siempre que estén separadas por //;//.