Está en la página 1de 154

Introducción

1. Qué es PHP

2. Instalación del entorno de desarrollo del curso


Curso Iniciación a PHP  
‐ Introducción ‐

Qué es PHP

PHP es un lenguaje de programación que se ejecuta en servidores web de


diferentes tecnologías y permite crear páginas HTML de forma dinámica. Las
siglas PHP provienen de Personal Home Page, que podemos traducir como
Procesador personal de páginas web o de Hipertexto.

Su historia

El lenguaje PHP fue creado a finales de 1994 por Rasmus Lerdorf, que
inicialmente utilizó las páginas web elaboradas con este lenguaje para
comprobar quién consultaba su currículum. Por entonces no puso a disposición
de los usuarios esta sencilla herramienta.

A principios de 1995 publicó la primera versión disponible para el público, que


fue conocida como "Herramientas para páginas web personales" (Personal
Home Page Tools). Esta primera versión estaba integrada por un analizador
sintáctico, muy sencillo, que sólo comprobaba algunas macros, así como por
una serie de utilidades comunes de las páginas web de aquella época, un libro
de visitas, un contador y otras rutinas elementales.

A mediados de 1995 el analizador sintáctico de la primera versión fue


reelaborado dando origen a la versión 2, que se denominó PHP/FI debido a
que en ella se combinaron el analizador sintáctico inicial (PHP) con otro
programa, escrito también por el mismo autor, que procesaba datos de
formularios (FI). A esta combinación de herramientas para páginas web
personales e intérprete de formularios le añadió soporte para mSQL. A partir de
entonces PHP/FI creció rápidamente y bastantes usuarios empezaron a
contribuir en la elaboración del código.

Según datos estadísticos aproximados, se calcula que a finales de 1996 el


lenguaje PHP era utilizado al menos en 15.000 páginas web de todo el mundo
y a mediados de 1997 este número había aumentado a unas 50.000. El año
2014 hay ya más de 244 millones de sitios utilizando esta tecnología.

A mediados de 1997 el lenguaje PHP, a partir de las aportaciones hechas por


muchos usuarios, sufrió un cambio importante al dejar de ser un proyecto
personal de Rasmus y convertirse en el proyecto de un grupo mucho más
organizado. El analizador sintáctico se reelaboró por completo por Zeev
Suraski y Andi Gutmans. Se pusieron así las bases de la versión 3 de PHP
aprovechando la mayoría del código de PHP/FI e incorporando nuevo código,
que convirtió la versión 3 en un paquete sólido y potente como herramienta
para crear páginas web dinámicamente.

A finales de 1999 se distribuyeron tanto PHP/FI como PHP3 en muchos


productos comerciales, como el servidor web "C2's StrongHold" y Redhat
Linux, hasta el punto de que puede estimarse que ya entonces el lenguaje PHP
era usado por más de 1.000.000 de servidores en todo mundo.

1
Curso Iniciación a PHP  
‐ Introducción ‐

En mayo de 2000 se puso a disposición del público la versión 4 de PHP. Esta


versión utiliza el potente motor de scripts Zend, que aporta al intérprete PHP
mayor rapidez y le proporciona altas prestaciones. Además, soporta otros
servidores web, no sólo Apache, que permiten funcionar a PHP como módulo
nativo.

En julio de 2004 se puso a disposición del público la versión 5 de PHP, que es


la que vamos a utilizar en este curso. Esta versión ha mejorado
significativamente el rendimiento y las capacidades de PHP utilizando el nuevo
motor de scripts Zend 2.0, que aporta cambios en la Programación orientada a
objetos.

La siguiente versión prevista, que se debería haber publicado era PHP 6, cuyo
objetivo era dar a PHP soporte completo de Unicode el juego de caracteres
universal). Sin embargo, su desarrollo se estancó y en 2010 prácticamente se
tiró la toalla y sigue sin estar claro si se alcanzará el objetivo.

Mientras tanto, se han ido publicando versiones 5.X que han ido introduciendo
bastantes novedades en el lenguaje (5.3 publicada en junio de 2009, 5.4
publicada en marzo de 2012 y 5.5 publicada en junio de 2013).

A continuación y a lo largo de todo el curso veremos teórica y prácticamente las


ventajas y características de esta última versión de PHP, que es la que vamos
a utilizar en el presente curso.

Sus principales cualidades

1. PHP es un lenguaje sencillo. Es decir, si ya se sabe programar en lenguaje


C, Perl, Java o en el Shell de Unix, su sintaxis resulta cómoda y bastante
intuitiva, como se verá en los programas que elaboremos. Ya hemos indicado
en la presentación del curso que para hacer este curso es necesario saber
programar en algún lenguaje, ya que en el desarrollo del mismo se suponen
conocimientos suficientes de programación, pues no se van a explicar más que
los contenidos específicos de PHP. En este contexto hay que entender el
término “sencillo”, que hemos usado al referirnos al lenguaje PHP. Su código
se lee muy bien, no hay cabeceras ni secciones previas y, por tanto, los
programas elaborados con este lenguaje se mantienen fácilmente. Cualquier
alumno que sepa algún lenguaje de programación puede aprender lo
fundamental de PHP en poco tiempo. Si, además, quiere llegar a realizar
operaciones más complejas, como consultar bases de datos, comunicar
procesos mediante sockets, utilizar FTP o correo electrónico, habrá de tener los
conocimientos necesarios sobre estos temas para poder hacerlo con PHP.

Por otra parte, en el uso de aplicaciones elaboradas con PHP el usuario utiliza
un interfaz ya familiar como el navegador web, el mismo que viene empleando
para acceder a cualquier otra página, sin que necesite aprender ninguna
combinación especial de teclas, ni instalar otro software adicional diferente de
su navegador habitual, ni disponer de un sistema operativo concreto, Unix o
Windows.

2
Curso Iniciación a PHP  
‐ Introducción ‐

2. PHP es un lenguaje rápido, es decir, a pesar de ser interpretado, la


consulta de un usuario a través de Internet al servidor donde está el programa
PHP se ejecuta con bastante velocidad, de forma que el resultado de una
solicitud aparece de forma casi instantánea en la pantalla de su ordenador,
convertido en HTML, a no ser que las condiciones del tráfico o de configuración
de la red lo impidan.

3. PHP es un lenguaje multiplataforma, es decir, su código fuente es


interpretado por un servidor, esté instalado éste en un ordenador que tenga el
sistema operativo Unix, Mac o que tenga Windows. El mismo código es
compatible tanto para uno como para otro sistema. Esta característica le da a
PHP unas posibilidades muy amplias y le permite ofrecer prestaciones muy
variadas.

No obstante, debemos advertir que PHP nació y se ha desarrollado casi


siempre para Linux, por lo cual su utilización en servidores reales en Internet
tiene más sentido y alcanza su eficiencia óptima en este sistema operativo.

4. PHP es un lenguaje libre de licencia, gratuito. No hay que pagar para


poder utilizarlo, nos deja libres para distribuir sin cargo alguno las aplicaciones
que hagamos con él e incluso podemos mejorar y ampliar sin limitación alguna
su código y el de las herramientas que utiliza. Gracias a la colaboración y a la
generosa donación de muchos usuarios programadores, PHP mejora y se
amplía cada día. Además, gracias a esta colaboración desinteresada está
ampliamente probado como herramienta.

5. PHP es un lenguaje que dispone de numerosas librerías que facilitan en


gran medida la ardua tarea de confeccionar aplicaciones. Debido a esto, es un
lenguaje muy apto para ser utilizado tanto por programadores noveles como
por desarrolladores profesionales, pues hay librerías adecuadas a
desarrolladores de todos los niveles. Además, existen en la red múltiples
recursos que hacen más fácil el desarrollo de cualquier aplicación.

6. PHP es un lenguaje que permite programar utilizando objetos. Ésta es


una importante potencialidad de PHP, dado que la Programación Orientada a
Objetos es una tendencia presente prácticamente en todos los lenguajes, por lo
cual PHP puede usar directamente estos objetos e incorporarlos dentro de su
código. Cualquier programador acostumbrado a utilizar o crear objetos en sus
programas podrá servirse de estos componentes en PHP con la misma
facilidad que si lo hiciera con otro lenguaje.

7. PHP es un lenguaje que puede acceder a muchas bases de datos de


casi todos los formatos: Adabas D, dbm, dBase, filePro, Hyperware, Informix,
InterBase, LDAP, Microsoft SQL Server, SQLite, mSQL, MySQL, Oracle,
PostgreSQL, Solid, Sybase, etcétera. Esta potencialidad hace de PHP un
poderoso lenguaje de Internet, ideal para el acceso, tratamiento y consulta de
datos archivados en estos gestores de información.

8. PHP es un lenguaje que ofrece soporte para poder realizar otras


múltiples operaciones, como acceder a servidores IMAP, envío de correo con

3
Curso Iniciación a PHP  
‐ Introducción ‐

SMTP, acceso a servidores de FTP, acceso a SNMP para gestión de redes y


equipos, generación dinámica de gráficos y documentos PDF, análisis de
documentos XML, corrector ortográfico, generación de datos en WDDX,
etcétera.

9. PHP es un lenguaje que lleva incorporado en su propio diseño el acceso


en red desde cualquier puesto de trabajo. Su código permite controlar
perfectamente el acceso, tanto positiva como negativamente, de los usuarios al
servidor forzando, si es preciso, su identificación a las opciones que lo
requieran.

10. PHP es un lenguaje que permite proteger de forma eficaz el código


fuente de las aplicaciones informáticas creadas con él, siempre que se tomen
las medidas de seguridad adecuadas en el servidor donde se hayan instalado.
Como veremos, el código de los programas está sólo en el servidor, que recibe
la solicitud de usuario, interpreta el código y devuelve la respuesta en forma de
página HTML en el ordenador del cliente.

Resumiendo, podemos decir que PHP es un lenguaje potente, rápido,


gratuito, multiplataforma y abierto a mejoras y ampliaciones
permanentemente. Debido a esto, PHP se está imponiendo a otros
lenguajes de programación como alternativa para el desarrollo de
aplicaciones informáticas en Internet.

Este curso está basado en la última versión de PHP disponible


que es la 5.5 y todos los ejemplos y aplicaciones son compatibles
con ésta. De todas formas, no debe haber ningún problema en
utilizar este código fuente en versiones futuras de PHP.

4
Curso Iniciación a PHP  
‐ Introducción ‐

Instalación entorno desarrollo del curso

Servidor XAMPP

A continuación, se explica cómo instalar en diferentes sistemas operativos


(Windows, Linux y MAC) el software gratuito necesario para desarrollar
proyectos PHP.

Para realizar el curso, vamos a utilizar el siguiente software de servidor de


página web de tipo Open source y multi sistema operativo:

 Servidor Web Apache: servidor de páginas web más utilizado en


Internet.
 MySQL: sistema de bases de datos.
 PHP: lenguaje de programación referencia del presente curso.

La imagen siguiente muestra la evolución de las últimas versiones del software


Apache, MySQL y PHP (se incluyen únicamente las versiones principales):

La comunidad de Internet ha combinado los servidores Linux con Apache,


MySQL y PHP en un paquete denominado LAMP (Linux Apache MySQL PHP).
En el sistema operativo se denomina WAMP (Windows Apache MySQL PHP).

XAMPP

En este curso vamos a emplear el paquete multiplataforma llamado XAMPP


que disponible tanto para Windows como para GNU/Linux.

Para descarga este software debemos abrir el navegador y acceder a la página


de descarga AQUÍ:

5
Curso Iniciación a PHP  
‐ Introducción ‐

Si hacemos clic en el enlace “Files” podemos acceder a las diferentes


versiones en función del sistema operativo sobre el que vayamos a trabajar:

A fecha de redacción del documento, la última versión disponible es la 1.8.3.


Por lo tanto, debemos descargar esta versión.

Si usas Windows, en la parte de arriba de la página, aparece el enlace directo


“Download xampp-win32-1.8.3-3-VC11-installer.exe (131.8 MB)” que descarga
directamente la última versión de XAMPP.

6
Curso Iniciación a PHP  
‐ Introducción ‐

Nota: Como PHP 5.5 no está disponible para Windows XP, no existe XAMPP
1.8.3 para Windows XP. Si se quiere instalar XAMPP en Windows XP (sistema
operativo ya obsoleto en 2014), se puede instalar XAMPP 1.8.0.

Comprobación previa

Antes de instalar el servidor Apache de XAMPP es conveniente comprobar si


ya hay uno instalado en el ordenador donde vayamos a trabajar. Para ello, es
suficiente con abrir el navegador y escribir la dirección http://localhost. Si se
obtiene un mensaje de error de este tipo:

Indica que no hay ningún servidor de páginas web, en caso contrario, debemos
desactivarlo para continuar la instalación.

Instalación de XAMPP en Windows 7-8.1

Para instalar en Windows XAMPP debemos ejecutar el instalador descargado


de Internet anteriormente. Al hacerlo, aparecerán dos mensajes de aviso:

 El primer mensaje aparece si en el ordenador hay instalado un antivirus:

 El segundo aparece si está activado el Control de Cuentas de Usuario e


indica que algunos directorios que tienen permisos restringidos:

7
Curso Iniciación a PHP  
‐ Introducción ‐

A continuación, se inicia el asistente de instalación y continuamoshaciendo clic


en el botón "Next":

XAMPP instala los componentes mínimos: servidor Apache y el lenguaje PHP.


En la pantalla de selección de componentes hay que seleccionar también
MySQL y phpMyAdmin:

8
Curso Iniciación a PHP  
‐ Introducción ‐

Si no disponemos de mucho espacio en el disco duro, debemos marcar, al


menos el servidor MySQL.

En la siguiente pantalla se puede elegir la carpeta de instalación de XAMPP. La


carpeta de instalación predeterminada es C:\xampp. Se puede cambiar
haciendo clic en el icono con forma de carpeta y seleccionando la nueva
carpeta destino. Para continuar la configuración de la instalación, hacemos clic
en el botón "Next":

9
Curso Iniciación a PHP  
‐ Introducción ‐

La pantalla siguiente ofrece información sobre los instaladores de aplicaciones


para XAMPP creados por Bitnami. Para que no se abra la página web de
Bitnami, hay que desmarcar la casilla correspondiente:

10
Curso Iniciación a PHP  
‐ Introducción ‐

Comenzamos la instalación de XAMPP haciendo clic en el botón "Next" en la


siguiente pantalla. A continuación, se inicia el proceso de instalación, que
puede durar unos minutos:

Una vez terminada la instalación aparece la pantalla que confirma que XAMPP
ha sido instalado correctamente:

11
Curso Iniciación a PHP  
‐ Introducción ‐

Hacemos clic en el botón "Finish" y se abrirá el panel de Control de XAMPP:

El panel de control de XAMPP en Windows se divide en tres zonas:

12
Curso Iniciación a PHP  
‐ Introducción ‐

 Zona de módulos: para cada uno de los módulos (servidores) de XAMPP


muestra si está instalado como servicio, su nombre, el identificador del
proceso y el puerto utilizado. Además incluye unos botones para iniciar y
detener los servicios, administrarlos, editar sus archivos de configuración
y abrir los archivos de log.
 Zona de notificación: en esta parte XAMPP informa sobre las acciones
realizadas.
 Zona de utilidades: son los botones de la parte izquierda superior y
sirven para acceder a las operaciones más comunes. 

Para iniciar el srvidor Apache, hay que hacer clic en el botón “Start”
correspondiente a Apache:

Como el servidor Apache abre puertos en el ordenador (por primera vez), el


cortafuegos de Windows solicita al usuario confirmación para hacerlo.
Debemos autorizar el acceso en redes privadas:

13
Curso Iniciación a PHP  
‐ Introducción ‐

Si Apache se inicia correctamente, el panel de control de XAMPP mostrará el


nombre del módulo con fondo verde, su identificador de proceso, los puertos
abiertos (http y https), el botón "Start" se convertirá en el botón "Stop" y en la
zona de notificación se verá el resultado de la operación realizada.

Para cerrar el panel de control de XAMPP hay que hacer clic en el botón Quit:

14
Curso Iniciación a PHP  
‐ Introducción ‐

El botón Cerrar en forma de aspa no cierra realmente el panel de control, lo


minimiza. Si se ha minimizado el panel de control de XAMPP, se puede volver
a mostrar haciendo doble clic en el icono de XAMPP del área de notificación:

Haciendo clic con el botón derecho de ratón sobre el icono de XAMPP en el


área de notificación aparece un menú que permite mostrar u ocultar el panel de
control, arrancar o detener servidores y cerrar el panel de control:

Los dos archivos principales de configuración del servidor web son los archivos
httpd.conf (Apache) y php.ini (PHP). Se puede utilizar el panel de control de
XAMPP para editarlos en el bloc de notas haciendo clic en el botón "Config"
correspondiente a Apache y, a continuación, en el archivo que se desea editar:

15
Curso Iniciación a PHP  
‐ Introducción ‐

Atención: los archivos de configuración de Apache y PHP se cargan al iniciar


Apache. Por lo tanto, si se modifica un archivo de configuración de Apache
(httpd.conf, php.ini u otro) mientras Apache está arrancado, es necesario
detener y reiniciar el servidor Apache. Más adelante en el curso modificaremos
estos archivos.

Nota: si modificamos un archivo de configuración y hemos introducido errores,


el servidor no podrá iniciarse. Si no sabemos encontrar del problema, es
recomendable restaurar los archivos de configuración originales de los que
debemos hacer una copia de seguridad antes de realizar ningún cambio a los
ficheros de configuración.

Si queremos que un servidor arranque automáticamente como servicio, es


decir, que se inicie cada vez que arrancamos el ordenador, hay que marcar la
casilla “Service” correspondiente:

16
Curso Iniciación a PHP  
‐ Introducción ‐

Atención: es necesario ejecutar el panel de control de XAMPP “Como


Administrador” para poder realizar esta operación.

Sin embargo, recomendamos al alumno o alumna que, en lugar de configurar


como servicio los módulos XAMPP, configure el Panel de Control de XAMPP
para que se ejecuten los módulos que desee (típicamente el servidor Apache y
MySQL) haciendo clic en el botón “Config” y seleccionando en la ventana que
aparece los módulos correspondientes:

17
Curso Iniciación a PHP  
‐ Introducción ‐

Así es más sencillo controlar la ejecución de los servidores.

IMPORTANTE: debemos crear el sudirectorio c:\xampp\htdocs\curso para


trabajar en este curso ya que es ahí donde iremos guardando los proyectos
PHP.

Puedes encontrar el vídeo “Cómo instalar XAMPP”, que muestra


de manera visual los pasos seguidos en las explicaciones
anteriores.

Instalación de XAMPP en Linux

Para instalar en Linux XAMPP debemos descargar el instalador correcto en


función de la arquitectura de nuestro sistema operativo. Para obtener esta
información, abrimos un terminal de comandos y ejecutamos la orden:

uname -m

Si el resultado incluye el texto:

18
Curso Iniciación a PHP  
‐ Introducción ‐

- x86_64: la arquitectura es de 64 bits.

- i686 o i386: la arquitectura es de 32 bits.

Una vez descargado el archivo debemos abrir de nuevo una ventana de


comandos y cambiar el directorio donde hayamos guardado el archivo.
Después, ejecutamos los siguientes comandos:

sudo chmod 755 xampp-linux-x64-1.8.3-1-installer.run


sudo ./xampp-linux-x64-1.8.3-1-installer.run

A continuación, aparecerá un instalador con las ventanas muy parecidas a las


de Windows que instala el servidor en el directorio /opt. Durante la instalación
debemos elegir las opciones "Core files (archivos del núcleo)" y "Developer
Files (archivos de desarrollo)".

Al finalizar la instalación, en la última ventana aparece la opción de lanzar


XAMPP, si lo marcamos, se abre directamente la página de bienvenida en el
navegador que describiremos más adelante al ser común a todos los sistemas
operativos.

Para controlar la ejecución de los diferentes servidores de XAMPP podemos


ejecutar el siguiente comando:

sudo /opt/lampp/lampp [parámetro]

donde la opción [parámetro] se usa para indicar:

[parámetro] Descripción
start Inicia XAMPP.
stop Para XAMPP.
restart Para y reinicia XAMPP.
startapache Inicia solo Apache.
Inicia el soporte SSL para Apache (servidor acceso seguro). Este
startssl comando activa el soporte SSL permanentemente, es decir, si
reinicias XAMPP en el futuro SSL ya estará activado por defecto.
startmysql Inicia únicamente la base de datos MySQL.
Arranca el servidor ProFTPD. Mediante un servidor FTP puedes
descargar y subir archivos a tu servidor (usuario: "nobody",
startftp contraseña "lampp"). De nuevo, este comando activa ProFTPD
permanentemente, es decir, si reinicias XAMPP, el servidor FTP ya
estará activado por defecto.
stopapache Parar servidor Apache.
Para el soporte SSL de Apache. Este comando desactiva SSL
stopssl permanentemente, es decir, si reinicias XAMPP estará
desactivado.

19
Curso Iniciación a PHP  
‐ Introducción ‐

stopmysql Para la base de datos MySQL.


Para el servidor ProFTPD. Este comando desactiva el servidor
stopftp FTP permanentemente, es decir, si reinicias XAMPP estará
desactivado.
security Inicia el programa de seguridad.

Para ejecutar el panel de Control de XAMPP en una aplicación visual, es


necesario antes instalar el paquete siguiente:

sudo apt-get install python-glade2

Para ejecutar esta interfaz gráfica que nos permite de forma sencilla Iniciar /
Detener los servicios más importantes (Apache, MySQL y ProFTPD) debemos
ejecutar el siguiente comando:

sudo /opt/lampp/share/xampp-control-panel/xampp-control-panel

A continuación aparecerá la siguiente ventana:

Para que esta aplicación aparezca en el Dash o tablero (botón Inicio de la barra
lateral en Ubuntu) debemos crear un archivo del tipo "nombre.desktop" en el
directorio /usr/share/applications/ ejecutando en un terminal de comandos:

sudo gedit /usr/share/applications/xampp-control-panel.desktop

Y pegar el siguiente código en el nuevo fichero:

[Desktop Entry]
Comment=Start/Stop XAMPP
Name=XAMPP Control Panel
Exec=gksudo python /opt/lampp/share/xampp-control-panel/xampp-
control-panel.py
Icon[en_CA]=/opt/lampp/xampp.png
Encoding=UTF-8
Terminal=false
Name[en_CA]=XAMPP Control Panel
Comment[en_CA]=Start/Stop XAMPP

20
Curso Iniciación a PHP  
‐ Introducción ‐

Type=Application
Icon=/opt/lampp/xampp.png

Guardamos y cerramos el archivo.


Nota: en las opciones "icons" hemos indicado una imagen que hemos
descargado desde la página web de XAMPP y guardado en el directorio
/opt/lampp y llamada "xampp.png".

El contenido (páginas HTML, directorios, imágenes, etcétera) del servidor


Apache se guardar en el directorio /opt/lampp/htdocs. Por defecto, este
directorio no tiene los permisos correctos para poder modificar sus contenidos.
Por lo tanto, para cambiar los permisos, debemos ejecutar el comando
siguiente:

sudo chmod a+w /opt/lampp/htdocs

IMPORTANTE: debemos crear el sudirectorio /opt/lampp/htdocs/curso para


trabajar en este curso ya que es ahí donde iremos guardando los proyectos
PHP.

Instalación de XAMPP en Mac OS X

Para instalar XAMPP en Mac OS X debemos descargar de Internet la última


versión del instalador y ejecutarlo. A continuación, el sistema pedirá la
contraseña de administrador y aparecerá esta ventana:

Si hacemos clic en el botón “Next”, aparecerá un instalador muy parecido al


visto para Windows que instala el servidor en el directorio
/Applications/XAMPP. Durante la instalación debemos elegir las opciones
"Core files (archivos del núcleo)" y "Developer Files (archivos de desarrollo)":

21
Curso Iniciación a PHP  
‐ Introducción ‐

Al finalizar la instalación, en la última ventana aparece la opción de lanzar


XAMPP, si lo marcamos, se abre directamente la página de bienvenida en el
navegador que describiremos más adelante al ser común a todos los sistemas
operativos.

Si abrimos la carpeta /Applications/XAMPP podemos ver el software instalado


en nuestro ordenador:

El contenido (páginas HTML, directorios, imágenes, etcétera) del servidor


Apache se guardar en el directorio /Applications/XAMPP/htdocs. Por defecto,

22
Curso Iniciación a PHP  
‐ Introducción ‐

este directorio no tiene los permisos correctos para poder modificar sus
contenidos. Por lo tanto, para cambiar los permisos, debemos abrir “Finder” y
elegir la opción “Fichero->”Obtener información:

En esta ventana debemos movernos a la parte de abajo y modificar el usuario


“admin” para que tenga permisos de lectura y escritura.

IMPORTANTE: debemos crear el sudirectorio


/Applications/XAMPP/htdocs/curso para trabajar en este curso ya que es ahí
donde iremos guardando los proyectos PHP.

Para usar el Panel de Control debemos ejecutar la aplicación “manager-osx”


que aparece en el directorio de instalación de XAMPP:

23
Curso Iniciación a PHP  
‐ Introducción ‐

Comprobaciones XAMPP

Para verificar que hemos instalado correctamente XAMPP, hay que abrir un
navegador y escribir la dirección http://localhost. Al abrir la página por primera
vez, XAMPP pedirá seleccionar el idioma:

Una vez elegido el idioma, aparecerá la página de inicio de XAMPP que


indicará que lo hemos instalado correctamente:

24
Curso Iniciación a PHP  
‐ Introducción ‐

25
Curso Iniciación a PHP  
‐ Introducción ‐

Configuración de PHP para el curso

El archivo de configuración de PHP es el archivo php.ini, un archivo de texto sin


formato. Para que se pueda trabajar en modo desarrollador en este curso y
PHP muestre los errores correspondientes, debemos modificar este fichero de
configuración.

En XAMPP 1.8.3 el archivo php.ini se encuentra:

 En Windows: directorio C:\xampp\php\php.ini.


 En GNU/Linux: directorio /opt/lampp/etc/php.ini.
 En Mac OS X: directorio /Applications/XAMPP/xamppfiles/etc/php.ini.

Nota: la ruta del archivo de configuración php.ini se indica en el campo


"Loaded Configuration File" de la primera tabla que muestra la función
phpinfo(). En el menú de la página de administración de XAMPP 1.8.3 hay una
opción phpinfo() que muestra la configuración de PHP:

26
Curso Iniciación a PHP  
‐ Introducción ‐

A continuación, abrimos con un editor de texto el fichero php.ini y modificamos


las directivas “error_reporting” que especifica el tipo de errores notificados por
PHP y “display_errors” que indica que se muestren los errores:

error_reporting = E_ALL
...
display_errors = On

Más adelante en el curso explicaremos el sentido de estas variables.

27
Curso Iniciación a PHP  
‐ Introducción ‐

Instalación entorno desarrollo del curso

¿Qué es Eclipse?

Eclipse es un entorno de software multi-lenguaje de programación que incluye


un entorno de desarrollo integrado (IDE). Inicialmente, se diseñó pensando
principalmente en el lenguaje de programación Java y se puede utilizar para
desarrollar aplicaciones en este lenguaje.

En la web oficial de Eclipse (www.eclipse.org), se define como “An IDE for


everything and nothing in particular” (un IDE para todo y para nada en
particular). Eclipse es, en realidad, un armazón (workbench) sobre el que se
pueden instalar herramientas de desarrollo para cualquier lenguaje, mediante la
implementación de los plugins adecuados. El término plugin procede del inglés
to plug, que significa enchufar. Es un software que permite cambiar, mejorar o
agregar funcionalidades.

La arquitectura de plugins de Eclipse permite, además de integrar diversos


lenguajes sobre un mismo IDE, introducir otras aplicaciones accesorias que
pueden resultar útiles durante el proceso de desarrollo, tales como
herramientas UML (modelado de objetos), editores visuales de interfaces,
ayuda en línea para librerías, etcétera.

Usando distintas librerías es posible servirse de este entorno de desarrollo para


otros lenguajes de programación, como Ada, C, C + +, COBOL, Perl, Delphi,
PHP, Python, R. Ruby, Scala, Clojure y Scheme.

A menudo el IDE Eclipse añade un apellido a su nombre cuando se usa para


programar otro lenguaje. Por ejemplo, se llama Eclipse ADT (Ada Development
Toolkit) para Ada, Eclipse CDT para C / C + +, Eclipse JDT para Java y Eclipse
PDT para PHP.

Esta lista de lenguajes aumenta con los años, ya que este IDE se está
convirtiendo en el entorno de desarrollo de muchos programadores por su
simplicidad y facilidad de uso.

El Consorcio Eclipse

En su origen, el Proyecto Eclipse era un proyecto de desarrollo OpenSource,


desarrollado y mantenido en su totalidad por IBM. Bajo la dirección de IBM, se
fundó el Consorcio Eclipse, al cual se unieron algunas empresas importantes
como Rational, HP o Borland.

28
Curso Iniciación a PHP  
‐ Introducción ‐

Desde el año 2004, el Consorcio Eclipse es independiente de IBM y entre otras


empresas, está integrado por HP, QNX, IBM, Intel, SAP, Fujitsu, Hitachi,
Novell, Oracle, Palm, Ericsson y RedHat, además de por algunas universidades
e institutos tecnológicos.

Eclipse PDT

Eclipse PDT (Eclipse PHP Development Tools) es un entorno de desarrollo que


integra PHP y está desarrollado principalmente por la empresa Zend
Technologies y está basado en la plataforma de desarrollo libre Eclipse. Eclipse
PDT es un programa Java, por lo que se necesita instalar previamente Java
(Java 1.5 o superior). Tu ordenador debe disponer de Java previamente
antes de instalar Eclipse –PDT.

Para programar PHP en Eclipse es necesario instalar Eclipse y una serie de


plug-ins. Como instalar todos los plug-ins necesarios no es fácil, Eclipse PDT
proporciona también un único paquete que incluye todos los componentes
necesarios.

La última versión disponible actualmente (septiembre de 2013) es la versión


Eclipse PDT 3.2.0 (127 MB, del 22 de julio de 2013), basada en Eclipse 3.8
SR2 (de enero de 2013), que es la que utilizaremos en este curso.

Si accedes al enlace anterior, puedes descargarte este programa:

Si pulsas el botón anterior, el navegador abre la siguiente página. Aquí


debemos seleccionar la última versión de Eclipse – PDT 3.2 disponible en Zend
(enlace “Download All-In-One package including Eclipse 3.7.2 and PDT 3.0.2
from Zend)”:

29
Curso Iniciación a PHP  
‐ Introducción ‐

Zend Eclipse PDT es un paquete preparado por la empresa Zend Technologies


basado en Eclipse PDT y que incluye también varias herramientas de Zend. La
última versión disponible actualmente (septiembre de 2013) es la versión Zend
Eclipse PDT 3.2.0 se basa en Eclipse 3.8 SR2, que es la que vamos a utilizar
en este curso.

Después, se abre la página de descarga de Zend y debemos elegir la versión


adecuada al sistema operativo donde vayamos a trabajar:

A continuación, la página de Zend solicita un usuario registrado. A día de


redacción de este documento, es necesario hacerlo. Aunque el software sea
gratuito, debemos registrarnos para poder descargarlo.

30
Curso Iniciación a PHP  
‐ Introducción ‐

Zend Eclipse PDT no se distribuye con un instalador, se trata de un archivo


comprimido (zip o gz) que contiene la carpeta eclipse-php donde están todos
los componentes necesarios (excepto Java Runtime) para su ejecución:

31
Curso Iniciación a PHP  
‐ Introducción ‐

Windows

En Windows vamos a descomprimir el archivo zend-eclipse-php-3.2.0-


Win32.zip en cualquier directorio en el que el usuario tenga permisos y,
después, crearemos un acceso directo al programa zend-eclipse-php.exe.

Se aconseja instalar Zend Eclipse PDT en la carpeta C:\Mentor\zend-eclipse-


php y crear un acceso directo al programa eclipse.exe (C:\Mentor\zend-
eclipse-php\zend-eclipse-php.exe).

Linux

 Abrir una ventana de terminal de comandos.


 Cambiamos al directorio dónde se haya descargado el fichero
descargado zend-eclipse-php-3.2.0-x86.tar.gz.
 Descomprime el fichero anterior en el directorio /opt, con la orden:

sudo tar xvfz zend-eclipse-php-3.2.0-x86.tar.gz -C /opt

Al usar el comando sudo, el sistema operativo solicitará la contraseña de


administrador para continuar.

 Para ejecutar Eclipse PDT, hay que escribir la orden:

/opt/zend-eclipse-php/zend-eclipse-php

 Siguiendo el procedimiento habitual en el sistema operativo Linux, se


puede añadir un lanzador a Eclipse PDT en el menú Aplicaciones o el
Escritorio.

32
Curso Iniciación a PHP  
‐ Introducción ‐

Mac OS

 Hacemos doble clic sobre zend-eclipse-php-3.2.0-Mac.tar.gz. Mac OS


incluye una utilidad para descomprimir el archivo.
 Copiamos el directorio zend-eclipse-php del archivo anterior en la
carpeta /Applications. El sistema operativo puede solicitar la
contraseña de administrador para continuar.

 Para ejecutar Eclipse PDT, hay que escribir la orden:

/Applications/zend-eclipse-php/zend-eclipse-php

 Siguiendo el procedimiento habitual en el sistema operativo Mac OS, se


puede añadir un acceso directo a Eclipse PDT en el menú Aplicaciones
o el Escritorio.

Configuración Eclipse - PDT

Una vez hemos instalado Eclipse – PDT vamos a realizar su configuración


básica para poder utilizarlo en el curso. Por lo tanto, ejecutamos Eclipse – PDT.
Al hacerlo veremos la siguiente ventana que se cierra automáticamente:

La primera vez que se inicia Zend Eclipse PDT, el cortafuegos de Windows


pide al usuario confirmación para su ejecución. Debemos, al menos, autorizar
el acceso en redes privadas:

33
Curso Iniciación a PHP  
‐ Introducción ‐

Después, debemos elegir el directorio de trabajo (workspace). Recomendamos


utilizar el subdirectorio “curso” que hemos creado dentro de la carpeta “htdocs”
de XAMPP:

Pulsamos el botón “OK” y aparecerá una ventana muy similar a la que se


muestra a continuación:

34
Curso Iniciación a PHP  
‐ Introducción ‐

Puedes cerrar la pestaña “Welcome” para continuar.

Ahora vamos a descargar la ayuda de PHP en la página oficial para integrarla


en Eclipse - PDT. En esta página recomendamos descargar la ayuda con los
comentarios de usuarios (CHM):

35
Curso Iniciación a PHP  
‐ Introducción ‐

Podemos copiar este fichero de ayuda directamente en el directorio donde


hayamos descomprimido Eclipse – PDT. El tipo de archivo CHM es un formato
de Windows y para que podamos abrirlo en Linux o Mac OS, es necesaria la
instalación de una aplicación adicional. En la página de descarga de PHP
aparecen enlaces a estas aplicaciones.

Una vez lo hemos hecho, hacemos clic en la opción del menú Windows ->
Preferences” y seleccionamos la opción “PHP -> PHP Manual”. En la ventana
que aparece, pulsamos en el botón “New” para seleccionar el archivo de ayuda
que te acabas de descargar:

36
Curso Iniciación a PHP  
‐ Introducción ‐

Una vez hemos pulsado el botón “OK”, debemos marcar el nuevo manual local
y hacer clic en el botón “Default” para establecer por defecto este documento
de ayuda:

37
Curso Iniciación a PHP  
‐ Introducción ‐

A partir de ahora. Cuando estés trabajando con Eclipse – PDT, podrás con el
botón derecho del ratón y pulsando en la opción “Open PHP Manual” (atajo del
teclado [MAY + F2]) abrir la ayuda oficial de PHP:

Ya estás preparado para empezar a trabajar en el curso. ¡Adelante con él!

38
MÓDULO 1

UNIDADES DIDÁCTICAS:

1. Introducción al lenguaje PHP

2. El lenguaje de programación PHP 5


 
MÓDULO 1

Introducción al lenguaje PHP

Unidad 1

Índice de la unidad:

1. Introducción

2. Un vistazo general al IDE de Eclipse-PDT

3. ¿Cómo crear un proyecto PHP?

4. Estructura de una página PHP: fragmentos PHP y

HTML

5. Instrucciones o sentencias de PHP

6. Mostrar información en la página web

7. Tipos de datos y expresiones

8. Resumen
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

Introducción
En esta Unidad vamos a realizar una Introducción al lenguaje PHP. Además,
describiremos el entorno de desarrollo Eclipse PDT y crearemos nuestro
primer proyecto PHP.

Finalmente, aprenderemos a escribir con PHP programas sencillos en los


que el alumno distinga e interrelacione los elementos que integran el código
PHP y los que pertenecen al lenguaje HTML.

Un poco de historia
La World Wide Web (WWW), conocida comúnmente como “la web”, es un
sistema de distribución de documentos de hipertexto o hipermedios
interconectados y accesibles mediante Internet. Con un navegador web, un
usuario visualiza sitios web compuestos de páginas web que pueden contener
texto, imágenes, vídeos u otros contenidos multimedia, y navega a través de
esas páginas usando hiperenlaces.

Inicialmente, la web fue desarrollada por Tim Berners Lee en 1989 para el
CERN de Ginebra en 1991 y se extendió rápidamente por las Universidades
del mundo (en aquel entonces, Internet era una red a la que sólo tenían acceso
entidades gubernamentales, sobre todo, entidades educativas). En 1992,
algunos proveedores de Internet comerciales empezaron a dar acceso a
particulares y empresas, lo que popularizó más la web.

En esos años, las páginas web eran documentos de texto guardados en algún
directorio de un servidor y a los que accedía mediante los primeros
navegadores web. Cada página web que se visualizaba en el navegador
correspondía a un fichero en el servidor.

De forma simplificada, la imagen siguiente, ilustra su funcionamiento:

 El usuario escribe la dirección de la página web que se desea visitar en


su navegador.
 El navegador solicita la página al servidor web correspondiente.
 El servidor lee el fichero que corresponde a esa página web.
 El servidor envía el fichero al navegador.

- 41 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

 El navegador muestra la página web al usuario.

Este esquema de funcionamiento es suficiente para sitios web pequeños


creados por una sola persona y cuya información varía poco en el tiempo. Sin
embargo, generalmente, es necesario que las páginas no sean ficheros
estáticos guardados en el disco duro, sino que se generen cuando el usuario
las solicite.

Como hemos visto en la Introducción del curso, para la generación dinámica de


páginas web se puede recurrir a lenguajes de programación específicos como
PHP.

Funcionamiento de un programa codificado con PHP


Es importante tener una concepción general de cómo funciona PHP antes de
iniciar el curso. Veamos esquemáticamente los pasos que se dan desde que se
inicia un programa en PHP hasta que se ven los resultados de su ejecución en
la pantalla del cliente.

El funcionamiento es bastante sencillo:

 Se escribe el código fuente de la página web en lenguaje PHP.

 Se guarda este código en el servidor web.

 El navegador de un usuario solicita al servidor la página codificada


y guardada en los dos pasos anteriores.

 El servidor interpreta el código PHP.

 El servidor envía el resultado del código PHP al navegador del


usuario, que ve en su pantalla la página en formato HTML.

Observa en el esquema siguiente el proceso explicado en las líneas


anteriores

- 42 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

Como puede verse en este sencillo esquema, el usuario desde su ordenador y


usando su navegador habitual solicita una página web del servidor al que está
accediendo. El servidor web, que contiene el código fuente de la aplicación que
crea esa página, lo ejecuta haciendo que el intérprete PHP genere la página.
Seguidamente, envía al usuario cliente la página solicitada en formato HTML.

En ningún momento se envía código PHP al navegador del usuario cliente, por
lo que todas las operaciones realizadas son transparentes para éste, al que le
parecerá que está visitando unas páginas HTML que cualquier navegador
puede interpretar. PHP se diferencia de JavaScript precisamente en que el
programa PHP se ejecuta en el servidor, no en la máquina del cliente, como
ocurre en JavaScript.

A la vista del esquema anterior, conviene recordar que el curso está diseñado
de forma que el servidor Apache está instalado en el mismo ordenador local
donde trabaja el alumno. Por ello, al hacer el curso, el alumno no necesita
conectarse a Internet para hacer peticiones de páginas web a un servidor
remoto. No obstante, el efecto real es el mismo que si estuviera accediendo a
un servidor ubicado en el otro extremo del mundo.

Es importante señalar que al usuario le resulta indiferente que la página


estuviera guardada ya en el disco duro del servidor o que se haya generado en
ese momento.

A veces, el uso de lenguajes de programación no es suficiente para mostrar


toda la información solicitada por el usuario. Si se trata de mucha información o
ésta está diseminada en multitud de archivos, es conveniente utilizar algún
sistema gestor de bases de datos. Existen muchos sistemas gestores de bases
de datos y cualquier lenguaje de programación puede conectarse a ellos y
realizar consultas.

La imagen siguiente muestra, de forma simplificada, el esquema de


funcionamiento en este caso:

- 43 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

 El usuario escribe la dirección de la página web en su navegador.


 El navegador solicita esta página al servidor web.
 El servidor recurre al intérprete del lenguaje PHP para generar la página
dinámicamente.
 El intérprete del lenguaje PHP ejecuta el programa que, a su vez, realiza
consultas al gestor de bases de datos y envía el resultado al servidor
web.
 El servidor envía el fichero al navegador del usuario.
 El navegador muestra la página web al usuario.

Como hemos dicho anteriormente, al usuario le resulta indiferente que se haya


accedido o no a un sistema gestor de bases de datos. El navegador recibe la
información en formato HTML y lo muestra al usuario.

Qué necesitamos para desarrollar aplicaciones en PHP

En las explicaciones anteriores ya se han mencionado prácticamente todos los


elementos que son necesarios para utilizar PHP como lenguaje generador de
páginas web. En este apartado resumimos los más importantes y describimos
cómo los hemos integrado en el curso.

1. Un servidor web. A partir de la versión 5 de PHP puede utilizarse


cualquiera de los más comunes citados. En el curso vamos a utilizar un
servidor Apache 2 incluido en la distribución XAMPP, por ser gratuito, fácil de
instalar y ofrecer todas las prestaciones que necesitamos para realizar el curso.

2. Una plataforma que soporte PHP. Bibliotecas de PHP compatibles con el


servidor web Apache.

3. Un sistema gestor de bases de datos. La facilidad con que pueden


consultarse bases de datos de múltiples formatos otorga a PHP una potencia
extraordinaria en la generación de páginas dinámicas web. PHP puede realizar

- 44 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

consultas y procesar datos con eficacia y rapidez. En el curso utilizaremos el


gestor de bases de datos MySQL, que es uno de los más empleados en el
desarrollo de aplicaciones con PHP, gratuito, muy eficiente y en continuo
desarrollo.

4. Eclipse PDT (PHP Development Tools). Entorno de desarrollo basado en


Eclipse diseñado para PHP. Eclipse es un entorno de desarrollo inicialmente
diseñado para Java pero que se ha extendido a multitud de lenguajes de
programación por su facilidad de uso y por ser multiplataforma.

- 45 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

Un vistazo general al IDE de Eclipse-PDT


Antes de crear el primer proyecto de PHP, vamos a echar un primer vistazo al
entorno de desarrollo de Eclipse PDT para conocer sus características básicas,
la forma en que organiza el proyecto y las herramientas adicionales que ofrece.

La primera vez que se ejecuta Eclipse PDT se puede ver una pantalla muy
similar a la que se muestra a continuación.

Puedes cerrar la pestaña “Welcome” para continuar.

Editores

La ventana principal (la más grande) se llama “Editor”. El Editor es el espacio


donde se escribe el código fuente de los programas que estamos
desarrollando.

Es posible tener varios ficheros de código fuente abiertos a la vez, apilados uno
encima de otro. En la parte superior de la ventana del Editor se muestran las
pestañas que permiten acceder a cada uno de los ficheros abiertos (o bien
cerrarlos directamente).

- 46 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

Editor

Vistas

Además del Editor, existe un segundo tipo de ventanas “secundarias”, que se


llaman Vistas.

Las Vistas son ventanas auxiliares para mostrar información, introducir datos,
etcétera. Las Vistas se usan con múltiples propósitos, desde navegar por un
árbol de directorios, hasta mostrar el contenido de una consulta SQL.

Vistas

- 47 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

En función de las librerías de desarrollo (PHP, Android, GWT, Java, Delphi...)


se definen Editores propios y todas las Vistas necesarias.

En la ventana anterior están abiertas dos Vistas:

 La Vista vertical de la izquierda muestra el árbol de directorios de los


proyectos con los ficheros del mismo.
 La Vista horizontal inferior muestra una pequeña “agenda” de tareas
pendientes que pueden ser introducidas por el usuario, de forma directa,
o por Eclipse, en función de determinados eventos (compilación del
proyecto, depuración de código, etcétera).

Si deseamos cambiar las Vistas, se puede usar la opción “Show View” en el


menú de la pestaña “Window”.

Barras de Herramientas principal y secundarias

La barra de herramientas principal contiene los accesos directos a las


operaciones más comunes, como abrir y guardar archivos. Además, también es

- 48 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

posible ejecutar herramientas externas y tareas relacionadas con el Editor


activo, como ejecutar un programa, depurar el código fuente, etcétera.

Además de la barra de herramientas principal (imagen anterior), cada Vista


puede tener su propia barra de herramientas secundaria.

Perspectivas

Una Perspectiva es un conjunto de ventanas (Editores y Vistas) agrupadas que


simplifican el desarrollo de un proyecto.

Al seleccionar una Perspectiva se carga una configuración guardada de las


Vistas y Editores de nuestro entorno de desarrollo Eclipse.

Por ejemplo, existe una Perspectiva "PHP Perspective" que facilita el desarrollo
de aplicaciones PHP y que incluye, además del Editor, Vistas para navegar por
los scripts PHP, las bibliotecas, etcétera.

Se puede cambiar la perspectiva activa utilizando la opción “Open Perspective”


del menú de Windows. Desde este mismo menú también es posible definir
Perspectivas personalizadas.

También existe un botón en la barra de herramientas principal para cambiar de


Perspectiva:

- 49 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

Si el alumno tiene dudas sobre el uso avanzado de Eclipse, en Internet existen


muchos tutoriales que indican cómo utilizarlo.

Además, es posible usar el menú "Help" o la tecla [F1] para solicitar ayuda.
Desgraciadamente, a día de hoy, esta ayuda sólo se encuentra en inglés.

IMPORTANTE: para importar en Eclipse el código fuente de los ejemplos del


curso hay que usar la opción del menú principal: File -> Import.

Después, hay que marcar Existing Proyects into Workspace en la ventana


emergente y pulsar en el botón “Next”:

- 50 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

Finalmente, seleccionamos el directorio de trabajo donde debemos haber


copiado previamente los ficheros con el código fuente de los ejemplos:
“C:\XAMPP\htdocs\curso” y hacemos clic en “Finish”.

- 51 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

Puedes encontrar el vídeo “Cómo importar y ejecutar proyectos


PHP en Eclipse PDT”, que muestra cómo usar Eclipse PDT para
compilar y ejecutar los proyectos que son los ejemplos del curso.

Importante: en el apartado “Problemas al cargar proyectos de PHP”


de Preguntas y Respuestas (FAQ) de la Unidad 1 puedes encontrar
soluciones a los problemas que ocurren al importar el código fuente de
los ejemplos del curso.

- 52 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

¿Cómo crear un proyecto PHP?


A continuación, vamos a describir cómo crear un proyecto PHP usando Eclipse
ADT.

Se trata del primer proyecto que el alumno va a crear, por lo que es muy
importante prestar atención a los pasos seguidos, ya que los proyectos
siguientes se generan de manera similar.

Así pues, arrancamos Eclipse.

Creación de un nuevo Proyecto

En el menú de Eclipse hacemos clic en File -> New -> Project -> Local PHP
Project:

A continuación, aparece una nueva ventana en la que escribimos el nombre de


proyecto "unidad1.eje1.navegador".

El resto de opciones las dejamos como aparecen en la siguiente captura de


pantalla:

- 53 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

Nota: aunque la versión del curso de PHP es la 5.5 utilizada durante el curso,
Eclipse PDT sólo permite elegir la 5.4 como versión máxima del proyecto.
Notamos al alumno que esto no supone ninguna limitación técnica en el
desarrollo de sus trabajos y puede continuar tal y como aparece en la captura
de pantalla anterior.

Después, pulsamos el botón “Next”:

- 54 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

En esta pantalla debemos modificar el campo “Base Path” de tal forma que se
incluya el subdirectorio “curso” dentro del raíz del curso que vamos a utilizar.
Tecleamos, por lo tanto, la palabra “curso”. Así, Eclipse ADT sabrá ejecutar
correctamente el proyecto en el navegador.

Después, pulsamos de nuevo el botón “Next”:

- 55 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

Sin modificar nada, pulsamos el botón “Finish” para crear los ficheros del
proyecto.

A continuación, describimos los apartados que genera un proyecto PHP:

- 56 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

Importante: haciendo doble clic sobre estos ficheros podemos abrirlos en


el Editor de Eclipse PDT. Es importante que el alumno se familiarice con
este entorno de desarrollo y pruebe las distintas opciones del mismo.

Al abrir el fichero index.php (página índice del proyecto) veremos la siguiente


ventana:

- 57 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

Podemos escribir la sentencia siguiente para imprimir la palabra “hola”:

Procedimiento para ejecutar un programa PHP


Una vez que hemos creado ya un proyecto en lenguaje PHP, ¿cómo podemos
comprobar que funciona y ver la página web que genera?

Para poder usar el servidor Apache de XAMPP, en primer lugar es necesario


tenerlo funcionando. El servidor no se ejecuta de forma automática al arrancar
el ordenador. Debemos arrancarlo cada vez que iniciemos una sesión de
trabajo y cerrarlo al acabar, para que no ocupe memoria restando recursos al
ordenador innecesariamente. Para ello, usamos las instrucciones que hemos
comentado en el apartado anterior sobre la instalación de XAMPP.

En el panel de control de XAMPP debe aparece que “Apache” resaltado en


color verde:

- 58 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

Al acabar nuestra sesión de trabajo en el Aula o lugar donde estemos debemos


parar el servidor, para liberar la memoria del ordenador.

Para ejecutar un programa PHP, hacemos clic en el botón "Ejecutar" de la


barra de herramientas principal:

o en la opción "Run" de menú “Run”. También disponemos del atajo del teclado
[Ctrl+F11]

- 59 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

Si no aparece ningún problema de compilación, entonces aparecerá un


navegador web en la siguiente ventana dentro de Eclipse:

Si el código está bien escrito, aparecerá la página web que hemos diseñado. Si
no lo está, se mostrará el error encontrado y sólo aparecerá parte de la página
o nada. Para arreglar el problema, nos pasamos al editor, arreglamos el código
donde proceda y guardamos otra vez el fichero. Cuando lo hayamos hecho,

- 60 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

ejecutamos de nuevo el proyecto. Así, veremos el resultado con las


modificaciones hechas en el código fuente.

Y de esta forma podemos ir escribiendo, probando, mejorando y arreglando el


código fuente a medida que hacemos los ejercicios y actividades que se
indiquen en la Agenda de actividades.

Además, podemos copiar de la barra de direcciones del navegador de Eclipse


su URL:

Abrir nuestro navegador habitual y pegar la URL en su barra de direcciones


para ver el resultado de la ejecución del proyecto PHP:

MUY IMPORTANTE:

Cada vez que modifiquemos el código fuente y deseemos probar de nuevo


nuestro proyecto no es necesario parar el servidor web Apache y arrancarlo de
nuevo; simplemente hacemos clic de nuevo en el botón “Run” de Eclipse para
ver el resultado del programa modificado.

- 61 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

Puedes encontrar el vídeo “Cómo importar y ejecutar proyectos


PHP en Eclipse PDT”, que muestra cómo usar Eclipse PDT para
compilar y ejecutar los proyectos que son los ejemplos del curso.

- 62 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

Estructura de una página PHP: fragmentos PHP y


HTML
A continuación, abordamos algunos aspectos generales relativos a la forma del
código escrito en PHP y a su inserción en el código HTML, poniendo algunos
ejemplos que nos ayuden a comprender mejor su estructura y funcionamiento.
Se trata sólo de aspectos genéricos que el alumno ha de tener en cuenta
siempre al analizar el código de los ejercicios resueltos y al escribir los propios.

Una página PHP es un archivo de texto que contiene uno o varios fragmentos
de código PHP y que también puede contener fragmentos de código HTML.

Ya hemos visto que al ejecutar una aplicación elaborada con PHP no hay que
pensar en un programa compilado binario de tipo exe que funciona en el
ordenador del cliente, sino en un programa cuyo código está sólo en el servidor
web y es interpretado en el mismo a requerimiento del usuario cliente, que en
respuesta a su solicitud recibe en la pantalla el resultado de esa interpretación
en forma de página web, en formato HTML, generada por PHP.

También hemos indicado que para participar en este curso es imprescindible


tener algunos conocimientos del formato HTML (HyperText Markup Language,
Lenguaje de marcas de Hipertexto). Si el alumno advierte que necesita adquirir
más conocimientos sobre este lenguaje, en el proyecto Mentor hay un curso a
distancia que puede ayudarle mucho. También puede consultar el Anexo del
curso donde se incluye un sencillo Manual con una breve explicación de las
principales órdenes del lenguaje HTML. En el apartado Más información se
cita algunas direcciones de Internet sobre este lenguaje.

En todo caso, damos por supuesto que quien hace el curso conoce lo más
rudimentario de HTML y, por lo tanto, centramos las explicaciones más
detalladas en la parte del código que corresponde a PHP.

Suele decirse que PHP es un lenguaje “embebido” en el código HTML. Y es


cierto, ya que generalmente el código PHP va envuelto externamente por
código HTML. Aunque también puede ocurrir lo contrario, es decir, que el
código PHP esté enmarcando al código HTML. En todo caso, ambos códigos
están íntimamente relacionados y de hecho sus instrucciones se mezclan hasta
cierto punto. Por eso, es imprescindible, en primer lugar, conocer los
separadores de uno y de otro.

Veamos en un ejemplo esta separación usando el mismo ejemplo que ya


hemos utilizado anteriormente:

<HTML> 
  <HEAD> 
    <TITLE>  
      Curso PHP 5 ‐ Unidad 1 ‐ Ejemplo 1 
    </TITLE> 
  </HEAD> 

- 63 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

  <BODY> 
   
  <!‐‐  Las líneas anteriores contienen sólo código HTML.  
  Si lo necesitas, mira el Apéndice 2. ‐‐> 
 
  <?PHP    
    // Aquí se inicia el código PHP. 
    // Obtenemos el valor de la variable global HTTP_USER_AGENT 
    // de PHP que indica los datos del navegador del usuario.  
       $navegador = $_SERVER['HTTP_USER_AGENT']; 
  ?>   <!‐‐ Aquí se cierra el código PHP. ‐‐> 
 
  <P>Estás usando el navegador<B> 
   
  <?PHP    // Aquí se inicia de nuevo el código PHP. 
       echo($navegador); 
  ?>    <!‐‐ Aquí se cierra el código PHP. ‐‐> 
 
  <!‐‐ A partir de esta línea sigue el código HTML. ‐‐> 
  </B>.</P> 
   
  </BODY> 

</HTML>

Como el objetivo de PHP es generar páginas HTML, hay una estrecha relación
entre el código de PHP y de HTML. Ambos conviven dentro del mismo script.
En este caso, el código PHP está envuelto por el código HTML, es decir, en la
parte externa inicial y final del código se usa lenguaje HTML y en su interior se
insertan dos fragmentos del lenguaje PHP.

Desde Eclipse PDT puedes abrir el proyecto Ejemplo 1 (Navegador) de la


Unidad 1. Estudia el código fuente y ejecútalo para mostrar en el navegador
su resultado.

El resultado de la página PHP es el siguiente:

El servidor Apache, que alberga este código, distingue entre las líneas que
pertenecen a cada lenguaje para enviar al intérprete PHP las que pertenecen a
PHP e interpreta él mismo el código HTML puro, generando la página web que
remite al cliente en formato HTML.

- 64 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

Habitualmente no vamos a comentar ni explicar el código HTML, ya que


suponemos que el alumno lo conoce. No obstante, si lo necesita para recordar
o aclarar alguna etiqueta, puede consultar el Anexo del curso, donde se
incluye un resumen de las principales de este lenguaje.

Podemos ver el código HTML resultante de la ejecución del proyecto haciendo


clic con el botón derecho del ratón sobre la opción “Ver código fuente”:

Así, podemos ver el código HTML que recibe el navegador del servidor web y
que el usuario visualizará:

IMPORTANTE: a veces, al ejecutar un proyecto, no aparece ningún error de


ejecución en el navegador al quedar oculto en alguna etiqueta HTML y es muy
útil ver el código fuente HTML.

- 65 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

Delimitadores de código PHP

¿Cómo saber dónde comienza y dónde acaba el código PHP? Ya conocemos


que los controles HTML de apertura y cierre son, respectivamente, <etiqueta> y
</etiqueta>. De forma similar, el código fuente de PHP siempre debe aparecer
entre cualquiera de estos controles, de apertura y cierre, respectivamente:

 <?php código PHP ?>

 <? código PHP ?>

Esto se puede hacer a través de la función short_tags(), activando la opción


de configuración short_open_tag en el archivo de configuración de PHP, o bien
compilando PHP con la opción --enable-short-tags en configure. El delimitador
<? se llama etiqueta de apertura abreviada (short open tag). Desde hace años
se desaconseja completamente su uso porque provoca conflictos con las
instrucción de procesamiento xml (<?xml) de los documentos XML.

 <?script language=”php”>código PHP </script>

 <% código PHP %>

Esta cuarta manera sólo está disponible si se han habilitado las etiquetas tipo
ASP usando la opción de configuración asp_tags. El soporte para las etiquetas
tipo ASP se añadió en la versión 3.0.4.

Como regla general, en los programas del curso usaremos el primero de los
cuatro delimitadores, ya que nos parece más sencillo, estándar y
suficientemente claro.

El servidor Apache, cuando ejecuta un programa PHP, pasa al intérprete PHP


todos los fragmentos comprendidos entre <?php y ?> y devuelve al cliente los
no comprendidos entre estos símbolos.

Conviene observar que los fragmentos del código PHP se pueden incluir dentro
del código HTML en cualquier posición. Pero no se pueden anidar, es decir,
dentro de un trozo de PHP no se puede incluir otro fragmento PHP. En el
ejemplo anterior se ve que hemos incluido dos trozos PHP independientes en
dos posiciones diferentes del código envolvente HTML.

Hay otra filosofía en la organización y distribución de los fragmentos de código


HTML y PHP. Consiste en insertar el código HTML dentro del código PHP. En
este caso los separadores de PHP incluyen en su interior código HTML. Pero el
resultado es el mismo.

Así estaría organizado el código del ejemplo anterior siguiendo esta filosofía:

<?PHP // Aquí se inicia el código PHP. 

- 66 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

 
  echo "<HTML> 
      <HEAD> 
        <TITLE>  
          Curso PHP 5 ‐ Unidad 1 ‐ Ejemplo 2 
        </TITLE> 
      </HEAD> 
      <BODY> 
 
      <P>Estás usando el navegador 
      <B>"; 
 
      $navegador = $_SERVER['HTTP_USER_AGENT']; 
         echo($navegador); 
          
      echo "</B>.</P> 
      </BODY> 
    </HTML>"; 

?><!‐‐ Aquí se cierra el código PHP. ‐‐>

Desde Eclipse PDT puedes abrir el proyecto Ejemplo 2 (Navegador 2) de


la Unidad 1. Estudia el código fuente y ejecútalo para mostrar en el
navegador el resultado de su interpretación exactamente igual que el
Ejemplo 1.

Sobre código PHP y el servidor

Cuando un navegador solicita una página PHP a un servidor, este servidor lee
el archivo o script PHP secuencialmente y va generando el resultado de la
siguiente manera:

 Si el archivo PHP contiene fragmentos HTML, el código HTML se incluye


en el resultado sin modificaciones.
 Si el archivo PHP contiene fragmentos PHP, se ejecutan sus sentencias
que, si generan texto, se incluye en el resultado.

En general, cuando el servidor termina de leer el archivo PHP, se envía al


navegador el resultado. De todas formas, PHP permite enviar información
parcial antes de acabar la ejecución del fichero completo.

Es importante tener en cuenta que:

 El navegador recibe siempre una página web, es decir, código HTML,


nunca recibe código PHP.
 Los fragmentos PHP generan etiquetas HTML que forman la página web
y es la que interpreta el navegador.
 El navegador no distingue en la página recibida, qué parte se generó
dinámicamente en un fragmento PHP y qué parte en un fragmento
HTML.

- 67 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

 Como el script PHP se lee secuencialmente, el código HTML generado


por los fragmentos PHP y el incluido en los fragmentos HTML se
encuentran en el mismo orden en que se están los fragmentos en el
script PHP.

- 68 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

Instrucciones o sentencias de PHP


Su formato

A lo largo del curso iremos estudiando la sintaxis de cada instrucción en


concreto. En esta primera unidad sólo vamos a abordar dos aspectos
generales sobre las sentencias que conviene conocer desde el primer
momento:

1. Una sentencia puede estar integrada por una asignación, una llamada a una
función o una estructura de control de flujo, como una condición o un bucle.
Todas las sentencias acaban necesariamente en punto y coma (;). Por
ejemplo, es una sentencia o instrucción de asignación la siguiente:

$navegador = $_SERVER['HTTP_USER_AGENT'];

En ella se asigna a una variable ($navegador) el contenido de otra variable de


entorno de PHP que contiene información sobre la cabecera de la transacción
de información entre el usuario y el servidor.

La sentencia echo($navegador); muestra en el navegador del usuario el valor


asignado a la variable $navegador.

La etiqueta de cierre (?>) también implica el fin de una sentencia, por lo que
equivale al punto y coma (;). Igualmente sería correcto escribir así las
sentencias anteriores:

<?php
$navegador = $_SERVER['HTTP_USER_AGENT'];
echo($navegador);
?>

2. Según la forma de organizar las sentencias podemos distinguir entre


sentencias simples y sentencias compuestas. Las primeras contienen una
sola instrucción que acaba en punto y coma (;). Son sentencias simples las dos
que aparecen en el apartado anterior.

Las sentencias compuestas están integradas por varias instrucciones incluidas


dentro del par de signos {}. Las sentencias compuestas se utilizan
principalmente en las estructuras de control condicionales y de bucle, y también
en el cuerpo de las funciones. Por ejemplo, es una sentencia compuesta la
siguiente:

$x=0;
while ($x<15)
{
$z=0;
while ($z<10)
{
$d=$x*$z;
echo "$x x &z = $d";

- 69 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

$z++;
}
$x++;
}

Observando este ejemplo podemos comprender que en realidad las sentencias


compuestas son sentencias simples que deben ejecutarse como bloque
conjunto. Con los ejercicios prácticos a lo largo del curso se irán utilizando sin
problema unas y otras cuando convenga.

Nombre de los identificadores

Una variable de un lenguaje de programación es un elemento que permite


almacenar y modificar información. Esta variable se identifica por su nombre.

En el lenguaje PHP todas las variables deben iniciarse con el signo dólar ($).
Además, el intérprete distingue entre letras mayúsculas y minúsculas, por lo
cual $CAsa y $casa son dos nombres de variable diferentes.

La persona que escribe el código pone los nombres de los elementos que se
utilizan en los programas, como variables, tipos de datos, constantes,
funciones, clases, etcétera. Este nombre se denomina identificador.

El nombre del identificador debe estar integrado por una sola palabra (no una
frase con espacios en su interior) y, como hemos dicho, si es una variable,
debe iniciarse por el signo $. Ningún identificador puede comenzar con un
número, incluso aunque pongamos delante el signo $. En el nombre de los
identificadores pueden utilizarse el signo de subrayado, otras letras y números
(excepto en la primera posición). No se pueden usar determinados signos,
como los dos puntos (:), ni el punto y coma (;), ni las barras inclinadas / y \, ni
los operadores aritméticos (+, -, *, /, %), etcétera. Con la práctica se irá
sabiendo qué nombres no acepta PHP por ser incorrectos, pues se indica con
un error al interpretar el código. Por ejemplo, son nombres de identificador
válidos $casa, $suma_todo y $forma_1_2_adaptador. En cambio, no lo son
function 10Casos, $unidad/B, $ma:ana, $jam\s y $suma-todo, $uno*dos,
$mio+tuyo.

Su longitud máxima significativa es de 63 caracteres. Aconsejamos emplear los


que sean necesarios para saber qué contiene cada identificador o la operación
que se realiza, pero no es cómodo usar nombres demasiado largos.

Recomendamos que los nombres de estos identificadores tengan algún


significado que nos informe de su contenido o de las operaciones que se llevan
a cabo dentro de los mismos. Por ejemplo $suma_todo puede ser acertado
como identificador de una variable que contenga el valor resultante de sumar
otras variables o como nombre de una función cuya finalidad consista en llevar
a cabo una suma de diversos valores.

PHP utiliza un conjunto de identificadores predefinidos que debemos


respetar también. Por ejemplo, son identificadores predefinidos los distintos

- 70 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

tipos de datos, como Int, double, string, array, o las palabras reservadas, como
while, function, for, etcétera.

En PHP no hay que declarar previamente el tipo de variable, sino que el hecho
de asignar un tipo de dato a una variable ya es suficiente para que esa variable
sea del tipo de datos que contienen. Además, si a una misma variable primero
se le asigna un tipo de datos, como una cadena de caracteres, será de ese
tipo, pero si después se le asigna otro tipo de datos diferente, como un número
entero, desde ese momento será de este tipo. Esto facilita mucho las cosas,
pero exige tener un mayor control sobre los valores que va teniendo una
variable a lo largo de su vida dentro de un script.

Indentar las instrucciones

Aconsejamos que, desde el comienzo del curso, el alumno se acostumbre a


indentar las instrucciones que formen parte de una estructura dentro de la cual
se insertan. Por ejemplo, dentro de la estructura de control condicional
if...else..., así como dentro de las estructuras de bucle for o while conviene
adentrar unos espacios las instrucciones. De esta forma, será más fácil e
intuitivo localizar un bloque de líneas al depurar o estudiar un script.

Aunque hay varias formas de indentar, en los ejercicios del curso hemos
seleccionado la forma más común. El alumno puede observar en los mismos
cómo lo hemos hecho y aprender a indentar él también sus scripts.

Comentarios al código fuente

El lenguaje PHP permite incorporar comentarios dentro del propio código


fuente. Los comentarios facilitan la comprensión posterior de un programa y
aclaran las instrucciones que lo exijan.

Si el texto del comentario no excede de una línea, haya o no una instrucción a


su izquierda, lo mejor es usar el signo // (doble barra inclinada a la derecha).
Por ejemplo, podemos comentar así una instrucción:

<?php
$navegador = $_SERVER['HTTP_USER_AGENT'];
echo($navegador);//Muestra contenido de $navegador.
?>

Si el comentario es más largo y ocupa varias líneas, hay que incluir su texto
entre la combinación de signos /*...*/.

<?php
$navegador = $_SERVER['HTTP_USER_AGENT'];
echo($navegador);

/* En estas dos instrucciones se asigna a la variable $navegador


la cabecera de la comunicación y se muestra en la pantalla. */
?>

- 71 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

El alumno debe poner comentarios en los scripts que elabore, tanto para
acostumbrarse a hacerlo, como para aclarar las instrucciones que lo precisen.

En un fragmento PHP no pueden escribirse etiquetas HTML sueltas, el código


HTML debe generarse siempre con instrucciones de PHP. El script siguiente:

<?php
<p>Hola</p>
?>

No puede ejecutarse y se produce un error de sintaxis:


Parse error: syntax error, unexpected '<' in index.php on line 2

Código HTML de páginas estándar

La mayoría de los navegadores interpretan correctamente páginas HTML que


no siguen el estándar. Si deseamos crear páginas completas HTML según el
estándar HTML (denominado, XHTTP 1 Strict), es decir, incluyen todas las
etiquetas HTML necesarias.

Si lo que te contamos a continuación no te suena, puedes abrir el Anexo del


curso sobre HTML básico para ampliar conocimientos.

El ejemplo siguiente muestra el código HTML de una página web válida con las
líneas numeradas.

<?xml version="1.0" encoding="iso-8859-1"?>


1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
<html xmlns="http://www.w3.org/1999/xhtml">
4
<head>
5
<meta http-equiv="content-type" content="text/html; charset=iso-
6
8859-1" />
7
<title>Página válida HTML</title>
8
</head>
9
10
<body>
11
<p>El código HTML de esta página es válido</p>
12
</body>
13
</html>

 La etiqueta <?xml ... ?> (línea 1) es una etiqueta opcional, pero


recomendada. No es una etiqueta XHTML, sino una declaración XML
que indica el juego de caracteres que se va a utilizar en el resto del
documento.
 La etiqueta <!DOCTYPE ... > (líneas 2 y 3) sí que es obligatoria. Esta
etiqueta indica el tipo de documento (DOCTYPE) de la página. Puesto que
existen varias versiones de HTML y XHTML (y cada versión permite
unas etiquetas diferentes), el navegador necesita saber a qué versión
corresponde la página. La etiqueta contiene la dirección web de la dtd

- 72 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

(definición de tipo de documento) que especifica la versión del lenguaje


de etiquetas utilizado en el documento (estructura, etiquetas disponibles
y atributos).
 La etiqueta <html> ... </html> (líneas 4 a 13) engloba todo el
documento html. El atributo xmlns especifica el espacio de nombres del
documento que resuelve el problema que aparece cuando en un mismo
documento HTML se utilizan etiquetas de distintos lenguajes de
etiquetas, en los que pueden coincidir algunos nombres. El espacio de
nombres es como el "apellido" de la etiqueta.
El documento HTML se divide a su vez en dos partes, la cabecera
(<head> ... </head>, líneas 5 a 8) y el cuerpo (<body> ... </body> ,
líneas 10 a 12).
o La cabecera <head> ... </head> (líneas 5 a 8) contiene
información de identificación y control que en general no se
muestra en la ventana del navegador, aunque puede afectar a la
presentación (por ejemplo, los enlaces a hojas de estilo).
 Las etiquetas <meta /> están pensadas para proporcionar
información sobre el documento a los programas que
analicen la página.
La línea 6 del ejemplo informa del juego de caracteres
empleado en la página. Existen otros tipo de <meta /> . Por
ejemplo, la etiqueta <meta name="keywords
contents="palabras, más palabras, etc." /> está
pensada para que los buscadores sepan de qué va la
página (por desgracia, se ha abusado mucho de esta
etiqueta así que los buscadores no la toman prácticamente
en cuenta).
 La etiqueta de título <title> ... </title> (línea 7)
contiene el texto que se muestra en la barra de título de la
ventana del navegador.
La etiqueta <title> es obligatoria y debe incluirse en todas
las páginas web.
o El cuerpo (<body> .... </body>, líneas 10 a 12) contiene lo que
se verá en la ventana del navegador. En el ejemplo, contiene un
único párrafo
 La etiqueta de párrafo <p> ... </p> contiene el texto que
se muestra en la ventana del navegador

Estrictamente hablando, toda página PHP debe incluir o generar todo el código
HTML estándar necesario.

De igual forma que ocurre con una página HTML, una página PHP puede
enlazar a una hoja de estilo CSS mediante la etiqueta <link>.

Nota: por simplificación en la explicación de los ejemplos del curso, no se va a


utilizar en todos los casos estrictamente el estándar XHTML. Así, el código en
PHP será mucho más legible y sencillo de entender.

- 73 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

Mostrar información en la página web


En los ejemplos anteriores ya hemos usado alguna orden que permite mostrar
información. Como ésta es una operación bastante frecuente y sencilla, vamos
a comentar ahora las diferentes formas que tenemos para hacer que en la
página del usuario se muestre información con un determinado formato.

En esta operación hay que distinguir dos aspectos:

1. El contenido de la información que debe mostrarse. Hay que escribirla entre


comillas detrás de la orden o asignarla a una variable y, luego, poner esta
variable como argumento de la orden correspondiente.

2. El formateo de esa información en la página HTML del cliente. Para que el


cliente que hace una solicitud al servidor vea el contenido de la información
ordenado y maquetado, es preciso incorporar en el código fuente los controles
necesarios.

Se puede mostrar información con las órdenes siguientes:

1. echo

Ya hemos visto varios ejemplos de este comando. Tiene esta sintaxis:

echo argumento, donde la información que se muestra (argumento) puede ser


una cadena de caracteres entre comillas o una variable. También puede usarse
la sintaxis

echo (argumento1, argumento2,...)

Si el argumento es una cadena entre comillas dobles, debemos tener en cuenta


que las variables incluidas en ese texto se expanden, es decir, muestran su
contenido, no su nombre. Sin embargo, las funciones no se expanden. ¿Cómo
podemos conseguir que las variables no se expandan y las funciones sí lo
hagan? Veamos el ejemplo siguiente donde mostramos en letras mayúsculas el
contenido de una variable:

$x = "el amor es libre";


echo "La variable $x contiene el texto strtoupper($x) en
letras mayúsculas.";

Ejecutando estas dos instrucciones aparece en la pantalla:

La variable el amor es libre contiene el texto strtoupper($x) en letras


mayúsculas.

Observamos que, aunque esté dentro de una cadena, la variable $x se ha


expandido, es decir, ha mostrado su texto; en cambio, la función strtoupper

- 74 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

(string to upper, convertir el texto de la cadena en letras mayúsculas) no se ha


expandido.

Pero nosotros queremos que en la página web aparezca:

La variable $x contiene el texto EL AMOR ES LIBRE en letras mayúsculas.

Para conseguirlo, hay que utilizar esta otra sintaxis:

$x = ”el amor es libre”;

echo “La variable \$x contiene el texto”.strtoupper($x). “en letras


mayúsculas.”;

Si nos fijamos en esta última sintaxis, podemos observar que hemos utilizado la
barra hacia la izquierda (\) delante de la variable, para que no expanda su
contenido. Además, hemos sacado la función de las comillas y la hemos
concatenado con el texto anterior y posterior usando el operador de
concatenación (.).

2. print

Esta orden es prácticamente igual que echo, hasta el punto de que se pueden
intercambiar sin problemas.

Veamos un ejemplo en que se usa la orden print en lugar de echo.

<HTML> 
<HEAD><TITLE>Curso PHP 5 ‐ Unidad 1 ‐ Ejemplo 3</TITLE></HEAD> 
<BODY> 
 
<?php // Aquí se inicia el código PHP. 
 
  print "<H1><CENTER>Uso de la orden print. Funciona como echo.</H1> 
             </CENTER><H2>"; 
  /* Mostramos el texto anterior con un tamaño de letra grande  
     y centrado.*/ 
  $pares=0; 
   
  /* Abrimos un bucle para repetir la operación 20 veces. 
  En la Unidad 2 se estudia esta estructura de control.*/ 
  for (;$pares<40;)  
  { 
  print " ‐‐ $pares "; // Observa que la variable se expande. 
  if ($pares==40)      // Si la variable $pares vale 40... 
    break;          // Salimos del bucle. 
    $pares+=2;      // Sumamos 2 al valor actual de la variable. 
     } 
 
   print "</H2><P><H3>&nbsp;&nbsp;&nbsp;&nbsp; Relación de los 20  
         primeros números pares.</H3>"; 
     /* Mostramos el texto anterior con un tamaño de letra pequeño. 
     Como HTML sólo respeta un espacio en blanco, con el comando 
     &nbsp; hacemos que la frase deje 5 espacios a la izquierda. */ 

- 75 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

 
   /* Aquí acaba el código PHP. No podemos poner este comentario a 
   continuación del signo ?>, pues estaría fuera del código PHP.*/ 
?> 
 
</BODY> 
</HTML>

Desde Eclipse PDT puedes abrir el proyecto Ejemplo 2 (Números) de la


Unidad 1. Estudia el código fuente y ejecútalo para mostrar en el navegador
su resultado, en el que hemos utilizado la orden print.

3. printf

Es una función que permite mostrar información formateada según los valores
que aparezcan en una cadena de formato integrada por caracteres fijos y por
una directiva %.

Su sintaxis es:

printf ("cadena de formato", argumento1, argumento2,...)

En los argumentos se incluye la información que se quiere mostrar, como con


echo o con print. En la cadena de formato, entre comillas, puede ponerse un
texto, que aparece tal cual lo escribamos, con expansión de las variables si no
usamos el signo \, y el valor de una variable según se establezca en la directiva
%.

Veamos en un ejemplo sencillo cómo se comporta esta función. Con Eclipse


PDT escribimos el código fuente siguiente en PHP:

<HTML> 
<HEAD></HEAD> 
<BODY> 
<?php 
    $i=15; 
    printf ("Valor de la variable \$i= %d \n", $i); 
    echo "<P>Nueva línea "; 
?> 
</BODY> 
</HTML> 

Si ejecutamos este código, en la pantalla aparece la página web siguiente:

- 76 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

Si vemos el código HTML que ha recibido el usuario (con el botón derecho del
ratón sobre el navegador, opción “Ver código fuente”), vemos cómo es:

En este sencillo ejemplo podemos apreciar varias cosas que debemos conocer.
Son las siguientes:

A. El segundo argumento de la función printf(), que es $i, aparece con la


información que tiene esta variable.

B. El primer argumento determina el formato de salida de esa información y


está integrado por un texto literal (Valor de la variable \$i=), que se muestra tal
como lo hemos escrito, por una directiva (%d), que establece que el valor de $i
ha de aparecer como número decimal (en base 10) entero. Y así lo hace.

En este ejemplo hay que observar también varias cosas que debemos tener en
cuenta:

- 77 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

1. Conviene recordar que en el texto literal hemos tenido que utilizar el signo \
delante de $i para que la variable no se expandiera. No confundirlo con el
comando \n que sirve para que se produzca un salto de línea.

2. La directiva %d lleva detrás el comando del código PHP \n. Puede llevar
también otro literal. El comando \n sirve para que, una vez mostrado el
resultado de la variable $i, se produzca un salto de línea dentro del código
HTML, como ya hemos dicho.

3. En el código fuente PHP hemos dejado hasta cinco espacios en blanco


después del primer literal y antes de la directiva, pero en la página web sólo
aparece uno. Hay que tener en cuenta que HTML sólo muestra un espacio, no
todos los que haya repetidos en el código. Para que HTML muestre más de un
espacio en blanco, debemos incluir en el código el comando tantas veces
como espacios en blanco deban mostrarse. Por ejemplo, la instrucción:

printf("Valor de la variable \$i= %d\n", $i);

sí muestra los espacios en blanco así: Valor de la variable $i= 15.

Dentro de la cadena de formato nos interesa ver cómo se configura una


directiva y qué significa cada uno de los caracteres que la integran.

Toda directiva debe iniciarse por un signo %. Si se quiere anular el efecto de %


de forma que la directiva se vea como un literal, hay que poner delante otro
signo %. Por ejemplo, la orden:

printf("Valor de la variable \$i= %%d \n", $i);

muestra el texto Valor de la variable $i= %d sin el valor de $i ya que no hemos


precisado su formato.

Así pues, si queremos que en la página web aparezca la frase

La variable $i con la directiva %d aparece como 15

debemos escribir la función de esta forma:

printf("La variable \$i con la directiva %%d aparece como %d \n", $i);

La directiva % puede estar integrada hasta por cinco elementos:

 Un carácter de relleno, para que ocupe las posiciones vacías cuando lo


que ha de mostrarse no completa todas. Si no se pone, se supone que
las posiciones vacías han de ser espacios en blanco. En el caso de
números, puede indicarse que se rellenen con ceros o con otro carácter
(escribir entre comillas simples) como primer integrante de la directiva.
Es decir, indica el número total de caracteres de la cadena impresa.
 El carácter opcional ‘-‘, para alinear un número por la izquierda.

- 78 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

 El número mínimo de posiciones que ha de ocupar la salida. Si su


contenido no ocupa tantas posiciones, los espacios vacíos se completan
con el carácter que se haya indicado en el componente primero. Por
ejemplo, la instrucción:

printf("La variable \$i con la directiva %%05d aparece como %05d \n",
$i);

muestra en la página el texto

La variable $i con la directiva %05d aparece como 00015

donde el 0 primero indica el carácter de relleno, el 5 es el número de


posiciones que debe ocupar la salida y la d, como veremos, indica que ha de
mostrarse en formato decimal (base 10). Notamos que hemos escrito "\n" para
enviar un salto de línea en el código que se envía al navegador.

Cuando la salida es un número, este guarismo sólo se refiere a la parte entera,


no a la decimal, cuya longitud de salida se fija con el elemento siguiente,
separando ambos elementos por un punto.

 El número de decimales que deben mostrarse cuando los haya, es decir,


cuando trabajemos con números de coma flotante. Este número debe ir
separado del número entero anterior por un punto ( .).

Por ejemplo, si la variable $i vale 11.3456, la instrucción:

printf("La variable \$i con la directiva %%011.5f aparece como %011.5f


\n", $i);

muestra en la página el texto

La variable $i con la directiva %011.5f aparece como 00011.34560

Fíjate que hemos escrito %011.5f para que el número total de caracteres sea
11 incluyendo el punto decimal y 5 caracteres en la parte decimal.

 Especificación del tipo de salida. Este último es el más importante, hasta


el punto de que la mayoría de las veces es el único que sigue al signo
de directiva %.

Puede ser una sola de las letras que aparecen en la tabla siguiente:

Letra Formato de salida. La variable $i contiene 15.


La salida numérica aparece en formato binario
(base 2).
b
Orden: printf("\$i con %%b aparece como %b", $i);

Muestra: $i con %b aparece como 1111

- 79 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

La salida completa aparece como un carácter que se


indica detrás de la C.

C Orden: printf("\$i con %%CZ aparece como %CZ",


$i);

Muestra: $i con %CZ aparece como Z


La salida numérica aparece en formato decimal
(base 10).
d
Orden: printf("\$i con %%d aparece como %d", $i);

Muestra: $i con %b aparece como 15


La salida numérica aparece en formato de coma
flotante.
f
Orden: printf("\$i con %%f aparece como %f", $i);

Muestra: $i con %b aparece como 15.000000


La salida numérica aparece en formato octal (base
8).
o
Orden: printf("\$i con %%o aparece como %o", $i);

Muestra: $i con %b aparece como 17


La salida, aunque sea numérica, aparece como una
cadena.

Orden: printf("\$i con %%s aparece como %s cadena


S
con números", $i);

Muestra: $i con %s aparece como 15 cadena con


números
La salida numérica aparece en formato hexadecimal
(base 16) con las letras en minúscula.

X Orden: printf("\$i con %%04x aparece como %04x",


$i);

Muestra: $i con %04x aparece como 000f


La salida numérica aparece en formato hexadecimal
(base 16) con las letras en mayúscula.

X Orden: printf("\$i con %%04X aparece como %04X",


$i);

Muestra: $i con %04x aparece como 000F

En el ejemplo siguiente se muestra cómo usar la orden printf().

<HTML>  
<HEAD><TITLE>Curso PHP 5 ‐ Unidad 1 ‐ Ejemplo 4</TITLE></HEAD>  
<BODY>  
 
<DIV style="text‐align: center;">   

- 80 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

<H3>TABLA DE LOS 20 PRIMEROS NÚMEROS EN DIFERENTES 
        BASES</H3>  
<TABLE BORDER="2">  
  <TR> 
    <TH> &nbsp;&nbsp;Decimal&nbsp;&nbsp;</TH>  
    <TH> &nbsp;&nbsp;Binario&nbsp;&nbsp;&nbsp;</TH>  
    <TH> &nbsp;&nbsp;Octal&nbsp;&nbsp;&nbsp;</TH>  
    <TH> &nbsp;&nbsp;Hexadecimal&nbsp;&nbsp;</TH> 
    </TR>  
      
<?php   // Aquí se inicia el código PHP.  
 
  echo "<BR>"; // Salto de línea para dejar un espacio entre  
              // el título y la tabla.  
 
  /* Abrimos un bucle para repetir la operación 20 veces.  
   En la Unidad 2 se estudia esta estructura de control.*/      
  for ($a=0;$a<21;$a++)  
  {  
      echo "<TR>";   // Nueva fila de tabla.  
      printf("<TD>&nbsp;%02d</TD><TD>&nbsp;%06b</TD>  
                <TD>&nbsp;%02o</TD><TD>&nbsp;%02X</TD>"  
                ,$a,$a,$a,$a);  
          /* Observa que en la cadena de formato, entre paréntesis,  
          hemos incluido los códigos HTML (<TD>&nbsp;...</TD>)  
          y la directiva (%02d, %06b, %02o y %02X) de cada una  
          de las formas de presentar el valor de la varible $a. */  
           
      print "</TR>";  
  }  
 
   /* Aquí acaba el código PHP. No podemos poner este comentario a  
   continuación del signo ?>, pues estaría fuera del código PHP.*/  
?>  
 
</TABLE>  
</DIV>  
</BODY>  
</HTML>  

Desde Eclipse PDT puedes abrir el proyecto Ejemplo 4 (Números en


distintas bases) de la Unidad 1. Estudia el código fuente y ejecútalo para
mostrar en el navegador su resultado, en el que hemos utilizado la orden
printf.

Si lo ejecutas, verás que se muestra esta pantalla:

- 81 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

Eclipse PDT puedes abrir el proyecto Ejemplo 5 (Fuentes de texto) de la


Unidad 1. Estudia el código fuente y ejecútalo para mostrar en el navegador
su resultado, en el que hemos utilizado de nuevo la orden printf con otros
parámetros.

Si lo ejecutas, verás que se muestra esta pantalla:

4. sprintf

- 82 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

Esta función nos permite dar formato a una cadena de texto exactamente igual
que con printf, y guardar, además el resultado en una variable, para utilizarlo
posteriormente.

Su sintaxis es la siguiente:

%cadena=sprintf(“cadena de formato”, argumento 1, argumento 2,...)

Siguiendo el último ejemplo de la tabla anterior, podíamos escribir:

<HTML> 
<HEAD></HEAD> 
<BODY> 
<?php 
    $i=15; 
    $cadena=sprintf("\$i con %%04X aparece como %04X", $i); 
    echo $cadena; 
    echo "<P>Nueva línea"; 
?> 
</BODY> 
</HTML> 

El resultado es la página web siguiente:

Aunque la cadena de formato parezca inicialmente algo complicada, con la


práctica el alumno se acostumbrará a usarla sin dificultad.

5. print_r

Muestra el contenido y la información de una variable de manera más sencilla


simplificando su lectura en el navegador. En el caso de una variable de tipo
string, integer o float, la información imprimida por pantalla será el valor
contenido en la variable. En el caso de una matriz, los valores serán
presentados en un formato que muestra las claves y los elementos de la
misma.

Su sintaxis es la siguiente:

- 83 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

print_r(variable, [, bool devolver])

El parámetro devolver es optativo y si escribimos el valor true, print_r()


devolverá su salida en lugar de imprimirla en el navegador (cosa que hace por
defecto).

Para ver cómo funciona podemos escribir:

<HTML> 
<HEAD></HEAD> 
<BODY> 
<?php 
    $matriz = array ('a' => 'casa',  
                     'b' => 'calle mayor',  
                     'c' => array ('primero', 'segundo','tercero')); 
    echo "<PRE>"; 
    print_r ($matriz); 
    echo "</PRE>"; 
?> 
</BODY> 
</HTML> 

El resultado es la página web siguiente:

Observa que hemos usado las etiquetas <PRE> y </PRE> para que se muestren
los espacios e intros en HTML. En el apartado siguiente trataremos las
matrices y se entenderá mejor esta función que sirve de mucha utilidad cuando
se necesita conocer lo que contiene una matriz.

Expansión de variables en PHP

Una característica muy utilizada de PHP es que se pueden expandir variables


dentro de las cadenas de texto si éstas están rodeadas por comillas dobles
(").

- 84 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

Por ejemplo, veamos este código:

$nombre = 'Pedro';
// Esto imprime: ¿Hola Pedro como estás?
echo "¿Hola $nombre como estás?";

Esta característica importante de PHP puede generar confusión en los


programadores ya que las comillas simples (‘) no expanden las variables.

Lo importante es decidir qué comillas se van a utilizar; si necesitas muchas


comillas dobles, crea tu cadena con comillas simples, por ejemplo, para
imprimir un atributo HTML:

$div = '<a href="http://www.mentor.com/" title="Web de Mentor"


id="link_portada" style="link_verde">Cursos Mentoe</a>';

Además, en PHP podemos usar el operador de concatenación (.). Con este


operador podemos unir dos o más cadenas de texto, o incluso cadenas con
variable, de manera que formen parte de la misma serie de datos.

$cadena1 = "Hola mundo";


$cadena2 = ", este es ";

// Imprime: Hola mundo, este es mi primer script


echo $cadena1 . "$cadena2 mi primer script";

Como se aprecia en el último ejemplo, al usar comillas dobles hace que las
variables en el texto sean reemplazadas por sus valores correspondientes, no
así con las comillas simples.

¡Cuidado! La expansión de variables no funciona con matrices ni objetos, por lo


tanto para imprimir el contenido de un tipo de estas variables hay que usar el
operador de concatenación. Fíjate en el siguiente ejemplo.

$matriz[0] = 'Esto es el texto de la matriz';


// Esto imprime: Texto: esto es el texto de la matriz
echo "Texto: " . $matriz[0];
// Si expandimos la matriz, no funcionará la siguiente sentencia
echo "Texto: $matriz[0]";

- 85 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

Tipos de datos y expresiones


Tipos de datos

El lenguaje PHP, igual que la mayoría, puede tratar los siguientes tipos de
datos:

- Numérico entero. Sólo contiene elementos aritméticos sin decimales. Con


este tipo de dato se pueden llevar a cabo operaciones aritméticas, como suma,
resta, multiplicación, división, función exponencial, etc. Al escribirlos, no hay
que incluirlos entre delimitadores, como las comillas simples o dobles.

Según la base que se utilice para representarlos, pueden tener diferentes


representaciones:

$y = 1234; número decimal (base 10)

$y = -123; número negativo decimal (base 10)

$y = 0011; número binario (base 2: equivale al 3 decimal)

$y = 0123; número octal (base 8: equivale al 83 decimal)

$y = 00e1; número hexadecimal (base 16: equivale al 225 decimal)

$y = 0x12; número hexadecimal (base 16: equivale al 18


decimal. 0x significa que 12 está en formato
hexadecimal.)

- Numérico de punto flotante. También se denominan números reales y son


datos numéricos con parte entera y parte decimal. Un punto separa ambas
partes. PHP utiliza números reales double, es decir, que nos permiten escribir,
incluido el punto decimal, hasta 16 dígitos.

En base decimal pueden tener dos sintaxis diferentes:

$y = 1.23456; número de punto flotante decimal (base 10)

$y = 1.2e3; número de punto flotante en forma exponencial


(base 10) equivalente a 1200. Es como si
multiplicamos 1,2 por 10 elevado a 3.

- Arrays. En el tratamiento de este tipo de datos PHP permite una gran


flexibilidad. Por ejemplo, admite en sus elementos datos de diferentes tipo, el
índice que identifica a cada uno de sus elementos puede ser numérico, a partir
de 0, o un texto, los arrays se crean con sólo asignarles un valor y se admiten
arrays multidimensionales.

Por ejemplo, podemos crear una matriz (array), sin necesidad de haberla
declarado antes, de la forma siguiente:

- 86 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

$persona["nombre"]="Josefa";
$persona["apellido1"]="Pérez";
$persona["apellido2"]="Rubio";
$persona["edad"]=60;

Podíamos haberla creado así:

$persona=array("nombre"=> "Josefa",
"apellido1"=> "Pérez",
"apellido2"=> "Rubio",
"edad"=>60);

Supongamos que queremos crear una matriz bidimensional con las


calificaciones obtenidas por una alumna en las tres evaluaciones de
Matemáticas, Lengua y Dibujo. Como podemos usar índices alfanuméricos,
podemos hacerlo así:

$notas["Mat"]["Pri"] = "Suficiente";
$notas["Mat"]["Seg"] = "Bien";
$notas["Mat"]["Ter"] = "Notable";
$notas["Len"]["Pri"] = "Sobresaliente";
$notas["Len"]["Seg"] = "Sobresaliente";
$notas["Len"]["Ter"] = "Notable";
$notas["Dib"]["Pri"] = "Notable";
$notas["Dib"]["Seg"] = "Bien";
$notas["Dib"]["Ter"] = "Suficiente";

Con la misma filosofía de índices, podíamos haberlo hecho así:

$notas = array("Mat"=>array("Pri"=>"Suficiente",
"Seg"=>"Bien",
"Ter"=>"Notable"),
"Len"=>array("Pri"=>"Sobresaliente",
"Seg"=>" Sobresaliente",
"Ter"=>"Notable"),
"Dib"=>array("Pri"=>"Notable",
"Seg"=>"Bien",
"Ter"=>"Suficiente"));

Igualmente, podíamos haber puesto las calificaciones en número y usado


índices numéricos para las evaluaciones y las asignaturas, de 0 a 2 para
ambas. En este caso la matriz $notas habría quedado así:

$notas[0][0] = 5;
$notas[0][1] = 6;
$notas[0][2] = 7;
$notas[1][0] = 9;
$notas[1][1] = 9;
$notas[1][2] = 7;
$notas[2][0] = 7;
$notas[2][1] = 6;
$notas[2][2] = 5;

Es más breve, si bien hay que saber a qué asignatura y evaluación pertenece
cada índice. En la otra sintaxis quedaría así:

- 87 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

$notas = array(0=>array(0=>5,1=>6,2=>7),
1=>array(0=>9,1=>9,2=>7),
2=>array(0=>7,1=>6,2=>5));

Aunque aquí la información dada es breve, en la Unidad 3 (Tratamiento de


arrays) se explican las matrices de manera más clara y con varios ejemplos.
Tómese, por lo tanto, este texto sobre matrices como una introducción simple.

Desde Eclipse PDT puedes abrir el proyecto Ejemplo 6 (Bucle) de la


Unidad 1. Estudia el código fuente y ejecútalo para mostrar en el navegador
su resultado, en el que hemos utilizado una matriz.

La estructura de bucle se estudia en la Unidad 2. Si tienes dudas sobre su


sintaxis te invitamos a que estudies esta estructura en la teoría de la siguiente
Unidad.

- Cadena de caracteres. Contiene información alfanumérica y se denomina


string o cadena. Las cadenas de caracteres deben escribirse entre comillas
dobles o simples.

- Objetos. PHP permite tratar también objetos propios de la Programación


Orientada a Objetos (POO) a través de un tipo de datos denominado clase
(class). Los objetos son componentes dotados de propiedades y eventos que
pueden manipularse independiente unos de otros y en diferentes entornos. Las
clases de declaran de la forma siguiente:

class identificador_de_la_clase
{
public $nombre_de_las variables;
function nombre_de_la_funcion_de_la_clase($argumentos)
{Declaración de la función }
}

La orden new permite crear un nuevo elemento de la clase declarada y el


operador -> permite acceder a cada componente de ese elemento.

Por ejemplo, supongamos que necesitamos crear una clase que contenga los
siguientes datos de nuestros contactos, a modo de agenda: nombre, apellidos,
profesión, edad e importe de sus servicios por mes. Podemos declarar así la
clase:

class Contactos
{
public $nombre;
public $apellido;
public $profesion;
public $edad;
public $importe;

function completa($nom,$ape,$pro,$eda,$impor)
{
$this->nombre=$nom;

- 88 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

$this->apellido=$ape;
$this->profesion=$pro;
$this->edad=$eda;
$this->importe=$impor;
}
}

Ahora ya podemos crear la clase con la instrucción

$contacto = new Contactos;

Finalmente, podemos asignar valores a cada nuevo contacto con la orden

$contacto->completa("María","Pérez Mas","médico",35,"350.000");

Para poder verlo en la pantalla damos la orden siguiente:

echo "$contacto->nombre<P>";
echo "$contacto->apellido<P>";
echo "$contacto->profesion<P>";
echo "$contacto->edad<P>";
echo "$contacto->importe<P>";

Desde Eclipse PDT puedes abrir el proyecto Ejemplo 7 (Contacto) de la


Unidad 1. Estudia el código fuente y ejecútalo para mostrar en el navegador
su resultado, en el que hemos usado una clase sencilla.

Si lo ejecutas, verás que se muestra esta pantalla:

En Internet se pueden buscar librerías de clases para hacer casi todo.

Aunque aquí la información dada es breve, en la Unidad 3 (La Programación


Orientada a Objetos (PPO)) se expone la POO de manera más clara y con
varios ejemplos. Tómese, por lo tanto, este texto sobre POO como una
introducción simple.

Caracteres especiales de PHP

- 89 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

Algunos caracteres tienen en PHP un significado especial ($ se utiliza para


definir variables, las comillas dobles o simples se utilizan como delimitadores
de cadenas, etcétera), por lo que pueden aparecer errores al ejecutar un
programa PHP.

Debemos tener en cuenta una cosa importante: si usamos comillas simples


para enmarcar una cadena, PHP no analiza el contenido de la cadena. Por lo
tanto, no se expande el contenido de las variables ni es necesario proteger el
signo $ que las precede con el signo \. Por ejemplo,

si la variable $i contiene el valor 7 y escribimos la instrucción

  <?PHP    
    $i = 7; 
    echo 'La variable \$i vale $i'; 

  ?>    <!‐‐ Aquí se cierra el código PHP. ‐‐> 

en la página web se muestra el texto:

En cambio, si escribimos la cadena con comillas dobles:

  <?PHP    
    $i = 7; 
    echo "La variable \$i vale $i"; 

  ?>    <!‐‐ Aquí se cierra el código PHP. ‐‐>

aparece:

Dentro de una cadena acotada por comillas dobles, si se necesita que


aparezcan otras comillas, hay que usar igualmente el signo \ para que PHP
entienda estas comillas como literales en lugar de como delimitadores de la
cadena. Por ejemplo, la sentencia:

- 90 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

  <?PHP    
    $i = 7; 
    echo "La variable \$i vale "$i"; 

  ?>    <!‐‐ Aquí se cierra el código PHP. ‐‐> 

muestra el siguiente error, pues PHP encuentra tres delimitadores de cadena:

En cambio, si escribimos la instrucción

<?PHP    
    $i = 7; 
    echo "La variable \$i vale \"$i"; 

  ?>    <!‐‐ Aquí se cierra el código PHP. ‐‐> 

aparece el texto con las comillas protegidas por la barra \, de esta forma:

En este caso, cuando dentro de una cadena no hay variables que deban
expandirse, lo mejor es poner comillas simples enmarcando la cadena y dentro
las comillas dobles que necesitemos.

Algunos caracteres (saltos de línea, tabuladores, etc.) no se pueden escribir


con el teclado ya que no se enviarán al navegador.

En PHP, para referirse a alguno de estos caracteres en una cadena, existen los
caracteres especiales que empiezan por el carácter barra (\). Los caracteres
especiales más utilizados son los siguientes:

Carácter Significado

- 91 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

\\ Carácter barra
\$ Carácter dólar
\" Carácter comilla doble (en una cadena delimitada por comillas
dobles)
\' Carácter comilla simple (en una cadena delimitada por comillas
simples)
\n Salto de línea
\t Tabulador horizontal
\XXX Carácter de código XXX en octal
\xXX Carácter de código XX en hexadecimal
\r Retorno de carro
\v Tabulador vertical
\e Escape
\f Salto de página (en impresoras antiguas)

Expansión de variables en PHP

Aunque ya lo hemos nombrado, una característica muy utilizada de PHP es


que se pueden expandir variables dentro de las cadenas de texto si éstas están
rodeadas por comillas dobles (").

Por ejemplo, veamos este código:

$nombre = 'Pedro';
// Esto imprime: ¿Hola Pedro como estás?
echo "¿Hola $nombre cómo estás?";

Esta característica importante de PHP puede generar confusión en los


programadores ya que las comillas simples (‘) no expanden las variables.

Lo importante es decidir qué comillas se van a utilizar; si necesitas muchas


comillas dobles, crea tu cadena con comillas simples, por ejemplo, para
imprimir un atributo HTML:

$div = '<a href="http://www.mentor.com/" title="Web de Mentor"


id="link_portada" style="link_verde">Cursos Mentor</a>';

Además, en PHP podemos usar el operador de concatenación (.). Con este


operador podemos unir dos o más cadenas de texto, o incluso cadenas con
variable, de manera que formen parte de la misma serie de datos.

$cadena1 = "Hola mundo";


$cadena2 = ", este es ";

// Imprime: Hola mundo, este es mi primer script


echo $cadena1 . "$cadena2 mi primer script";

- 92 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

Como se aprecia en el último ejemplo, al usar comillas dobles hace que las
variables en el texto sean reemplazadas por sus valores correspondientes, no
así con las comillas simples.

¡Cuidado! La expansión de variables no funciona con matrices ni objetos, por lo


tanto para imprimir el contenido de un tipo de estas variables hay que usar el
operador de concatenación. Fíjate en el siguiente ejemplo.

$matriz[0] = 'Esto es el texto de la matriz';


// Esto imprime: Texto: esto es el texto de la matriz
echo "Texto: " . $matriz[0];
// Si expandimos la matriz, no funcionará la siguiente sentencia
echo "Texto: $matriz[0]";

- 93 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

Los operadores y su jerarquía


Operadores más comunes

Como ya desde el comienzo vamos a utilizar constantemente los operadores al


escribir el código fuente, a continuación aparecen los más comunes, para que
pueda consultarlos el alumno cuando lo necesite. Sólo explicamos con detalle
los operadores o aspectos que suponen alguna novedad en PHP respecto a
otros lenguajes. Suponemos, pues, que los alumnos y alumnas han utilizado ya
los operadores y, por tanto, saben manejarlos con suficiente fluidez.

Aritméticos

Operador Operación
Suma los dos números entre los que está.
+
Adición
Ejemplo: $num = 4+3; a $num se le asigna el valor 7.
Resta del número anterior el valor del posterior.
-
Substracción
Ejemplo: $num = 4-3; a $num se le asigna el valor 1.
Multiplica los dos números entre los que está.
*
Multiplicación
Ejemplo: $num = 4*3; a $num se le asigna el valor 12.
Halla el cociente del primer número entre el segundo.
/
División
Ejemplo: $num = 12/3; a $num se le asigna el valor 4.
Halla el resto de la división del primer número entre
% el segundo.
Módulo
Ejemplo: $num = 5%3; a $num se le asigna el valor 2.

Asignación

Operador Operación
Asigna a la variable de su izquierda el valor que haya o
resulte de la operación que aparece a la derecha.
=
Ejemplo: $texto = “casa”; a $texto se le asigna la cadena
Asignación
“casa”.
simple
¡Ojo! No confundirlo con el operador de comparación ==
(igual que).
Igual que el anterior ejecutando el operador que haya a
la izquierda del signo = sobre el valor o cadena que haya
a su derecha y asignándolo a la variable de la izquierda.
Op=
Asignación
Ejemplos: $num += 4; al valor de $num se suman 4.
combinada
$texto .= “ además”; a la cadena de $texto se concatena
la cadena “ además”.

- 94 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

Es conveniente saber que PHP 5 soporta dos tipos de asignaciones:

1. Por valor. Esta asignación realiza una nueva copia de la variable original,
es decir, el valor de una variable se pasa a otra haciendo una copia del valor de
la primera. Por ejemplo, si a la variable $a le asignamos el valor 5 ($a=5;) y a la
variable $b le pasamos el valor de $a ($b=$a;), en esta última tendremos una
copia de la primera, sin que el valor de $b se vea después afectado por los
cambios de $a. Es el tipo de asignación usado más frecuentemente en los
programas.

2. Por referencia. En este tipo de asignación, menos utilizado, ambas


variables acabarán apuntando al mismo dato sin que el valor de una se copie a
otra. A modo de ejemplo, asignamos a la variable $a el valor 4 y a la variable $b
el contenido de la variable $a. Es decir, el valor de la variable $a lo pasamos a
la variable $b de forma directa así: $b=$a;, haciendo una copia de $a en $b.
Pero podemos hacerlo por referencia de esta forma: $b=&$a;. Aquí apuntamos
la variable $b a la dirección de memoria de la variable $a; es decir, las dos
variables almacenan su contenido en el mismo espacio físico en la memoria y
por lo tanto, el valor de $a y $b es siempre idéntico (cualquier cambio en el
valor de $a implica el mismo cambio en $b y viceversa).

A continuación, mostramos un ejemplo,

<?

// La variable $a toma el valor 4


$a = 4;

/* La variable $b toma el contenido de la cadena $a ($b contiene el


valor 4)*/
$b = $a;

/* La cadena $b apunta al mismo contenido que $a (la misma dirección


de memoria para ambas variables)*/
$b = &$a;

// Ambas variables $a y $b contienen el valor 10.


$a=10;

?>

Es importante observar la sintaxis, en la que interviene el signo &. Además, hay


que tener en cuenta que sólo las variables con nombre pueden ser asignadas
por referencia, no las expresiones anteponiéndoles el signo &.

En la Unidad 3, en el apartado Funciones creadas por el usuario veremos


también la utilización de la asignación por referencia en los parámetros de las
funciones.

Comparación

- 95 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

Operador Operación
Devuelve True si los dos valores que separa son iguales y
False si no lo son.
==
Ejemplo: (4==3); devuelve False.
Devuelve True si el valor que está a la izquierda es menor
que el de la derecha y False si no lo es.
<
Ejemplo: (4<5); devuelve True.
Devuelve True si el valor que está a la izquierda es menor
o igual que el de la derecha y False si no lo es.
<=
Ejemplo: (5<=5); devuelve True.
Devuelve True si el valor que está a la izquierda es mayor
que el de la derecha y False si no lo es.
>
Ejemplo: (4>5); devuelve False.
Devuelve True si el valor que está a la izquierda es mayor
o igual que el de la derecha y False si no lo es.
>=
Ejemplo: (5>=4); devuelve True.
Devuelve True si los dos valores que separa son diferentes
y False si no lo son.
!=
Ejemplo: (5!=4); devuelve True.
Devuelve True si los dos valores que separa son idénticos
en contenido y tipo y False si no lo son.
===
Ejemplo: (5===5); devuelve True.

Al utilizar los operadores de comparación, hay que tener en cuenta lo siguiente:

1. Pueden compararse entre sí casi todos los datos, aunque sean de diferente
tipo, pero si queremos estar seguros del resultado, lo mejor es comparar datos
del mismo tipo.

2. De la expresión construida con estos operadores siempre se deduce un


resultado lógico: True (Verdadero) o False (Falso).

3. Cuando los datos comparados son del mismo tipo, la comparación se lleva
a cabo de la forma siguiente:

 Si los datos son de tipo numérico, se compara su magnitud. Por ejemplo, en


la expresión 5 == 7, se comparan los valores 5 y 7, y se obtiene el resultado
False.

 Si los datos son de tipo cadena, la comparación se basa en el valor decimal


que tenga cada carácter de la cadena según el código ASCII. Si utilizamos el
operador ==, la comparación se lleva a cabo de izquierda a derecha y de
carácter en carácter hasta que se encuentra alguna diferencia o hasta que se
acaban las posiciones de las cadenas.

- 96 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

Por ejemplo, en la expresión "Delfos" == "Delos" se inicia la comparación por


la letra "D" de ambas cadenas. Al advertir que los dos caracteres tienen el
mismo valor Decimal ASCII (69), se compara el siguiente carácter, que también
es igual, etcétera. Si antes de comparar todos los caracteres de las cadenas,
se encuentra alguna diferencia, como en este caso en la cuarta letra (f frente a
o), se concluye que son desiguales y, por tanto, se obtiene el resultado False.

El operador === (exactamente igual) debe usarse cuando se quiere saber si un


valor es igual a otro, tanto en su contenido completo como en su tipo. Por
ejemplo, la expresión (“+010” == “10.0”) devuelve True. En cambio, la
expresión (“+010” === “10.0”) devuelve False.

Si los datos son de tipo fecha, la comparación se basa en el valor cronológico.


Por ejemplo, la fecha “12/12/97” es anterior cronológicamente a la fecha
“12/01/98”.

 Si los datos son de tipo lógico, el valor Falso (False) es igual al valor Falso
(False) y el Verdadero (True) es igual a Verdadero (True). Por ejemplo, True
== True obtiene Verdadero; en cambio, de la expresión compleja (5 > 10) == (6
< 12) se deduce un valor Falso, pues la primera expresión (cinco es mayor que
diez) es Falsa (False); sin embargo, la segunda expresión (seis es menor que
doce) es Verdadera (True). Por tanto, la expresión False == True devuelve un
valor Falso.

Condicional

Operador Operación
Si la expresión que está a la izquierda del operador
devuelve True, asigna a la variable el valor de la primera
expresión que queda a su derecha; de lo contrario, le
asigna el valor de la segunda expresión.
?:
Ternario Ejemplos:$a = (8>7) ? (6*8) : (4+7);a $a se

le asigna el valor 48.

$a = (8<7) ? (6*8) : (4+7);a $a se le asigna el valor 11.

Ejecución

Operador Operación
PHP soporta un operador de ejecución: el apóstrofe
invertido (``). No son apóstrofes normales. PHP intentará
ejecutar la instrucción contenida dentro de los apóstrofes
invertidos como si fuera un comando del Shell; su salida
`orden` es devuelta como el valor de esta expresión. También puede
Ejecución asignarse a una variable.

Ejemplos:$salida = `ls -al`;

a la variable $salida se le asigna el resultado de la

- 97 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

orden ls –al.

Cadena

Operador Operación
Devuelve el resultado de unir el contenido de las dos
cadenas que hay a su izquierda y a su derecha.

Ejemplos:$a=“casa”; $b=“ grande”;


.
$c=$a.$b; a $c se le asigna “casa grande”.
Concatenación
Puede combinarse con el operador de asignación =así:

$a .= “ baja”; a la variable $a se le asigna la cadena


“casa baja”.

Incremento / decremento

Operador Operación
Incrementa $var en uno y después devuelve el su valor.
++$var
Preincremento Ejemplo:<? $a=4; echo ++$a; ?>. En la página web
aparecerá 5.
Decrementa $var en uno y después devuelve su valor.
--$var
Predecremento Ejemplo:<? $a=4; echo --$a; ?>. En la página web
aparecerá 3.
Devuelve el valor de $var y después lo incrementa en
uno.
$var++
Posincremento
Ejemplo:<? $a=4; echo $a++; echo $a; ?>. En la página
web aparecerá primero 4 y luego 5.
Devuelve el valor de $var y después lo decrementa en
uno.
$var--
Posdecremento
Ejemplo:<? $a=4; echo $a--; echo $a; ?>. En la página
web aparecerá primero 4 y luego 3.

Lógicos

Los operadores lógicos reciben este nombre porque nos permiten obtener
resultados lógicos o booleanos. Los valores lógicos son aquellos que sólo
pueden contener uno de estos dos valores: Verdadero (True en inglés) o Falso
(False en inglés). Este tipo de datos se usa principalmente para establecer
condiciones que nos permitan ejecutar unas operaciones u otras dentro de las
sentencias de bifurcación condicional y para controlar los bucles. Por este
motivo los operadores lógicos son muy importantes en la programación y se
emplean constantemente.

Son los siguientes:

- 98 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

Operador Operación
Niega el valor lógico de una expresión.
!
Ejemplos:
No
Si $casado == True; luego !$casado será igual a False.
Devuelve True si las dos expresiones que une son verdaderas
(True) y False si al menos una es falsa.
And o &&
Y
Ejemplos: La expresión (3<5 && 10<15) devuelve True. En
cambio, la expresión (3<1 && 10<15) devuelve False.
Devuelve True si al menos una de las dos expresiones que
une es verdaderas (True) y False si las dos son falsas.
OR o ||
Ejemplos: La expresión (3<5 or 10<8) devuelve True. En
O
cambio, la expresión

(3<1 || 10<8) devuelve False.


Devuelve True si sólo una de las dos expresiones que une es
verdadera (True) y False si las dos son falsas(False) o las
dos son verdaderas (True).
XOR
Y no Ejemplos: La expresión (3<5 xor 10<8) devuelve True. En
cambio, la expresión

3(3<1 xor 10<8) devuelve False.

Bit a bit

Permiten activar o desactivar los bits individualmente de un número entero.


Estos operadores sólo se usan para operaciones muy específicas. No vamos a
utilizarlos en este curso, por lo cual no los explicamos.

Reglas de precedencia entre los operadores

Cuando en una instrucción aparecen expresiones complejas en las que


interviene varios operadores de diferentes tipos, es preciso conocer bien el
orden en que el ordenador ejecuta esos operadores. Este orden o jerarquía se
denomina precedencia. Por ejemplo, la expresión $a = (10+6/2) asigna a la
variable $a el valor 13 en lugar de 8, pues el operador / se ejecuta antes que el
operador +. Así pues, en este orden (6+10)/2 se obtiene el resultado citado.

¿Cómo podemos alterar esta jerarquía en las operaciones? Para hacer que los
operadores se ejecuten en un orden distinto del establecido, debemos utilizar
los paréntesis. Por ejemplo, si necesitamos sumar 6 y 2, y dividir el resultado
entre 2, no podemos escribir la expresión 6 + 2 / 2, pues resultaría 7 según las
reglas de precedencia establecidas; en cambio, si escribimos (6 + 2) / 2,
primero se ejecuta la operación que está entre paréntesis y después, la
operación de dividir obteniéndose 4 como resultado.

- 99 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

A continuación, se refleja el orden en que el ordenador ejecuta las operaciones.


En la tabla siguiente se indican de arriba (inferior) abajo (superior) y de
izquierda (superior) a derecha (inferior) esta jerarquía.

Orden de ejecución de los operadores


or
xor
and
= += -= *= /= %=
?:
||
&&
== != ===
< <= > >=
+ - .
* / %
(a la derecha) ! ++ -- Operadores de modelado
(int)(boolean)(double)(string)(array)(object)

- 100 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

Resumen

Hay que saber al final de esta unidad

 PHP es un lenguaje de programación pensado para


elaborar páginas web dinámicas que ofrece altas
prestaciones.

 El lenguaje PHP es sencillo, rápido,


multiplataforma y gratuito. Permite utilizar
múltiples recursos y librerías, programar con
objetos y acceder a muchas bases de datos de
diferentes formatos.

 Su funcionamiento es sencillo: el usuario o


cliente solicita al servidor web una página;
éste envía el código PHP al intérprete, que lo
ejecuta y devuelve al usuario la página en
formato HTML.

 Para poder usar PHP se necesita un servidor web,


una plataforma, como Windows o Linux, y un
gestor de base de datos. En concreto, este curso
utiliza el servidor Apache, instalado en el
ordenador local del usuario, el sistema
operativo Windows y el gestor MySQL de bases de
datos.

 El lenguaje PHP se entremezcla y combina con el


lenguaje HTML, de forma que uno puede enmarcar o
envolver al otro y viceversa.

 El signo <?php indica que comienza el código PHP


y el signo ?> señala el final de este código.
Dentro de estos dos signos no se puede anidar
otro código PHP enmarcado entre <?php y ?>.

 Para escribir el código fuente necesitamos de un


entorno de desarrollo para PHP. Puede utilizarse
cualquiera, si bien para el curso utilizaremos
Eclipse-PDT, que dispone de las principales
opciones propias de este tipo de entornos.

 Desde la opción Ayuda de este entorno se puede


acceder al Manual de PHP.

- 101 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

 Los ficheros que contengan el código fuente PHP


deben llevar la extensión php, para que el
intérprete los reconozca.

 Los ficheros que contengan el código fuente de


las actividades del alumno han de guardarse en
la carpeta personal que debe aparecer dentro de
la carpeta alumnos de c:\XAMPP\htdocs\curso.

 Para comprobar que un programa funciona, hay que


arrancar primeramente el servidor Apache y a
continuación Eclipse-PDT para ejecutarlo.

 Todas las sentencia de PHP deben acabar con ;.

 Las sentencias o instrucciones compuestas


contienen varias sentencias simples y deben
estar incluidas entre los signos { y }.
Generalmente, una sentencia compuesta está
integrada por sentencias simples de un bucle o
de la declaración de una función que deben
ejecutarse como un bloque.

 Los nombres de las variables y arrays deben


iniciarse siempre con el signo $. Deben ser
correctos y conviene que sean fáciles de manejar
y que tengan algún significado que informe de su
contenido.

 Para poder seguir mejor el flujo de un programa


y ver más intuitivamente su código, conviene
indentar (adentrar unos espacios) las sentencias
que están incluidas dentro de una estructura.

 Los comentarios ayudan mucho a comprender un


programa. Los que sólo ocupan una línea deben ir
precedidos de los signos //. Si el texto ocupa
más de una línea, hay que incluirlo entre los
signos /* y */. Éstos no deben iniciarse detrás
de una instrucción, sino en línea aparte.

 Hay operadores de varios tipos: aritméticos, de


asignación, de comparación, condicional, de
ejecución, de cadena, de incremento/decremento,
lógicos y de bit a bit.

 Dentro de una expresión los operadores no se

- 102 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

ejecutan de izquierda a derecha en el orden en


que están escritos, sino que siguen una
prelación u orden jerárquico que debemos tener
en cuenta. Los paréntesis sirven para determinar
el orden de ejecución de los operadores sin
tener en cuenta la precedencia de los mismos.

 Las órdenes echo y print sirven para mostrar


información en la página web tal como la
escribamos literalmente o según esté contenida
en una variable.

 Las funciones printf() y sprintf() permiten


mostrar información con un formato determinado,
según se especifique en una cadena de formato
integrada por textos literales y por directivas.
Las directivas deben iniciarse con el signo %.

 En el lenguaje PHP hay datos de los siguientes


tipos: numérico entero, numérico de coma
flotante, arrays (matrices), cadenas de
caracteres y objetos.

 Hay conversores de tipos que permiten definir


una variable como de un determinado tipo. Son
int, double, string, array y object.

 Es muy importante saber construir expresiones


correctas con variable, literales, operadores y
funciones, así como saber interpretarlas.

 En PHP como en cualquier lenguaje las


expresiones constituyen uno de los asuntos más
importantes de la programación, pues intervienen
en todas las sentencias y están integradas por
todos los elementos de un lenguaje informático.

- 103 -
Curso de Iniciación a PHP: Unidad 1
- Introducción al lenguaje PHP -

- 104 -
MÓDULO 1

El lenguaje de programación PHP 5

Unidad 2

Índice de la unidad:

1. Algo más sobre variables

2. Trabajando con formularios

3. Estructuras de bifurcación condicional

4. Proyecto PHP con múltiples archivos

5. Control de excepciones

6. Resumen
Curso de Iniciación a PHP: Unidad 2
- El lenguaje de programación PHP 5 -

Introducción
En esta Unidad vamos a conocer y saber usar las variables en toda su
extensión como elementos fundamentales del lenguaje PHP. Además,
aprenderemos a utiliza formularios.

Conoceremos cómo se pasa información entre scripts PHP y se accede


desde unos a otros.

También, aprenderemos a utilizar correctamente las estructuras de control


condicionales y las estructuras de bucle aplicándolas con eficiencia a las
diferentes situaciones que lo requieran.

Finalmente, sabremos cómo acceder a ficheros externos desde la página web


actual.

Algo más sobre las variables


Ya se habrá podido advertir que las variables son un elemento fundamental en
la programación. En la Unidad 1 sólo hemos comentado algunos aspectos
básicos de las mismas. En esta Unidad vamos a completar algo más esa
información.

Ámbito de las variables

Como ya hemos dicho, el lenguaje PHP es interpretado, es decir, no


permanece en la memoria, sino que, una vez ejecutado el script de la página
php, se pierde el contenido de las variables utilizadas en el código. Así pues,
cada variable sólo tiene validez en el contexto en que está definida, bien
aparezca dentro de un servidor, de un script php o de una función. Así pues,
por defecto las variables que forman parte de una página o función tienen un
ámbito exclusivamente local.

¿Cómo podemos hacer que una variable tenga un valor global, es decir, que se
conserve tanto en una función como en una página o entre páginas diferentes?

Para alterar el ámbito de una variable, disponemos de dos modificadores:

1. global: este modificador permite acceder a una variable en la página php


cuando se invoca una función. Veamos en el ejemplo siguiente cómo se
comporta una variable local y la misma si es global.

En este ejemplo usamos la variable $texto como local tanto en la página como
en la función.

<HTML> 

- 107 -
Curso de Iniciación a PHP: Unidad 2
- El lenguaje de programación PHP 5 -

<HEAD><TITLE>Curso PHP 5 ‐ Unidad 2 ‐ Ejemplo 1</TITLE></HEAD> 
<BODY> 
<?php 
  // Esta variable solo existe en el ámbito principal del script 
  $texto="Volverán las oscuras golondrinas..."; 
  function ver_texto() 
  { 
     echo "<BR>"; 
     echo "No se ve el contenido de la variable \$texto, 
         pues sólo tiene un ámbito local. Por eso se  
         muestra el mensaje de error siguiente:"; 
     echo "<BR>"; 
   // Aparece un error en la ejecución de la siguiente sentencia ya que 
   // esta variable está definida en el ámbito global, no en el ámbito de
   // esta función. 
     echo $texto; 
  } 
  // Invocamos la función local anterior 
  ver_texto(); 
?> 
</BODY> 

</HTML>

En la Unidad 3 puedes ver cómo definir funciones de usuario, en caso de


dudas, puedes echarle un vistazo rápido a esta parte de la teoría.

Si ejecutamos la página anterior desde Eclipse PDT, vemos que no se muestra


el contenido de la variable $texto, pues el valor asignado a la misma en el
script php no pasa a la función, que es donde debe mostrarse. En cambio, se
muestra el error siguiente:

Desde Eclipse PDT puedes abrir el proyecto Ejemplo 1 (Ambito


variables) de la Unidad 2. Estudia el código fuente y ejecútalo para mostrar
en el navegador su resultado.

En cambio, si utilizamos el modificador global dentro de la función, sí se


muestra el valor de la variable, como puede observarse en el mismo ejemplo
anterior modificado:

<HTML> 
<HEAD><TITLE>Curso PHP 5 ‐ Unidad 2 ‐ Ejemplo 2</TITLE></HEAD> 
<BODY> 

- 108 -
Curso de Iniciación a PHP: Unidad 2
- El lenguaje de programación PHP 5 -

<?php 
  // Esta variable solo existe en el ámbito principal del script 
  $texto="Volverán las oscuras golondrinas..."; 
  function ver_texto() 
  { 
     global $texto; 
     echo "<BR>"; 
     // Fíjate cómo mostramos escapamos el carácter "$" 
     echo "Ahora se ve el contenido de la variable 
            \$texto, pues tiene un ámbito global."; 
     echo "<BR>"; 
   // Aparece un error en la ejecución de la siguiente sentencia ya que 
   // esta variable está definida en el ámbito global, no en el ámbito de
   // esta función. 
     echo $texto; 
  } 
  // Invocamos la función local anterior 
  ver_texto(); 
?> 
</BODY> 

</HTML>

Desde el Eclipse PDT puede abrirse el Ejemplo 2 de la Unidad 2 y con el


botón Ejecutar mostrar en nuestra pantalla el resultado de su interpretación:

Desde Eclipse PDT puedes abrir el proyecto Ejemplo 2 (Ambito variables


correcto) de la Unidad 2. Estudia el código fuente y ejecútalo para mostrar
en el navegador su resultado.

2. static: este modificador es prácticamente igual que el anterior, pero algo


más extenso, pues hace que la variable conserve el mismo valor en sucesivas
ocasiones en que se invoque la función a lo largo de un programa. Una variable
estática existe sólo en el ámbito local de la función, pero no pierde su valor
cuando la ejecución del script PHP abandona este ámbito. Por eso, es
necesario crearla como estática dentro de la función y asignarle valor en este
ámbito.

En el ejemplo siguiente puede verse cómo se usa el modificador static.

- 109 -
Curso de Iniciación a PHP: Unidad 2
- El lenguaje de programación PHP 5 -

<HTML> 
<HEAD><TITLE>Curso PHP 5 ‐ Unidad 2 ‐ Ejemplo 3</TITLE></HEAD> 
<BODY> 
<?php 
  function ver_valor_estatico() 
  { 
     echo "<BR>"; 
     // Definimos una variable estática, es decir, no pierde su valor cuando 
     // acaba la ejecución de la función 
     static $valor=0; 
     echo $valor; 
     $valor++; 
  } 
  echo "La variable \$valor dentro de la función ver_valor_estatico() aumenta cada 
vez que invocamos la función."; 
  ver_valor_estatico(); 
  ver_valor_estatico(); 
  ver_valor_estatico(); 
   
  function ver_valor() 
  { 
    echo "<BR>"; 
    // Definimos una variable sin modificador, es decir, pierde su valor cuando 
    // acaba la ejecución de la función 
    $valor=0; 
    echo $valor; 
    $valor++; 
  } 
  echo "<BR><BR>La variable \$valor dentro de la función ver_valor() no aumenta 
cada vez que invocamos la función."; 
  ver_valor(); 
  ver_valor(); 
  ver_valor(); 
?> 
</BODY> 
</HTML>  

Desde Eclipse PDT puede abrirse el Ejemplo 3 de la Unidad 2 y con el botón


Ejecutar mostrar en nuestra pantalla el resultado de su interpretación:

- 110 -
Curso de Iniciación a PHP: Unidad 2
- El lenguaje de programación PHP 5 -

Usando Eclipse PDT puedes abrir el proyecto Ejemplo 3 (Variable


estática) de la Unidad 2. Estudia el código fuente y ejecútalo para mostrar
en el navegador su resultado, en el que hemos usado una variable estática
y otra normal.

3. Matriz $GLOBALS(). PHP desde la versión 3 dispone de otra forma de


acceder a las variables de una forma global. El array $GLOBALS asocia en
cada uno de sus elementos el nombre de la variable con su contenido de tal
forma que accediendo al primero podemos saber su contenido dentro de un
ámbito global.

En el ejemplo siguiente se ve claramente cómo funciona este método.

<HTML> 
<HEAD><TITLE>Curso PHP 5 ‐ Unidad 2 ‐ Ejemplo 4</TITLE></HEAD> 
<BODY> 
<?php 
 
// Asignamos a las variables $v y $x los valores 3 y 6 respectivamente. 
// Observa que no las declaramos como globales, luego son locales. 
$x = 3;  
$y = 6;  
 
   Function Sumar() 
   { 
       /* Observa que las variables $v, $x y $z no son declaradas 
        como globales pero accedemos a ellas globalmente mediante 
       la matriz $GLOBALS.*/ 
       $GLOBALS["z"] = $GLOBALS["x"] * $GLOBALS["y"]; 
   } 
 
Sumar(); 
 
echo "La variable \$x=3 multiplicada por la variable \$y=6 
      produce el resultado 18, que asignamos a la variable \$z."; 
echo "<BR>"; 
echo "<BR>"; 
echo "Luego \$z vale $z."; 
 
?> 
</BODY> 
</HTML>  

Desde Eclipse PDT puedes abrir el proyecto Ejemplo 4 (Variable


$GLOBALS) de la Unidad 2. Estudia el código fuente y ejecútalo para
mostrar en el navegador su resultado, en el que hemos usado varias
variables $GLOBALS.

El resultado de su interpretación es el siguiente:

- 111 -
Curso de Iniciación a PHP: Unidad 2
- El lenguaje de programación PHP 5 -

Variables de variables

PHP ofrece la posibilidad de utilizar variables que hagan referencia al contenido


de otra variable, en una especie de suplantación o sustitución de una variable
por otra. Es útil para leer un fichero de configuración. Para que una variable
sustituya a otra es preciso utilizar el operador { }. En el siguiente ejemplo puede
verse cómo se comporta una variable y su sintaxis.

<HTML> 
<HEAD><TITLE>Curso PHP 5 ‐ Unidad 2 ‐ Ejemplo 5</TITLE></HEAD> 
<BODY> 
<?php 
    // Definimos 2 variables de tipo cadena 
    $nombre = "María"; 
    $n = "nombre"; 
  // Mostramos información al usuario 
    echo "La variable \$nombre contiene \"María\"."; 
    echo "<BR>"; 
    echo "La variable \$n contiene \"nombre\"."; 
    echo "<BR>"; 
    // Observa la sintaxis para citar una variable variable: ${$n}. 
    // Es como si hubiéramos escrito: ${'nombre'} 
    echo "La variable variable $\{\$n} contiene también ". ${$n} . ".";     
?> 
</BODY> 
</HTML>  

Utilizando Eclipse PDT puedes abrir el proyecto Ejemplo 5 (Variable de


variables) de la Unidad 2. Estudia el código fuente y ejecútalo para mostrar
en el navegador su resultado.

El resultado de su interpretación es el siguiente:

- 112 -
Curso de Iniciación a PHP: Unidad 2
- El lenguaje de programación PHP 5 -

Cómo obtener información sobre la existencia y el contenido de


una variable

Hemos visto que en PHP el tratamiento de las variables es muy flexible, a la


vez que impreciso. Su tiempo de vida también es breve. En ocasiones, antes
de volver a usarla, es necesario conocer si una variable está definida y, si lo
está, qué valor tiene. Puede ser que en el transcurso de un programa que llame
a varias páginas web la variable haya sido eliminada de la memoria o que haya
adquirido el valor nulo. Para conocer estos dos datos, PHP dispone de las dos
funciones siguientes:

1. empty(), que devuelve el valor verdadero si la variable no está definida o lo


está, pero tiene un valor nulo. Por ejemplo, si a la variable $num le asignamos
el valor 10, las instrucciones

if (!empty($num))
echo "La variable \$num contiene $num.";
else
echo "La variable \$num no está definida.";

genera la página

La variable $num contiene 10.

En cambio, si no hubiéramos definido la variable, devolvería la página

La variable $num no está definida.

2. isset(), que devuelve el valor verdadero si la variable ha sido inicializada


con un valor y falso si no lo ha sido. Por ejemplo, si inicializamos la variable
$num con valor 10, las instrucciones

if (isset($num))
echo "La variable \$num ha sido inicializada y contiene $num.";
else
echo "La variable \$num no ha sido inicializada o definida.";

generan la página

La variable $num ha sido inicializada y contiene 10.

En cambio, si no hubiéramos definido la variable, devolvería la página

La variable $num no ha sido inicializada o definida.

Cómo obtener información sobre el tipo de una variable

A veces, también necesitamos saber de qué tipo son las variables. PHP
dispone con este fin de un conjunto de funciones que empiezan por is_ y que

- 113 -
Curso de Iniciación a PHP: Unidad 2
- El lenguaje de programación PHP 5 -

devuelven verdadero si el tipo de variable es el que se indique y falso si no lo


es. Son las siguientes:

1. is_array(). Devuelve verdadero si el tipo de la variable es una matriz y falso


si no lo es.

2. is_bool(). Devuelve verdadero si el tipo de la variable es booleano y falso si


no lo es.

3. is_double(). Devuelve verdadero si el tipo de la variable es un número de


tipo doble y falso si no lo es.

4. is_float(). Devuelve verdadero si el tipo de la variable es un número de


coma flotante y falso si no lo es.

5. is_int() o is_integer(). Devuelve verdadero si el tipo de la variable es un


número entero y falso si no lo es.

6. is_long(). Devuelve verdadero si el tipo de la variable es un número entero


largo y falso si no lo es.

7. is_object(). Devuelve verdadero si el tipo de la variable es un objeto y falso


si no lo es.

8. is_real(). Devuelve verdadero si el tipo de la variable es un número real y


falso si no lo es.

9. is_string(). Devuelve verdadero si el tipo de la variable es una cadena de


caracteres y falso si no lo es.

10. is_numeric(). Devuelve verdadero si el tipo de la variable es un número y


falso si es una cadena.

11. gettype(). Esta última función, más directa que las anteriores, devuelve
directamente el tipo de la variable que se le pasa como argumento. Los tipos
posibles son boolean, integer, double, string, array, object y unknown
(desconocido).

Si sólo se necesita saber de qué tipo es una variable, esta última función es
la más directa y recomendable. En cambio, si se necesita que una variable
sea de un determinado tipo para operar con ella, es más directo y
recomendable utilizar la correspondiente anterior.

Cómo modificar una variable

PHP dispone también de funciones para realizar estas operaciones:

1. Eliminar una variable de la memoria. Recordamos que todas las variables


se eliminan por sí mismas al acabar la interpretación de un programa, por lo

- 114 -
Curso de Iniciación a PHP: Unidad 2
- El lenguaje de programación PHP 5 -

cual no es necesario eliminarlas explícitamente. Esta operación sólo es


recomendable cuando se comprueba que dentro de un mismo script php se
consumen innecesariamente muchos recursos, como cuando hay muchas
variables definidas que ya no se usan.

En este caso, podemos utilizar la función unset(), que elimina una variable
definida previamente. El nombre de la variable que debe eliminarse se pasa a
la función como parámetro. Por ejemplo, si queremos que $casa ya no esté
definida, podemos escribir unset($casa). Si la operación se ha llevado a cabo
con éxito, la función devuelve el valor verdadero; de lo contrario, devuelve
falso.

2. Asignar un tipo concreto a una variable. En la Unidad 1 ya vimos cómo


podía hacerse esto con los conversores de tipos boolean, int, double, string,
array y object. La función settype() permite, igualmente, forzar que una
variable sea del tipo especificado.

Por ejemplo, si queremos que la variable $cosa sea de tipo cadena, debemos
escribir: settype($cosa, "string");. Como puede observarse, el primer
argumento es el nombre de la variable y el segundo (entre comillas dobles) es
el tipo de dato que debe tener: boolean, integer, double, string, array y object.

Separar el contenido de una variable

El contenido de una variable de cadena puede contener letras y números. PHP


dispone de diferentes funciones que permiten separar los números del texto y
asignarlos a las variables correspondientes de su tipo.

Por ejemplo, si tenemos la cadena “89.53Pepe es madrileño”, es posible


separar el contenido numérico de este texto: 89.53. Veamos cómo se hace
estudiando cada una de las funciones siguientes:

1. doubleval(). Devuelve el número de coma flotante que haya en la frase.


Conviene advertir que esto sólo ocurre si el número de coma flotante aparece
al principio de la frase. De no ser así, se devuelve 0.

2. intval(). Devuelve el número entero que haya en la cadena o 0 si no lo hay.

3. strval(). Devuelve una cadena de caracteres utilizando el contenido de la


variable.  

Utilizando Eclipse PDT puedes abrir el proyecto Ejemplo 6 (Separar


variables) de la Unidad 2. Estudia el código fuente y ejecútalo para mostrar
en el navegador el resultado de su interpretación.

- 115 -
Curso de Iniciación a PHP: Unidad 2
- El lenguaje de programación PHP 5 -

Constantes

Aunque en este apartado tratamos de las variables, queremos añadir que en


PHP también pueden definirse constantes, es decir, asignar a identificadores
valores que no van a cambiar nunca a lo largo de un programa. Por ejemplo,
hay valores constantes que no tienen por qué ser escritos cada vez que los
necesitemos, sino que podemos asignarlos a una constante y operar con ella
como si fuera una variable. Por ejemplo, el euro vale 166,386 pesetas. En lugar
de escribir siempre este valor, podemos definir la constante “tasa” y luego
usarla en las operaciones.

La función define() nos permite crear constantes y asignarles un contenido.


Por ejemplo, si queremos crear la variable “tasa” y asignarle su valor en
relación con la peseta, debemos escribir la sentencia
define("tasa",166.386);. Una ver definida la constante, si tenemos la variable
$euros, podríamos operar así: $pesetas=($euros * tasa);. Debemos observar
que los identificadores de las constantes no llevan el signo $ delante.

Las constantes no tienen un concreto ámbito de utilización, por lo que son


accesibles desde cualquier lugar de nuestra página PHP. Además, las
constantes no pueden ser redefinidas una vez que han sido inicializadas.

La función defined() devuelve verdadero si se define con éxito una constante y


falso si no es así.

Variables predefinidas

PHP genera automáticamente una serie de variables con diversa información


sobre el cliente y el servidor. Veamos cuáles son:

 $_POST: matriz asociativa que contiene los datos enviados por los
formularios mediante el método HTTP POST.
 $_GET: matriz asociativa que contiene los datos enviados por los
formularios mediante el método HTTP GET.
 $_COOKIE: matriz asociativa que contiene las cookies del usuario
visitante. En la Unidad 5 veremos cómo se utiliza.
 $_REQUEST: matriz asociativa que contiene los datos enviados por los
formularios y las cookies guardadas en el ordenador del cliente, es decir,
incluye la información de las matrices $_POST, $_GET y $_COOKIE. Los
estudiaremos un poco más adelante en esta Unidad.
 $_SERVER: matriz asociativa que contiene información sobre cabeceras,
rutas y ubicaciones de scripts suministrada por el servidor (hay que tener
en cuenta que no todos los servidores suministran todos los datos).
En el Ejemplo 1 de la Unidad 1, hemos visto que usábamos la variable
$_SERVER['HTTP_USER_AGENT'] para obtener la información del
navegador del usuario visitante.

- 116 -
Curso de Iniciación a PHP: Unidad 2
- El lenguaje de programación PHP 5 -

Otro elemento muy interesante es $_SERVER[PHP_SELF] ya que contiene


la dirección de la página (relativo al directorio raíz del servidor, es decir,
sin el nombre del servidor).

Como veremos más adelante al estudiar los formularios, esta variable se


puede utilizar en las páginas que se enlazan consigo mismas.

 $_SESSION: matriz asociativa que contiene variables de la sesión


disponibles para el script. En la Unidad 5 veremos cómo se utiliza.
 $_FILES: matriz asociativa de ficheros cargados al servidor a través del
método POST. En la Unidad 4 veremos cómo se utiliza.

- 117 -
Curso de Iniciación a PHP: Unidad 2
- El lenguaje de programación PHP 5 -

Trabajando con formularios

En la Unidad anterior hemos visto cómo presentar información en la página


web. En ésta vamos a dar un paso más estudiando cómo podemos preguntar
datos desde una página y hacer que esa información pase a la misma página o
a otra.

Los formularios, mediante controles, nos proporcionan la posibilidad de


preguntar al usuario cliente una serie de datos que pueden ser devueltos al
servidor. Éste los procesará luego según los objetivos del programa:
almacenándolos en una base de datos, controlando si son correctos,
tratándolos para ofrecer posteriormente al cliente otra página, etcétera.

Para que un control de un formulario envíe información al servidor web es


necesario:

 Lógicamente, que el control esté incluido en un formulario con la etiqueta


HTML <form>.
 El formulario debe indicar su atributo action con la dirección absoluta o
relativa del fichero PHP que procesará la información.
 El control debe indicar su atributo name. Este atributo name puede
contener cualquier carácter (números, tildes, guiones, etc.) pero, si
contiene espacios, PHP los sustituye por guiones bajos (_) al procesar
los datos enviados.
 El formulario contenga un botón de tipo submit o alguna función
Javascript que realice esta operación.

Veamos un ejemplo sencillo de formulario HTML:

<FORM ACTION=/curso/unidad2.eje07.formulario/index.php METHOD=GET> 
  <input type='hidden' name='oculto' value='Dato oculto' />    
  <TABLE border=0 cellpadding=10><TR><TD> 
     <input type='image' name='imagen' alt='imagen' src='colegio.png' />  
       </TD><TD> 
    <TABLE border=0><TR><TD align=right>Nombre: </TD> 
      <TD><INPUT NAME=nom VALUE=''></TD> 
    </TR><TR><TD align=right>Apellidos: </TD> 
      <TD><INPUT NAME=apel VALUE=''></TD> 
    </TR><TR><TD align=right>Repetidor: </TD> 
      <TD><input type='checkbox' name='repe'/></TD> 
    </TR><TR><TD align=right>Sexo: </TD> 
      <TD> 
    Hombre <input type='radio' name='Hombre' value='H'/>   
    Mujer <input type='radio' name='Mujer' value='M'/></TD> 
    </TR><TR><TD align=right>Curso: </TD> 
      <TD>     
    <select name='curso'> 
      <option>1D</option> 
      <option selected='selected'>2A</option> 
      <option>3B</option> 
    </select></TD> 
    </TR><TR><TD align=right>Notas: </TD> 
      <TD><TEXTAREA NAME=des COLS=20 ROWS=5></TEXTAREA> 

- 118 -
Curso de Iniciación a PHP: Unidad 2
- El lenguaje de programación PHP 5 -

      </TD>
    </TR> 
  </TABLE></TD></TR></TABLE><P> 
          <INPUT TYPE=submit name='boton' VALUE='Aceptar'><P><P>      
</FORM> 
</CENTER> 
</BODY> 

</HTML>

Para generar este formulario, en el Ejemplo 7 de la Unidad 2 hemos escrito el


siguiente código PHP:

<HTML> 
<HEAD><TITLE>Curso PHP 5 ‐ Unidad 2 ‐ Ejemplo 7a</TITLE></HEAD> 
<BODY> 
<CENTER> 
<H1>Introduzca sus datos</H1> 
 
<?php   
  echo "<FORM ACTION=$_SERVER[PHP_SELF] METHOD=GET> 
    <input type='hidden' name='oculto' value='Dato oculto' />    
    <TABLE border=0 cellpadding=10><TR><TD> 
    <input type='image' name='imagen' alt='imagen' src='colegio.png' 
/> </TD><TD> 
      <TABLE border=0>"; 
 
  echo "<TR><TD align=right>Nombre: </TD> 
        <TD><INPUT NAME=nom VALUE=''></TD> 
      </TR>"; 
  echo "<TR><TD align=right>Apellidos: </TD> 
        <TD><INPUT NAME=apel VALUE=''></TD> 
      </TR>"; 
  echo "<TR><TD align=right>Repetidor: </TD> 
        <TD><input type='checkbox' name='repe'/></TD> 
      </TR>"; 
  echo "<TR><TD align=right>Sexo: </TD> 
        <TD> 
      Hombre <input type='radio' name='Hombre' value='H'/>   
      Mujer <input type='radio' name='Mujer' value='M'/></TD> 
      </TR>"; 
   
  echo "<TR><TD align=right>Curso: </TD> 
        <TD>     
      <select name='curso'> 
        <option>1D</option> 
        <option selected='selected'>2A</option> 
        <option>3B</option> 
      </select></TD> 
      </TR>"; 
     
  echo "<TR><TD align=right>Notas: </TD> 
        <TD><TEXTAREA NAME=notas COLS=20 ROWS=5></TEXTAREA> 
        </TD> 
      </TR> 
    </TABLE></TD></TR></TABLE>"; 
  echo "<P><INPUT TYPE=submit name='boton' VALUE='Aceptar'><P><P>";  

- 119 -
Curso de Iniciación a PHP: Unidad 2
- El lenguaje de programación PHP 5 -

   
  if (isset($_REQUEST['boton'])) { 
    echo "<BR>Contenido de la variable \$_REQUEST: <PRE>"; 
  print_r($_REQUEST); 
  echo  "</PRE><BR><BR><INPUT type='button' value='Volver a la página 
anterior'onClick='history.back()'>"; 
  }   
   
 
?> 
      
</FORM> 
</CENTER> 
</BODY> 

</HTML>

El código PHP anterior crea el formulario siguiente:

Al pulsar sobre el botón Aceptar se vuelve a ejecutar el mismo código. Si


hemos completado en el formulario los datos solicitados, se muestran en la
parte inferior de la página, debajo del formulario. Así pues, conviene saber que
en PHP es frecuente que una página se llama a sí misma. Este procedimiento
se denomina recursividad.

Cuando se ejecuta el código por primera vez, sólo se preguntan los datos del
formulario y no aparecen los mismos en la parte inferior. Es lógico, pues las
variables aún no tienen contenido. Cuando las tres variables tengan algún
contenido, introducido en la página mediante el formulario, se muestra esta
información en la página llamada de nuevo al pulsarse el botón Aceptar y
ejecutarse la orden <FORM ACTION=index.php METHOD=POST>.

- 120 -
Curso de Iniciación a PHP: Unidad 2
- El lenguaje de programación PHP 5 -

El programa que recibe los datos los guarda automáticamente en la matriz


$_REQUEST. Mediante la orden print_r($_REQUEST) se puede mostrar el
contenido de la matriz $_REQUEST tal y como vemos en la siguiente imagen:

Como puedes ver, el servidor que recibe los datos del navegador, los guarda
automáticamente en la matriz $_REQUEST. Por lo tanto, podemos acceder al
contenido de un campo escribiendo, por ejemplo, $_REQUEST[‘nom’].

Con la sentencia siguiente comprobamos si la variable ‘boton’ existe y, si es


así, mostramos el contenido de la variable $_REQUEST:

if (isset($_REQUEST['boton']))

Esta forma de proceder es muy útil para verificar si los datos introducidos son
correctos. Si ponemos las condiciones de corrección dentro del código PHP, la
comprobación se realiza en el servidor, lo cual impide que cualquier usuario
pueda cambiar dichas condiciones, como ocurre en JavaScript.

Ya que podemos cambiar el nombre del fichero PHP que se llama a sí mismo,
en lugar de citar dentro del código expresamente su nombre, podemos usar la
variable de entorno $_SERVER[PHP_SELF] que contiene la dirección de la página

- 121 -
Curso de Iniciación a PHP: Unidad 2
- El lenguaje de programación PHP 5 -

(relativo a la raíz, es decir, sin el nombre del servidor), como hemos hecho, que
guarda el nombre del fichero al ejecutarse.

Esta variable se puede utilizar en las páginas que enlazan consigo mismas. Por
ejemplo, una página puede contener un formulario que envíe los datos a esa
misma página. Para ello, el atributo action del formulario debe contener el
nombre de la página. En vez de poner el nombre de la página, se puede utilizar
$_SERVER[PHP_SELF]. La ventaja es que aunque se cambie el nombre del
fichero, el enlace seguirá funcionando.

El atributo method de la etiqueta <FORM> permite elegir si la información de los


controles se incluye en la barra de dirección del navegador (method=get) o se
proporciona posteriormente (method=post).

Si usamos el método get se puede ver en la barra de dirección del navegador


los nombres de los controles y los valores introducidos por el usuario. Fíjate en
la siguiente imagen:

Nótese que para acceder al contenido de la variables definidas en el formulario


usamos la variable global $_REQUEST tanto para METHOD=POST como para
METHOD=GET, por lo que no es necesario conocer el método utilizado en la

- 122 -
Curso de Iniciación a PHP: Unidad 2
- El lenguaje de programación PHP 5 -

etiqueta <FORM>. PHP también define las variables $_POST y de $_GET que
son matrices que contienen únicamente incluyen la información de un método
en concreto.

Recomendamos al alumno utilizar siempre el mismo método HTTP para enviar


al servidor la información introducida por el usuario. En caso de duda, es mejor
usar la variable $_POST y, así, olvidarnos del método utilizado en el formulario.

Utilizando Eclipse PDT puedes abrir el proyecto Ejemplo 7 (Colegio) de la


Unidad 2. Estudia el código fuente y ejecútalo para mostrar en el navegador
el resultado de su interpretación.

Pasar información entre diferentes scripts

Hasta ahora hemos pasado valores dentro del mismo script llamándolo dos o
más veces (recursividad). También hemos visto que es infrecuente que una
aplicación hecha en PHP esté integrada por un solo fichero que genere una
única página. Generalmente, las aplicaciones tienen múltiples páginas web que
corresponden a múltiples scripts. Por lo tanto, necesitamos saber pasar
información de unos a otros. ¿Cómo se consigue esto?

1. Utilizando un formulario. Los datos introducidos en un formulario pueden


pasar a otra página diferente. Veamos cómo se hace mostrando en una
segunda página la información que se escriba en el formulario del ejemplo
anterior.

En el script del Ejemplo anterior creamos el formulario. Al interpretarse este


código, en la página resultante se preguntan los datos. En este archivo
debemos modificar el formulario (etiqueta ACTION) indicando la página destino
de los datos que introduzca el usuario:

<FORM ACTION=resultado.php METHOD=POST>

En este segundo código, que está guardado en el fichero resultado.php,


mostramos la información en otra página:

<HTML> 
<HEAD><TITLE>Curso PHP 5 ‐ Unidad 2 ‐ Ejemplo 7b</TITLE></HEAD> 
<BODY> 
<CENTER> 
 
<?php 
  // Leemos todas las variable $_REQUEST  
  if (!isset($_REQUEST["nom"])) $nom="";  
  else $nom=$_REQUEST["nom"]; 
  if (!isset($_REQUEST["apel"])) $apel=""; 

- 123 -
Curso de Iniciación a PHP: Unidad 2
- El lenguaje de programación PHP 5 -

  else $apel=$_REQUEST["apel"];   
  if (!isset($_REQUEST["repe"])) $repe='No'; 
  else $repe='S&iacute;'; 
  if (!isset($_REQUEST["hombre"])) $sexo='Hombre'; 
  else if (!isset($_REQUEST["mujer"])) $sexo='Mujer'; 
  else $sexo='No indicado'; 
  if (!isset($_REQUEST["curso"])) $curso=''; 
  else $curso=$_REQUEST["curso"]; 
  if (!isset($_REQUEST["notas"])) $notas=""; 
  else $notas=$_REQUEST["notas"]; 
 
  echo "<H2>Los datos introducidos son:</H2><P>"; 
  echo "Nombre: '$nom' <P>"; 
  echo "Apellidos: '$apel' <P>";  
  echo "Repetidor: '$repe' <P>"; 
  echo "Sexo: '$sexo' <P>"; 
  echo "Curso: '$curso' <P>"; 
  echo "Notas: '$notas' <P>"; 
   
  echo  "<BR><BR><INPUT type='button' value='Volver a la página 
anterior'onClick='history.back()'>"; 
?> 
 
</CENTER> 
</BODY> 

</HTML>

Si ejecutas de nuevo el Ejemplo 7 de la Unidad 2 verás que la información


introducida por el usuario aparece en otra página PHP:

2. Utilizando enlaces. Cuando pasamos un valor a un enlace, en la página


destino se crea de forma automática la variable con el valor que le hayamos
asignado. Veamos cómo se hace transformando el ejemplo anterior de forma
que en lugar de un formulario en el primer script se use un enlace. En el
archivo index.php del Ejemplo 7 de la Unidad 2 añadimos la instrucción, en
código HTML, siguiente:

- 124 -
Curso de Iniciación a PHP: Unidad 2
- El lenguaje de programación PHP 5 -

<A HREF="resultado.php?nom=Pedro&apel=García&des=Alto">
Pulse aquí para enlazar con la otra página </A>

Conviene advertir que detrás de la orden HREF= hay que poner el nombre del
fichero donde está el código de la página a la que hay que pasar los valores,
seguido del signo ?. Detrás de éste, se pone el nombre de la variable cuyo
contenido se debe pasar sin usar el signo $. Si hay más de una variable, se
ponen todas separadas por el signo &, como en el ejemplo anterior.

Cuando pulsamos sobre el enlace, se llama al script de la página siguiente y


muestra los datos introducidos. Debemos observar que el contenido de las
variables se transfiere mediante el enlace. Además, recalcamos el hecho de
que hemos usado el método $_GET para acceder al contenido de la variables
que hemos definido en la URL.

Es posible enlazar también el resultado a la misma página de forma recursiva


escribiendo su nombre de la siguiente forma:

<A HREF="index.php?nom=Pedro&apel=García&nota=Alto">
Pulse aquí para enlazar con la otra página </A>

Queremos acabar este punto con una advertencia:

HTML no entiende de espacios y, por tanto, si el contenido de las tres variables


anteriores hubiera tenido más de una palabra con espacios en medio, la página
no se habría mostrado, sino que se produciría un error. Para que HTML respete
los posibles espacios entre palabras, es preciso utilizar la función urlencode().

En el archivo index.php del Ejemplo 7 de la Unidad 2 añadimos la instrucción,


en código HTML, siguiente:

<?php 
  echo "A la variable \$nom le asignamos el valor \"Pedro José.\"<P>"; 
  echo "A la variable \$apel le asignamos el valor \"García de Dios.\"<P>"; 
  echo "A la variable \$nota le asignamos el valor \"Alto y moreno.\"<P>"; 
 
  $variables_pasadas="nom=".urlencode("Pedro José."). 
                   "&apel=".urlencode("García de Dios."). 
                    "&nota=".urlencode("Alto y moreno."); 
?> 
 
<A HREF=resultado.php?<?php echo $variables_pasadas; ?> >Pulse aquí para 
enlazar con la otra página </A> 

Si ejecutas en Eclipse PDT el nuevo código, verás que los datos se pasan al
página destino respetando los espacios introducidos.

Varios botones dentro de un formulario

- 125 -
Curso de Iniciación a PHP: Unidad 2
- El lenguaje de programación PHP 5 -

Dentro un mismo formulario (FORM), existen diversas maneras de usar varios


botones con diferentes acciones asociadas a cada uno de ellos.

El truco consiste en utilizar las propiedades "name" y "value" de los botones: la


propiedad NAME se convierte en una variable que adquiere el valor de la
propiedad VALUE si se pulsa ese botón en cuestión. Teniendo en cuenta esto,
hay varias formas de usarlo:

1. La primera forma consiste en llamar a los botones igual (mismo name), y cuya
etiqueta value fuera diferente. Leyendo en el script el contenido de
$_REQUEST['name'], sabrías qué botón se ha pulsado. Fíjate en este ejemplo:

<FORM name="formulario" method="post" action="index.php">


<INPUT TYPE="submit" name="boton" value="Listado">
<INPUT TYPE="submit" name="boton" value="Buscar">
</FORM>

Cuando el usuario pulse el botón “Listado” o “Buscar” en la página PHP


destino aparecerán estas variables:

if ($_REQUEST['boton']=="Listado")
{Código;}
elseif ($_REQUEST['boton']=="Buscar")
{Código2;}
else {Código3;}

2. Los botones se llaman de diferente manera (atributo name). Así, es posible


usar el mismo texto en los botones (atributo value). Por ejemplo, una página en
la que hubiera dos botones cuyo texto fuera 'Calcular'. En este caso buscamos
si las variables boton1 o boton2 tienen algún valor. Fíjate en el siguiente
ejemplo:

<FORM name="formulario" method="post" action="index.php">


<INPUT TYPE="submit" name="boton1" value="Calcular">
<INPUT TYPE="submit" name="boton2" value="Calcular">
</FORM>

Cuando el usuario pulse unos de los botones “Calcular” en la página PHP


destino aparecerán estas variables:

if (isset($_REQUEST['boton1']))
{Código;}
elseif (isset($_REQUEST['boton2']))
{Código2;}
else
{Código3;}

3. Definir un formulario para cada botón indicando en el atributo ACTION un


parámetro con una variable (método GET del protocolo HTTP):
action="index.php?operacion=Alta".

- 126 -
Curso de Iniciación a PHP: Unidad 2
- El lenguaje de programación PHP 5 -

En este caso los valores de NAME y VALUE no importan porque se controla la


acción con el parámetro. Fíjate en este ejemplo:

<FORM name="form1" method="post" action="index.php?operacion=Alta">


<INPUT type="text" name="editorial" size="10" maxlength="30">
<INPUT TYPE="SUBMIT" NAME="operacion" VALUE="Alta">
</FORM>

<FORM name="form2" method="post" action="index.php?operacion=borrar">


<IMPUT type="text" name="auto" size="10" maxlength="30">
<INPUT TYPE="SUBMIT" NAME="operacion" VALUE="borrar">
</FORM>

Y en el index.php buscamos el valor de $_REQUEST['operación']:

if ($_REQUEST['operación']) {Código;} ...

4. Por último, también se podrían usar otras opciones HTML como un enlace
(puedes poner una imagen de un botón y enlazarlo con el programa pasándole
parámetros) o también puedes usar Javascript. Fíjate en este ejemplo:

<A HREF="visitar.php?operacion=alta">
<img src="image_boton.gif">
</A>

- 127 -
Curso de Iniciación a PHP: Unidad 2
- El lenguaje de programación PHP 5 -

Estructuras de bifurcación condicional

Uno de los elementos más necesarios y frecuentes en la programación


informática son las estructuras de bifurcación condicional. La ejecución de las
instrucciones de un programa no tiene que seguir necesariamente una línea
secuencial, es decir, en el caso de PHP no han de interpretarse todas las
sentencias que aparezcan en el código. Por el contrario, a veces es
imprescindible que algunas dejen de interpretarse y, en cambio, sí han de ser
procesadas otras. Esto se consigue mediante las estructuras de bifurcación
condicional, que vamos a estudiar a continuación.

Llamamos a estas estructuras de bifurcación condicional, control


condicional o decisión condicional por la decisión que ha de tomarse entre
varias alternativas o diferentes posibilidades. Mediante ellas conseguimos que
se realice una operación u otra en función de unos valores o contenidos dados.

En este curso suponemos que el alumno ya sabe usar esta estructura y nos
vamos a limitar a explicar la sintaxis de las órdenes con las que se aplica en el
código PHP. Por otra parte, en los ejemplos y ejercicios anteriores ya hemos
utilizado estructuras de este tipo esperando que el alumno o alumna las haya
entendido y aplicado correctamente.

Estructura simple

La estructura más elemental está integrada por la palabra reservada if seguida


de una expresión, como se ve en la sintaxis siguiente:

if (expresión)
{sentencia simple o compuesta;}

Por ejemplo, si la variable $numero contiene 5 y queremos multiplicar ese valor


por 2 si $numero vale menos de 10, debemos escribir así la sentencia:

if ($numero<10)
{$numero*=2;}

En este caso, como 5 es menor que 10, se ejecuta la instrucción, de forma que
$numero pasa a valer 10.

Si hay que ejecutar un bloque con múltiples sentencias, es imprescindible


incluirlo entre las llaves {...}. Por ejemplo, si la variable $a contiene 3 y la
variable $b contiene 5, y queremos multiplicar $a por 4 y $b por 2 en el caso de
que $a multiplicada por $b resulte 25, escribiremos:

if ($a*$b=25)
{
$a*=4;
$b*=2;
}

- 128 -
Curso de Iniciación a PHP: Unidad 2
- El lenguaje de programación PHP 5 -

En este caso, como 3 ($a) por 5 ($b) resulta 15, que es distinto de 25, no se
ejecuta la instrucción compleja y, por tanto, ninguna de las dos variables
cambiará de valor.

Estructura completa

En el caso de la estructura anterior una sentencia se ejecuta si se cumple la


condición puesta en la expresión y no se ejecuta si no se cumple. Pero también
es posible ejecutar una instrucción si se cumple la condición o ejecutar otra si
no se cumple la condición. Aquí se aplica con toda precisión el término
bifurcación, que significa división de un camino en dos. PHP dispone también
de esta estructura más completa, cuya sintaxis es la siguiente:

if (expresión)
{sentencia simple o compuesta;}
else
{sentencia simple o compuesta;}

Por ejemplo, si la variable $numero contiene 5 y queremos multiplicar ese valor


por 2 si $numero vale menos de 10 o por 4 si vale 10 o más, debemos escribir
así la sentencia:

if ($numero<10)
{$numero*=2;}
else
{$numero*=4;}

En este caso, como 5 es menor que 10, se ejecuta la primera instrucción, de


forma que $numero pasa a valer 10. Si $numero hubiera contenido 10, se habría
ejecutado la segunda instrucción, de forma que $numero hubiera pasado a valer
20.

Complementaria de esta estructura es otra más completa que admite más de


dos posibilidades o condiciones y, por tanto, se puede ejecutar una instrucción
entre muchas posibles. Tiene esta estructura:

if (expresión1)
{sentencia simple o compuesta;}
elseif (expresión2)
{sentencia simple o compuesta;}
elseif (expresión3)
{sentencia simple o compuesta;}
......
else
{sentencia simple o compuesta;}

Por ejemplo, supongamos que a la variable $etapa le queremos asignar los


literales "Infancia" si la edad de una persona es menor de 4 año, "Niñez" si está
comprendida entre 4 y 10, "Pubertad" si la persona tiene entre 10 y 14 años,
"Adolescencia" si la persona tiene entre 14 y 21 años, "Adultez" entre 21 y 55
años, "Vejez" entre 55 y 70 años y "Ancianidad" desde 70 en adelante.

- 129 -
Curso de Iniciación a PHP: Unidad 2
- El lenguaje de programación PHP 5 -

Debemos escribir así la estructura condicional para que a cada persona se le


asigne la etapa correspondiente a su edad:

if ($edad<4)
{$etapa="Infancia";}
elseif ($edad<10)
{$etapa="Niñez";}
elseif ($edad<14)
{$etapa="Pubertad";}
elseif ($edad<21)
{$etapa="Adolescencia";}
elseif ($edad<55)
{$etapa="Adultez";}
elseif ($edad<70)
{$etapa="Vejez";}
else
{$etapa="Ancianidad";}

Si la variable $edad contiene 34, se ejecutaría la quinta instrucción, que es


$etapa="Adultez"; dado que la primera expresión que devuelve Verdadero
(True) es ($edad<71). Las condiciones se comprueban de arriba abajo y,
cuando se encuentra una expresión que devuelve True, se ejecutan las
instrucciones que contenga en esa cláusula, abandonando después la
estructura condicional.

Para que la variable $etapa no quede indeterminada, es conveniente poner


como última la cláusula else, a fin de que, si no se han cumplido ninguna de
las condiciones anteriores, el flujo del programa pase por esta última y asigne
el valor que nos convenga a la variable $etapa.

Conviene recordar que, si dentro de cada cláusula aparecen varias


instrucciones (sentencia compleja), es necesario ponerlas entre las llaves {...},
si bien es buena costumbre poner siempre las dos llaves como hacemos
nosotros casi siempre.

Hay otra instrucción que permite también codificar estructuras condicionales de


forma muy similar a la que acabamos de ver. Es la orden switch, que tiene la
estructura siguiente:

switch (variable)
{
case valor:
sentencia simple o compuesta;
break;
case valor:
sentencia simple o compuesta;
break;
case valor:
sentencia simple o compuesta;
break;
......
default
sentencia simple o compuesta;
}

- 130 -
Curso de Iniciación a PHP: Unidad 2
- El lenguaje de programación PHP 5 -

Veamos su sintaxis en un ejemplo. Supongamos que en la variable $ciudad


tenemos el nombre de una provincia y que a la variable $comunidad queremos
asignarle la Comunidad Autónoma a la que pertenece. Podríamos escribir así
la estructura condicional:

switch ($ciudad)
{
case "Lugo":
$comunidad="Galicia";
break;
case "Huesca":
$comunidad="Aragón";
break;
case "Soria":
$comunidad="Castilla León";
break;
case "Almería":
$comunidad="Andalucía";
break;
default:
$comunidad="Otra";
}

Si la variable $ciudad contiene "Soria", a $comunidad se le asigna "Castilla


León". Si contuviera "Cáceres", se le asignaría "Otra". En esta estructura hay
que tener en cuenta que el flujo del programa comprueba todas las cláusulas
case, incluso aunque encuentre una condición verdadera.

Conviene incluir siempre la orden break para abandonar la comprobación


cuando se encuentre la primera expresión que devuelva Verdadero.

El lenguaje PHP ofrece una sintaxis alternativa para alguna de sus estructuras
de control condicionales: permite cambiar la llave de apertura { por dos puntos
(:) y la de cierre } por endif; o endswitch;. Incluso es posible mezclar código
HTML dentro de una estructura condicional del lenguaje PHP. Observa el
ejemplo siguiente:

<? if ($ciudad=="Segovia" ?>


Esta ciudad pertenece a Castilla León
<? endif; ?>

En este ejemplo el bloque HTML Esta ciudad pertenece a Castilla León se


incluye dentro de una sentencia if escrita en la sintaxis alternativa. El bloque
HTML se mostrará sólo si $ciudad es igual a "Segovia".

La sintaxis alternativa puede aplicarse incluso dentro de las cláusulas else y


elseif, como puede verse en el ejemplo siguiente:

if ($ciudad == "Soria"):
print "Castilla León";
print "...";
elseif ($ciudad =="Badajoz"):
print "Extremadura";

- 131 -
Curso de Iniciación a PHP: Unidad 2
- El lenguaje de programación PHP 5 -

print "!!!";
else:
print "Sin determinar;
endif;

También en la orden switch puede aplicarse esta sintaxis alternativa así:

$var=3;
switch ($var):
case 0:
print "var vale 0";
break;
case 1:
print "var vale 1";
break;
case 2:
print "var vale 2";
break;
default:
print "var es distinta de 0, 1 o 2";
endswitch;

Anidamiento de estructuras condicionales

Las sentencias if se pueden anidar indefinidamente dentro de otras sentencias


if. Esto proporciona a PHP una gran riqueza y flexibilidad para ejecutar
estructuras condicionales en las diferentes partes de un programa.

Se denomina anidamiento a la operación que consiste en incluir unas


estructuras condicionales dentro de otras. Anidar, pues, consiste en meter
estructuras condicionales dentro de una, de varias o de todas las cláusulas de
otra estructura condicional.

En la operación de anidar estructuras condicionales debe tenerse en cuenta la


siguiente:

 Las estructuras condicionales anidadas pueden ser muy variadas y


complejas. Lo más importante es saber identificar los diversos niveles de
anidamiento y las cláusulas de cada estructura.

 Siempre deben adentrarse los márgenes (indentar) de las estructuras


anidadas para poder ver mejor dónde se abre y se cierra cada estructura
condicional, así como las cláusulas que la integran. Las instrucciones de
cada cláusula también deben indentarse.

 Cuando aparece una estructura condicional anidada dentro de una


cláusula de otra estructura condicional, la estructura condicional anidada
debe incluirse completamente dentro de esa cláusula. Además, pueden
aparecer o no instrucciones antes y después de la estructura condicional
anidada. Es decir, la estructura anidada no tiene por qué ser el único
elemento de una cláusula condicional.

- 132 -
Curso de Iniciación a PHP: Unidad 2
- El lenguaje de programación PHP 5 -

 Las estructuras condicionales sólo deben anidarse cuando no hay otra


solución más sencilla y que exija menos instrucciones, como usar la
orden switch en lugar de anidar hasta varios niveles.

En el próximo ejemplo puedes ver cómo hemos resuelto el supuesto siguiente


usando estructuras condicionales y un formulario donde el visitante puede
introducir su edad y la página le indica la etapa vital de la vida en la que se
encuentra.

Desde Eclipse PDT puedes abrir el proyecto Ejemplo 8 (Etapas de la


vida) de la Unidad 2. Estudia el código fuente y ejecútalo para mostrar en el
navegador su resultado.

Si ejecutas el fichero index_if.php, verás que aparece la siguiente página:

Además, en el mismo proyecto hemos incluido la página index_switch.php que


muestra el mismo ejemplo utilizando la sentencia switch como estructura
condicional. Si ejecutas este Ejemplo, verás que aparece la siguiente página:

- 133 -
Curso de Iniciación a PHP: Unidad 2
- El lenguaje de programación PHP 5 -

En este caso, hemos cambiado el control donde el usuario indica la edad por
un selector de opciones. En este caso, hemos incluido en la etiqueta option de
cada opción el atributo value que establece el valor que tomará la variable
$_REQUEST['edad'] cuando el usuario pulse el botón “Ver mi etapa”. Así,
evitamos que se pase como valor el literal que aparece como opción en el
selector. Fíjate en esta parte del código fuente:

echo "Selecciona tu edad: <select name='edad'> 
  <option value=1>Menor de 4 años</option> 
  <option value=2>Entre 4 y 10 años</option> 
  <option value=3>Entre 10 y 14 años</option> 
      <option value=4>Entre 14 y 21 años</option> 
      <option value=5>Entre 21 y 55 años</option> 
      <option value=6>Entre 55 y 70 años</option> 
      <option value=7>Mayor de 70 años</option> 
  </select>"; 
 
Una vez se recibe en la página la variable con la opción seleccionada, usamos
este valor para, con la orden switch, encontrar el texto que corresponda: 
 
switch ($edad) { 
      case 1: 
        echo "<P>Infancia"; 
        break; 
      case 2: 
        echo "<P>Niñez"; 
        break; 
      case 3: 
        echo "<P>Pubertad"; 
        break; 
      case 4: 
        echo "<P>Adolescencia"; 
        break; 
      case 5: 
        echo "<P>Adultez"; 
        break; 
      case 6: 
        echo "<P>Vejez"; 
        break; 
      case 7: 
        echo "<P>Ancianidad"; 
        break;    
      default:  
        echo "Error al introducir la edad."; 
    } 

Fíjate que siempre se escribe la sentencia break para abandonar la


comprobación cuando se encuentra la primera expresión que devuelva
Verdadero. Además, hemos incluido la opción default como opción final por
defecto si las comprobaciones anteriores no devuelven Verdadero.

- 134 -
Curso de Iniciación a PHP: Unidad 2
- El lenguaje de programación PHP 5 -

Estructuras de bucle

Los bucles, juntamente con las estructuras condicionales, constituyen otro de


los elementos más necesarios y frecuentes en la programación informática.
Una característica importante de todo buen programa, además de la velocidad
de ejecución, es que resuelva el problema planteado utilizando el menor
número posible de líneas de instrucciones. La estructura de bucle permite
ahorrar muchas líneas de programación y aumenta sensiblemente la velocidad
de ejecución de los programas informáticos. De ahí su trascendencia y la
importancia que debe darse a la compresión y correcto uso de este elemento.

Como ya debe saber la persona que haga este curso, en informática el término
bucle es sinónimo de iteración o repetición, es decir, se refiere al hecho de
repetir o iterar una operación cuantas veces necesitemos o queramos. Así
pues, podemos definir un bucle como la estructura de control que permite que
una instrucción o varias se ejecuten más de una vez mientras se cumpla una
condición dada.

Imaginemos que necesitamos hallar los múltiplos de 5 que hay entre 5 y 1000.
Para hacerlo, utilizamos la variable $multiplos_5, que inicialmente tiene el
valor 1 y se va incrementando de uno en uno. Cuando el número resultante es
múltiplo de 5, se muestra en la página. Es un problema muy sencillo de suma y
división, pero si no se emplease un bucle, exigiría muchas líneas de
instrucciones, como puede verse a continuación.

if ($multiplos_5 mod 5 = 0)
{ echo $multiplos_5;}
$multiplos_5+=1;

Las instrucciones anteriores servirían para realizar las operaciones


mencionadas en el caso de que 1 fuera múltiplo de 5. Sin utilizar un bucle,
necesitaríamos repetir esta secuencia 1.000 veces. En cambio, si usamos una
estructura de bucle, con escribir este código una vez es suficiente.

En resumen, un bucle es una estructura de control del flujo de un programa que


permite repetir una o varias operaciones cuantas veces sea necesario
dependiendo de una condición. Siempre que la condición se cumpla, se
repetirá la operación. Cuando deje de cumplirse, se sale de la estructura de
bucle y el programa continúa su flujo ejecutando las instrucciones que
aparecen detrás del bucle.

La estructura de bucle while

Esta orden permite repetir una o varias instrucciones un determinado número


de veces mientras se cumpla una condición dada. Se abandona el bucle
cuando la condición establecida devuelva falso (False) o bien insertando la
orden break según nos convenga. En el primer caso es preciso cambiar el
valor de algún elemento de la expresión dentro del propio bucle para que la
condición devuelva falso (False). En el segundo no es preciso que la condición
devuelva falso para salir del bucle.

- 135 -
Curso de Iniciación a PHP: Unidad 2
- El lenguaje de programación PHP 5 -

Ésta es su sintaxis:

while (expresión)
{sentencia simple o compleja;}

Veamos cómo se usa esta estructura en un ejemplo. La siguiente página


muestra los números entre 0 y 1.000 que son múltiplos de 4, los cuenta y los
suma.

<HTML> 
<HEAD><TITLE>Curso PHP 5 ‐ Unidad 2 ‐ Ejemplo 9</TITLE></HEAD> 
<BODY> 
<H1> <CENTER>Números de 1 a 1.000 múltiplos de 4 </CENTER></H1><P> 
<?php 
 
$i=1; 
$z=0; 
$suma=0; 
 
while ($i<1001) 
   // Se abre un bucle que repite las operaciones 1000 veces. 
 

 
  /* Con esta estructura se salta al principio del bucle  
     sin ejecutar las intrucciones siguientes cuando  
     el valor de $i contenga de 500 a 699.*/ 
  /*   if ($i > 499 and $i < 700) 
       {              
          $i++;       
          continue;   
       } 
  */ 
       
     // Si el resto de dividir el número entre 4 es cero...     
     if ($i % 4 == 0)   
     {   
         printf("%04d ‐",$i); 
        $z++; 
        $suma+=$i; 
     } // Aquí acaba la estructura condicional. 
 
  /* Si la suma de los múltiplos de 4 es mayor de 100.000 
     Se sale del bucle. Este código está comentado.*/ 
  /*   if ($suma>100000)  
           {break;}        
  */ 
     $i++; 
 
}   /* Aquí se cierra el bucle. Se abandona cuando  
    la variable $i valga 1.001.*/ 
 
?> 
 
<CENTER> 
<H2>Suma de estos números :  
    <?php printf("%06d",$suma); ?>  

- 136 -
Curso de Iniciación a PHP: Unidad 2
- El lenguaje de programación PHP 5 -

<P> 
 
En total hay  
    <?php echo $z; ?>  
números </CENTER></H2> 
</BODY> 

</HTML>

Utilizando Eclipse PDT puedes abrir el proyecto Ejemplo 9 (Bucle while) de la


Unidad 2. Estudia el código fuente y ejecútalo para mostrar en el navegador su
resultado.

Si lo ejecutas, verás que aparece en el navegador la siguiente ventana:

En el programa anterior no se usa la orden break para salir de bucle antes de


que se deje de cumplir la condición. Si quisiéramos abandonar el bucle cuando
la suma de los múltiplos de 4 fuera mayor que 100.000, podríamos hacerlo con
la estructura condicional siguiente:

if ($suma>100000)
{break;}

Si se quiere ver cómo funciona, basta descomentar estas dos líneas del código
anterior y actualizar la página web.

Como ocurre con las estructuras condicionales, con las estructuras de bucle
también puede utilizarse una sintaxis alternativa, que consiste en sustituir la
primera de las llaves { por dos puntos (:) y la última por la palabra endwhile;.
En este caso la sintaxis es la siguiente:

while (expresión): sentencia ... endwhile;

- 137 -
Curso de Iniciación a PHP: Unidad 2
- El lenguaje de programación PHP 5 -

Dentro de las estructuras de bucle se puede usar la orden continue para que el
flujo del programa salte al principio del bucle sin ejecutar las sentencias que
hubiera entre la orden continue y el cierre del bucle. Por ejemplo, si en el caso
anterior queremos saltar desde el número 500 hasta el 700, debemos insertar
al principio del bucle la estructura condicional siguiente:

if ($i > 499 and $i < 700)


{
$i++;
continue;
}

Si se quiere ver cómo funciona, basta descomentar estas líneas del código del
ejemplo anterior y actualizar la página web.

La estructura de bucle do ... while

Esta orden funciona prácticamente igual que la anterior, con una sola
diferencia: en la estructura while, si la expresión devuelve False la primera vez
que se evalúa, no se entra en el bucle y, por tanto, las sentencias que haya en
su interior no se ejecutan ni una vez. En cambio, en la estructura do...while la
sentencia se ejecuta al menos una vez y, luego, se sigue ejecutando mientras
sea verdadera la expresión.

En el caso de while decimos: “Si la expresión es verdadera y mientras lo siga


siendo, ejecutar las sentencias”. En cambio, en el caso de do...while indicamos:
“Haz esto y, mientras la expresión sea verdadera, sigue haciéndolo”.

Ésta es su sintaxis:

do {sentencia simple o compleja;} while (expresión)

Por lo demás, esta estructura se comporta igual que while.

La estructura de bucle for

Esta orden de bucle permite, al igual que las anteriores, repetir una o varias
instrucciones un determinado número de veces según el resultado de una
expresión.

Su sintaxis es algo más compleja que en las estructuras anteriores:

for (expresión1; expresión2; expresión3)


{sentencia simple o compleja;}

donde:

 expresión1 indica el valor inicial desde el que debe comenzar el


contador del bucle. Esta expresión sólo se evalúa la primera vez que se
ejecuta el bucle.

- 138 -
Curso de Iniciación a PHP: Unidad 2
- El lenguaje de programación PHP 5 -

 expresión2 especifica la expresión que se evalúa cada vez que se repite


el bucle. Si devuelve True, se ejecutan las instrucciones de su interior. Si
devuelve False, se abandona el bucle.
 expresión3 indica el incremento que se produce en la variable que se
utiliza como contador del bucle. Se evalúa al final de cada iteración.

El segundo parámetro (expresión2) es imprescindible, mientras que el primero


(expresión1) y el tercero (expresión3) pueden aparecer dentro del paréntesis o
no. En este último caso el primer parámetro habrá de inicializarse antes del
bucle y el tercero deberá incrementarse dentro del mismo.

Si en el ejemplo anterior hubiéramos usado la orden for, deberíamos haber


escrito:

for ($i=1;$i<1001;$i++)

En este caso, serían ya innecesarias las instrucciones $i=1; y $i++;.También


podemos mantener estas dos instrucciones donde están y escribir así el for:

for (;$i<1001;)

Por lo demás, la estructura for admite también la sintaxis alternativa

for (expr1; expr2; expr3): sentencia; ...; endfor;

así como las instrucciones break y continue en su interior.

Mira en el ejemplo siguiente una forma bastante elegante de mostrar en la


página los 20 primeros números pares.

<HTML> 
<HEAD><TITLE>Curso PHP 5 ‐ Unidad 2 ‐ Ejemplo 10</TITLE></HEAD> 
<BODY> 
 
<CENTER> 
<H2>Relación de los números pares de 0 a 20</H2> 
<P> 
<H3> 
 
<?php 
 
    for ($i = 0; $i <= 20; print " ‐ $i", $i+=2); 
 
?> 
 
</H3></CENTER> 
</BODY> 
</HTML> 

- 139 -
Curso de Iniciación a PHP: Unidad 2
- El lenguaje de programación PHP 5 -

Usando Eclipse PDT puedes abrir el proyecto Ejemplo 10 (Bucle for) de la


Unidad 2. Estudia el código fuente y ejecútalo para mostrar en el navegador su
resultado.

Si lo ejecutas, verás que aparece en el navegador la siguiente ventana:

La estructura de bucle foreach

La orden foreach, que facilita el acceso y tratamiento de los elementos de las


matrices (arrays).

Veamos su doble sintaxis y cómo se utiliza cada una a través de ejemplos.

1. foreach (expresion_array as $value) sentencia

En esta primera sintaxis se recorren todos los elementos de un array desde el


primero hasta el último y se asigna a $value el contenido de cada elemento
avanzando el puntero un elemento en cada iteración del bucle. El puntero se
coloca de forma automática en el primer elemento al comienzo del bucle.

En el ejemplo siguiente se recorren y muestran los elementos del array


$impares usando esta sintaxis.

$impares=array(1,3,5,7,9);
foreach($impares as $numimp)
print "Valor del elemento de \$impares: $numimp<P>";

Al interpretarse este código se muestra la página siguiente:

Valor del elemento de $impares: 1


Valor del elemento de $impares: 3
Valor del elemento de $impares: 5
Valor del elemento de $impares: 7
Valor del elemento de $impares: 9

2. foreach (expresion_array as $key => $value) sentencia

Esta sintaxis hace lo mismo que la anterior, pero aquí disponemos de un dato
más, que es el índice del elemento por el que se va pasando en cada vuelta del
bucle. Veamos cómo funciona en el mismo ejemplo anterior:

- 140 -
Curso de Iniciación a PHP: Unidad 2
- El lenguaje de programación PHP 5 -

$impares=array("uno"=>1,"dos"=>3,"tres"=>5,
"cuatro"=>7,"cinco"=>9);
foreach($impares as $indice=>$numimp)
print "Valor del elemento $indice de \$impares: $numimp<P>";

Al interpretarse este código se muestra la página siguiente, similar a la anterior,


en la que se muestra el nombre del índice de cada elemento:

Valor del elemento uno de $impares: 1


Valor del elemento dos de $impares: 3
Valor del elemento tres de $impares: 5
Valor del elemento cuatro de $impares: 7
Valor del elemento cinco de $impares: 9

En la Unidad 3 se estudiarán con más detalle las matrices (arrays). Si el


alumno lo necesita, puede recurrir a las explicaciones dadas en la misma.

- 141 -
Curso de Iniciación a PHP: Unidad 2
- El lenguaje de programación PHP 5 -

Proyecto PHP con múltiples archivos

Ya se habrá observado en los ejercicios que hemos realizado que el código


correspondiente a cada página web suele ser breve. Esto se consigue
llamando a funciones, usando bucles, etc. Además, PHP permite también
incorporar, cuando sea necesario, código de otros ficheros, gracias a lo cual
este código no tiene que estar en la página actual, sino que sólo es necesario
citarlo o invocarlo dentro del script correspondiente.

Es muy conveniente utilizar este procedimiento para declarar funciones, para


crear cabeceras de página, para almacenar los datos de una configuración,
etcétera, que se usan en múltiples páginas, de forma que no sea preciso
escribir este código, declarar e inicializar las variables o funciones ni definir las
constantes cada vez que se usen en una página. Basta con incluirlas o
requerirlas como veremos a continuación. Así se consigue desarrollar
proyectos completos estructurando la funcionalidad en diferentes archivos de
código fuente.

Orden include(). Permite leer el contenido de un fichero y colocar su código en


la posición donde se cita. Podemos incluir un fichero escribiendo entre comillas
directamente su nombre como parámetro de la orden. Por ejemplo, si
escribimos include("cabecera.php");, se lee el contenido de este fichero y se
trae a la posición del código donde se cita, haciendo que se ejecute como si lo
hubiéramos escrito ahí mismo.

Si tenemos que incluir varios ficheros, podemos hacerlo usando un array y un


bucle de esta forma:

$ficheros=array("cabecera.php","configura.php","colores.php");
for ($a=0;$a<count($ficheros);$a++)
{
include($ficheros[$a]);
}

Así pues, la función include() permite interpretar el código que contenga el


fichero citado como parámetro cada vez que se utiliza.

Orden require(). Es muy parecida a la anterior y sirve, igualmente, para


acceder desde un script a un fichero externo. En este caso la función es
reemplazada por el contenido del fichero al que hace referencia. Se usa
principalmente para acceder a ficheros que contienen funciones y constantes
que no van a ser modificadas, sino sólo utilizadas en la página donde de cita el
fichero.

Aunque ambas funciones importan o insertan código contenido en archivos


PHP dentro de otro archivo PHP, la diferencia entre uno y otro puede deducirse
de su nombre:

require() establece que el código del archivo invocado es “requerido”, es decir,


es obligatorio que esté disponible para el funcionamiento del programa global.

- 142 -
Curso de Iniciación a PHP: Unidad 2
- El lenguaje de programación PHP 5 -

Por esto, si el archivo especificado en esta función no existe aparecerá un error


“PHP Fatal error” y el programa PHP se detendrá.

Sin embargo, con la orden include(), si no existe el fichero, mostrará un error


del tipo “Warning” y el programa seguirá ejecutándose aunque no se incluya el
código y puede que no funcione correctamente.

Por lo tanto, es mejor utilizar require() para asegurarnos que el fichero existe y
la ejecución del programa no continua. No obstante, se puede utilizar include()
cuando el código no incluido no afecta a otras partes de la aplicación y que no
dañará al resto del programa.

Por ejemplo, si un script PHP muestra el resultado de un SQL es mejor utilizar


require(), mientras que podemos usar include() para invocar el archivo que
contiene código html, como puede ser el pie de la página web u otra parte de la
plantilla.

Existen las funciones require_once() e include_once() que funcionan de la


misma forma que sus versiones con nombre corto, salvo que, al utilizar la
versión _once, se impide la carga de un mismo archivo más de una vez.

Si incluimos varias veces sentencias del tipo require(), corremos el riesgo de


redeclaraciones de variables, funciones o clases. Parece lógico pensar que es
mejor siempre utilizar la versión _once, sin embargo, has de saber que estas
órdenes son más “pesadas” y consumen recursos del servidor, por lo que hay
que usarlas sólo cuándo sea necesario.

Veamos cómo se usa en ejemplo siguiente:

Contenido del fichero que vamos a requerir, que denominamos notas.php:

<?

define ("nota1","Insuficiente");
define ("nota2","Suficiente");
define ("nota3","Notable");
define ("nota4","Sobresaliente");

?>

Contenido del fichero donde se requiere el anterior:

<?

require ("notas.php");
print nota1."<P>";
print nota2."<P>";
print nota3."<P>";
print nota4;

?>

- 143 -
Curso de Iniciación a PHP: Unidad 2
- El lenguaje de programación PHP 5 -

Al interpretarse este código se muestra la página siguiente:

Insuficiente

Suficiente

Notable

Sobresaliente

Cuando realizamos la llamada desde una página diferente, el contenido de las


constantes que hemos creado e inicializado en notas.php pasa a formar parte
del script donde está el código de la página actual y, por tanto, toda la
información del fichero notas.php está disponible para utilizarla en ésta.

Debemos tener en cuenta que la orden require() no puede se incluirse dentro


de un bucle para acceder a múltiples ficheros, como hemos hecho con la orden
include().

Los ficheros que pueden citarse como parámetros de las funciones include() y
require() pueden ser otra página web u otros ficheros no interpretados cuyo
formato pueda ser leído por PHP, como los de tipo HTML, CSS, TXT, etcétera.

Además, al citar un fichero, es necesario tener en cuenta la lógica de la página


web (configuración de directorios y subdirectorios) donde se citan, tanto por lo
que se refiere a la carpeta donde estén archivados como al camino para
encontrarlos.

Desde Eclipse PDT puedes abrir el proyecto Ejemplo 11 (Boletín de notas)


de la Unidad 2. Estudia el código fuente y ejecútalo para mostrar en el
navegador su resultado.

Si lo ejecutas, verás que aparece en el navegador la siguiente ventana:

- 144 -
Curso de Iniciación a PHP: Unidad 2
- El lenguaje de programación PHP 5 -

Cuando estudies el código, mira cómo se han incorporado las funciones


include() y require() dentro del código de estos scripts.

- 145 -
Curso de Iniciación a PHP: Unidad 2
- El lenguaje de programación PHP 5 -

Control de excepciones en PHP

Una excepción es un evento que ocurre durante la ejecución de un programa


PHP que requiere de la ejecución controlada de un bloque de código fuera del
flujo normal del código fuente.

El control de excepciones es una herramienta muy potente a la hora de realizar


una gestión de un problema en la ejecución de un código PHP. Una excepción
puede aparecer debido a un error de ejecución o una situación no esperada
que el bloque de código no es capaz de gestionar.

Por lo tanto, un correcto manejo de excepciones puede hacer que tu


código PHP sea mucho más fiable y robusto.

A partir de la versión 5, PHP incluye un mecanismo para controlar las


excepciones con una sintaxis muy parecida al mecanismo de JAVA o C#. La
principal diferencia con estos lenguajes es que las funciones nativas de la API
de PHP no lanzan excepciones, al menos de momento.

PHP cuenta con varios tipos de excepciones predefinidas: Exception,


ErrorException y un conjunto de excepciones definidas de las diferentes
bibliotecas de PHP.

Podemos lanzar excepciones manualmente desde nuestro código PHP


mediante la orden throw:

throw new Exception('Mensaje de excepción');

El constructor de la clase Exception dispone de una serie de parámetros


opcionales como un mensaje y un código de error.

Para controlar excepciones utilizamos la estructura de control try/catch. Todo


el código PHP que pueda lanzar una excepción debe incluirse dentro del
bloque try ya que este bloque es el encargado de parar la ejecución del script
y pasar el control de ejecución al bloque catch cuando se produzca esta
excepción. Sintácticamente se puede escribe sí:

try
{
// Código que puede lanzar excepciones
}
catch (Exception $excepcion)
{
// Código para controlar la excepción
}

Hacemos notar que puede existir más de un bloque catch asociado al mismo
bloque try siempre y cuando que cada bloque catch espere capturar un tipo

- 146 -
Curso de Iniciación a PHP: Unidad 2
- El lenguaje de programación PHP 5 -

de excepción distinta. El objeto que se pasa al bloque catch es el objeto que se


ha lanzado con la orden throw.

Vamos a ver un ejemplo sencillo para entender mejor el mecanismo de control


de excepciones de PHP:

if (!isset($variable))
throw new Exception('no existe la variable $variable');
else
echo " <P><P>Si intentamos imprimir la \$variable: $variable";
} catch (Exception $e) {
echo "<BR><FONT color=red>ERROR - se ha producido el error: " .
$e->getMessage() . "</FONT>";
}

echo '<P><P>El bloque try/catch no finaliza la ejecución total del


script.';

En este ejemplo se verifica si existe una variable y si no existe, lanzamos una


excepción de la clase Exception informando un texto de error. Una vez lanzada
la excepción, el bloque catch la captura y la procesa mostrando al usuario el
mensaje que hemos utilizado en el constructor del objeto Exception. Para esto
utilizamos su método getMessage().

Desde Eclipse PDT puedes abrir el proyecto Ejemplo 12 (Excepciones) de la


Unidad 2. Estudia el código fuente y ejecútalo para mostrar en el navegador su
resultado.

Si lo ejecutas, verás que aparece en el navegador la siguiente ventana:

- 147 -
Curso de Iniciación a PHP: Unidad 2
- El lenguaje de programación PHP 5 -

La clase Exception dispone de un conjunto de métodos que almacenan


información sobre la excepción ocurrida:

 getCode(): devuelve el código de excepción que se haya pasado al


constructor. Si no pasamos ninguno, el código por defecto es 0.
 getMessage(): indica el mensaje que se haya usado en el constructor, tal
y como hemos utilizado en el ejemplo anterior.
 getFile(): retorna la ruta completa al archivo PHP que haya lanzado la
excepción.
 getLine(): devuelve el número de la línea del archivo PHP en el que se
ha producido la excepción.
 getTrace(): devuelve una matriz con la traza completa que indica dónde
se ha producido la excepción.
 getTraceAsString(): da la misma información que el anterior método
pero en formato de cadena.

Es importante tener en cuenta que realmente no deberíamos mostrar esta


información al usuario en un entorno real en Internet debido que muestra
información sensible de la aplicación como el control de errores y los hackers
pueden encontrar debilidades en la implementación de nuestro código y
explotarlas. Una solución efectiva es mostrar siempre una página de error muy
básica que informe algo del error ocurrido y darle la opción de volver al inicio o
a la página anterior.

- 148 -
Curso de Iniciación a PHP: Unidad 2
- El lenguaje de programación PHP 5 -

Resumen

Hay que saber al final de esta unidad

 Identificar qué ámbito tienen las variables y


hacer que tengan ámbito local, global o estático
según nos convenga para el desarrollo de la
página web utilizando correctamente las órdenes
global, static y la matriz $_GLOBALS().

 Utilizar variables de variables.

 Reconocer si una variable ha sido definida e


inicializada y acceder a su contenido mediante
las funciones empty() e isset().

 Obtener información sobre el tipo de una variable


con las funciones is_xxx() correspondientes y con
la función gettype().

 Eliminar una variable de la memoria con la


función unset() y asignarle un tipo determinado
con la función settype().

 Separar el contenido numérico del contenido


alfanumérico de una variable con las funciones
doubleval(), intval() y strval().

 Declarar e inicializar constantes con la función


define() e identificar si están definidas con la
función defined().

 Preguntar datos al usuario de una página web


mediante formularios.

 Pasar datos entre diferentes scripts usando un


formulario o un enlace.

 Conservar los espacios de un texto insertado en


el código PHP cuando se devuelve en código HTML
con la función urlencode().

- 149 -
Curso de Iniciación a PHP: Unidad 2
- El lenguaje de programación PHP 5 -

 Aplicar correctamente dentro del código PHP las


estructuras de bifurcación condicional if...
elseif...else y switch...case...default.

 Anidar estructuras condicionales dentro de otras.

 Aplicar correctamente dentro del código PHP las


estructuras de bucle while, do...while, for y
foreach.

 Acceder a ficheros externos desde la página web


actual sirviéndose de las funciones include() y
require().

 Usar y controlar Excepciones en el código PHP


usando la estructura try/catch.

- 150 -

También podría gustarte