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.
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):
<?php echo "Hola mundo";
No te olvides de la etiqueta de apertura <?php. Por ahora no hace falta cerrarla, ya veremos después porqué.
Si intentamos ejecutar el archivo haciendo doble clic, el sistema operativo nos dirá que no sabe con qué programa abrirlo o lo abrirá para editarlo con el editor de textos por defecto. Si lo arrastramos a un navegador (Chrome, por ejemplo) para ejecutarlo directamente en él, nos abrirá el gestor de descargas para descargar nuestro archivo (lo cual, obviamente, no nos sirve de mucho).
Vamos a ejecutar nuestro archivo holaMundo.php de forma que podamos ver el resultado esperado en nuestro navegador. Arranca el servidor Apache y accede a la siguiente url: http://localhost/DWS/ejemplos/T2/holaMundo.php . Si todo ha ido bien, deberías ver algo parecido a ésto en tu navegador (el puerto 8080 detrás de localhost no tienes porqué verlo en tu navegador. Incluso puedes ver otro diferente si has modificado el puerto en el que escucha Apache):
¡Enhorabuena! Acabas de crear tu primer script PHP.
Nuestro archivo se llama holaMundo.php, y para acceder a él desde el navegador tenemos que poner la url completa y el nombre del fichero. Si intentamos acceder a http://localhost/DWS/ejemplos/T2 sin especificar el nombre del archivo, el navegador nos dirá que no tenemos permiso para acceder a esa url (en realidad lo que está pasando es que no sabe qué archivo abrir en esa ubicación).
Ahora vamos a renombrar nuestro archivo a index.php y volvemos a intentar acceder a http://localhost/DWS/ejemplos/T2 a ver que pasa.
¿Por qué ahora sí que nos muestra el contenido del archivo? La respuesta, como estarás imaginando, es sencilla. Al igual que ocurre con los archivos HTML, Apache asume que al acceder a una carpeta el archivo principal que tiene que cargar es index.php.
¿Y si tenemos otro archivo index.html en la misma carpeta? No es recomendable tener dos mismos archivos index con distinta extensión en la misma carpeta. Si es así, Apache mostrará el que aparece primero. En cualquier caso, como regla general no guardes dos index nunca en la misma carpeta.
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).
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.
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 <?php y cierre ?>. Cuando PHP analiza un fichero busca esas etiquetas, y considera todo lo que hay dentro código PHP, mientras ignora el resto.
<!DOCTYPE html> <html lang=”es”> <head> <meta charset="utf-8"> <title>Ejemplo</title> </head> <body> <?php echo "Hola mundo"; ?> </body> </html>
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.
<!DOCTYPE html> <html lang=”es”> <head> <meta charset="utf-8"> <title>Ejemplo</title> </head> <body> Hola Mundo </body> </html> <?php # codigo PHP...
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:
<!DOCTYPE html> <html lang=”es”> <head> <meta charset="utf-8"> <title>Ejemplo</title> </head> <body> Hola Mundo HTML </body> </html>
Accede a http://localhost/DWS/ejemplos/T2/holaMundo2.php desde el navegador y comprueba el resultado.
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 <?php ?> 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.
La sentencia echo de PHP, imprime una o más cadenas en el fichero.
<!DOCTYPE html> <html lang=”es”> <head> <meta charset="utf-8"> <title>Ejemplo</title> </head> <body> <?php echo "Hola mundo"; ?> </body> </html>
Cuando el interprete analiza el fichero anterior lo convierte en:
<!DOCTYPE html> <html lang=”es”> <head> <meta charset="utf-8"> <title>Ejemplo</title> </head> <body> Hola mundo; </body> </html>
Dentro de un echo se pueden añadir etiquetas HTML:
<!DOCTYPE html> <html lang=”es”> <head> <meta charset="utf-8"> <title>Ejemplo</title> </head> <body> <?php echo "<p>Hola mundo</p>"; ?> </body> </html>
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:
Si vemos el código fuente (código HTML) desde el navegador, nos saldrá algo parecido a ésto:
Si la sentencia echo imprimiera la cadena en el navegador, la salida debería ser:
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 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.
<?php echo "Hola mundo", "Hola continente"; print "Hola mundo"; print "Hola continente"; ?>
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.
<?php $var1 = 5; $var2 = 10; echo "El valor de la variable 1 es $var1<br />"; echo 'El valor de la variable 2 es $var2'; ?>
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.
<?php //comentario de una sólo línea $var1 = 5; /*comentario de varias líneas */ $var2 = 10; #comentario al final de una línea ?>
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 ;.