-
Plataforma de Teleformacin de IFES Pgina 1 de 240
Programacin en PHPVersion imprimible
Este documento deber servir exclusivamente como material de
apoyo
al contenido del curso interactivo accesible a travs de
internet.
IndiceEvaluacin
inicial......................................................................
4Mdulo I.
Introduccin...............................................................
5
U.D.1. Lenguajes de programacin
Web...................................... 5U.D.2. Qu es
PHP?............................................................
9U.D.3. Qu es
apache?.......................................................
12U.D.4.
Instalacin.................................................................
13Pgina esttica /
dinmica......................................................
21Resumen mdulo
I...............................................................
21Prctica: nuestra primera pgina
web........................................ 21Autoevaluacin mdulo
I........................................................ 22
Mdulo II. Conceptos
bsicos.....................................................25U.D.1.
Panormica del
lenguaje............................................... 25U.D.2.
Variables...................................................................
31U.D.3.
Operadores...............................................................
35U.D.4. Sentencias de
control...................................................
45Resumen mdulo
II..............................................................
58Prctica: conceptos
bsicos....................................................
58Autoevaluacin mdulo
II....................................................... 58
Mdulo III. Conceptos
avanzados................................................ 62U.D.1.
Cadenas...................................................................
62U.D.2.
Arrays......................................................................
73U.D.3.
Funciones.................................................................
83
-
Pgina 2 de 240 Programacin en PHP
U.D.4.
Formularios...............................................................
94U.D.5. Manejo de
ficheros.....................................................105Resumen
mdulo
III............................................................
114Prctica: Conceptos
avanzados..............................................
114Autoevaluacin mdulo
III..................................................... 114
Prctica
intermedia................................................................
118Evaluacin
primera................................................................
119Mdulo IV. PHP y las bases de
datos......................................... 120
U.D.1. Estructura de una aplicacin web con bases de
datos.......... 120U.D.2. Qu es
MySQL?......................................................
122U.D.3. El lenguaje
SQL........................................................
123U.D.4. Funciones de PHP con
MySQL..................................... 154Arquitectura de 3
capas.......................................................
162Resumen mdulo
IV............................................................
162Prctica: PHP y las bases de
datos......................................... 163Autoevaluacin
mdulo
IV.....................................................163Videotutoriales...................................................................
166
Servidor local
XAMPP.......................................................
166Crear una base de
datos................................................... 166
Evaluacin
segunda...............................................................
167Mdulo V. Aplicaciones comunes en
PHP.................................... 168
U.D.1. Fecha y
hora............................................................
168U.D.2. Envo de correo
electrnico.......................................... 175U.D.3.
Sesiones.................................................................
183U.D.4. Control de
acceso......................................................191U.D.5.
Registro de
accesos...................................................
201U.D.6.
Plantillas.................................................................
206Resumen mdulo
V............................................................
215Prctica: Aplicaciones comunes en
PHP................................... 215Autoevaluacin mdulo
V..................................................... 215
Evaluacin
tercera.................................................................
219
-
Plataforma de Teleformacin de IFES Pgina 3 de 240
Prctica
final........................................................................
220Evaluacin
final.....................................................................221Glosario..............................................................................
222FAQ...................................................................................
235Bibliografa..........................................................................
238Enlaces..............................................................................
239
-
Pgina 4 de 240 Programacin en PHP
Programacin en PHP
Evaluacin inicialEste recurso es de tipo Evaluacin.Debe
conectarse a la plataforma para realizar la evaluacin. Recuerde que
lasevaluaciones son obligatorias ya que determinan la nota
final.
-
Plataforma de Teleformacin de IFES Pgina 5 de 240
Programacin en PHP
Mdulo I. IntroduccinU.D.1. Lenguajes de programacin Web
Tipos de pginas web. Estticas y dinmicas.Las primeras pginas que
aparecieron en Internet eran muy sencillas y pocointeractivas. Solo
permitan mostrar informacin (texto o imgenes) y seguir enlaces
anuevas pginas.Para compensar esta falta de interactividad
aparecieron los lenguajes de programacindel lado del cliente (el
navegador de Internet) que permitan una interactividadlimitada. En
esta categora el principal lenguaje es Javascript. Un ejemplo tpico
deprogramacin mediante Javascript es el de un men jerrquico
desplegable.Pero hay multitud de funcionalidades que estn fuera del
alcance de los lenguajes deprogramacin en el cliente. La
interactividad que permiten se reduce prcticamente amejorar la
apariencia de la informacin en la pgina web, y a aadir efectos
visualesque aunque puedan ser curiosos no aportan un valor
aadido.Con la llegada de los lenguajes del lado del servidor
aparecieron las primeras pginasdinmicas. Hoy en da la mayor parte
de Internet est formada por este tipo de pginas.El buscador de
Internet que usamos cada vez que queremos encontrar pginas de
unatemtica es una pgina dinmica. La Plataforma de Teleformacin de
IFES es tambinuna pgina dinmica.
Generacin de pginas webPara poder comprender la diferencia entre
una pgina esttica y una pgina dinmicahay que tener presente el
proceso que sigue una pgina web desde que la solicitamos(haciendo
clic en un enlace del navegador) hasta que la recibimos y se
muestra porpantalla.
-
Pgina 6 de 240 Programacin en PHP
Pgina esttica
Elementos del proceso:
a) Navegador. Aplicacin que permite al usuario recibir y
mostrarpginas web.b) Cliente. En el mbito de Internet, es el
ordenador que estconectado a la red. Su funcin se limita a realizar
peticiones de pginasweb y mostrar los resultados. Para esto hace
uso del Navegador.c) Internet. Red informtica mundial,
descentralizada, formada porla conexin directa entre computadoras u
ordenadores mediante unprotocolo especial de comunicacin.d)
Servidor web (hardware). Ordenador conectado a Internet que
alojapginas web.e) Servidor web (software). Programa que transfiere
pginas web a losclientes mediante el protocolo HTTP.
-
Plataforma de Teleformacin de IFES Pgina 7 de 240
El trmino servidor web se usa indistintamente para denominar
tanto al ordenadorconectado a Internet que aloja pginas web como a
la aplicacin software que gestionala transferencia de pginas
web.
Pgina dinmica
Ahora hay un nuevo elemento, el servidor de aplicacin.
f) Servidor de aplicacin . Es el programa que colabora con el
servidor web paragenerar pginas dinmicas.
A diferencia de las pginas estticas, en las que se guardaba en
el disco durodel servidor web el archivo html, las pginas dinmicas
no estn directamentealmacenadas en el disco duro del servidor web.
En su lugar, hay un programa que seejecuta en el servidor de
aplicaciones, que es el encargado de crear el archivo que
setransferir al cliente.
-
Pgina 8 de 240 Programacin en PHP
Lenguajes de programacin webPara generar pginas web se han usado
a lo largo del tiempo un gran nmero detecnologas. En los comienzos
no haba ningn lenguaje de programacin especfico,por lo que se haca
uso de lenguajes de uso ms general como C, C++, Basic o Pascal.Para
comunicar estos programas con el servidor web se haca uso de la
especificacinCGI (Common Gateway Interface o Pasarela de Interfaz
Comn). Hoy en da an hayaplicaciones que siguen este enfoque, y
comnmente se las conoce como CGI's.Pero el uso de lenguajes de uso
general haca complicado el proceso de construirpginas web dinmicas.
El cdigo se escriba de forma casi artesanal y era difcil demantener
y actualizar. Adems el cdigo que funcionaba en un servidor web poda
nofuncionar en otro o requerir de un esfuerzo grande para su
instalacin. Para colmo detodos los males, por lo general, los CGI
son poco eficientes.
Afortunadamente hoy en da el panorama ha cambiado. El xito de
Internet ha idoacompaado de la aparicin de lenguajes de programacin
web que faciliten todo elproceso. Para especializarse en la creacin
de pginas web dinmicas estos lenguajesintentan cumplir los
siguientes objetivos:
Ser de fcil uso, para permitir una curva de aprendizaje
sencilla. Adaptarse rpidamente a la rpida evolucin de Internet,
ofreciendo continuamentenuevas caractersticas y actualizaciones de
seguridad. Tener una gran comunidad de usuarios que garanticen el
xito del producto.
De hecho han proliferado tanto que ahora hay una gran cantidad
de tecnologasdisponibles, que lanzan los fabricantes con la
intencin de acaparar la mayor cuota demercado posible. Aun as, hay
tres tecnologas mediante las cuales se desarrollan lamayora de los
sitios web.
ASP- Active Server Pagessta es una tecnologa propietaria de
Microsoft. Actualmente est engloba en suestrategia .NET. Su
principal ventaja es su sencillez, adems de una muy buenaintegracin
con otros productos de Microsoft como su entorno de desarrollo .NET
quepermite crear aplicaciones en un tiempo rcord. Se integra muy
bien con el servidorweb de Microsoft, el IIS (Internet Information
Center).
-
Plataforma de Teleformacin de IFES Pgina 9 de 240
JSP - Java Server Pagessta es una tecnologa basada en uno de los
lenguajes de uso general ms populares,Java. Es quizs el ms complejo
de los tres pero a su vez el ms potente. La grancomunidad de
usuarios garantiza la existencia de numerosas herramientas,
librerasde cdigo abierto y bases de conocimiento. Adems se integra
muy bien en el servidorweb mayoritario, Apache, gracias a la
extensin Tomcat.
PHP - PHP Hypertext PreprocessorA su favor tiene el ser una
iniciativa de cdigo abierto, por lo que es mantenido eimpulsado por
una gran comunidad de programadores. Adems es el ms sencillo delos
tres, por lo que atrae a usuarios de muy diferentes procedencias:
programadores enlenguajes de programacin ms generalistas,
diseadores que desean completar susconocimientos...
U.D.2. Qu es PHP?
Un poco de historiaYa hemos visto que PHP responde a las siglas
PHP Hypertext Procesor. Pero, comosurgi?
En el ao 1994 el programador dans-canadiense Rasmus Lerdorf lo
cre para poderprogramar su pgina web personal, que consista
bsicamente en un currculum vtaey un registro del trfico que reciba.
Un ao ms tarde lo public con el nombre dePersonal Home Page Tools.
En 1997 atrajo el inters de dos programadores israelesdel Technion
que rescribieron el intrprete gramatical de este lenguaje creando
la basede la primera versin realmente popular de PHP, PHP 3.
En 1999 rescribieron el lenguaje y lo dotaron de mayor
eficiencia mediante el motorZend, dando lugar a la versin PHP
4.
La versin 5 de este lenguaje, que incluye un sistema novedoso,
el PDO (Objetosde Informacin de PHP o PHP Data Objects) y mejoras
utilizando las ventajas queprovee el nuevo Zend Engine 2. Los
cambios que incorpora la versin son notables, yposicionan a PHP
como un lenguaje dinmico muy potente.
-
Pgina 10 de 240 Programacin en PHP
Mientras se escriben estas lneas, se est trabajando en la versin
6 de PHP, aunquetodava no hay una fecha prevista para su
lanzamiento.
Caractersticas de PHPA nivel tcnico se pueden destacar los
siguientes aspectos:
Es un lenguaje interpretado (tambin llamado de tipo script). La
sintaxis es similar a los lenguajes de programacin estructurada
ms
populares, como C, por lo que resulta muy sencilla la transicin
desde otroslenguajes.
En el cdigo fuente se mezclan habitualmente fragmentos de cdigo
PHPcon el cuerpo de la pgina HTML, generando dinmicamente el
contenido dela misma.
Dispone de una gran cantidad de mdulos (tambin llamados
extensiones)que amplian su funcionallidad.
Es un lenguaje portable, es decir, puede ser ejecutado en la
mayora de lossistemas operativos. Tambin existen mdulos interprete
para casi todoslos servidores web, y en muchos de ellos viene ya
instalado en el paquetebsico.
Soporta algunas caractersticas de la programacin orientada a
objetos. Se integra bien con otras tecnologas, como XML,
Javascript... Ofrece conexin a numerosas bases de datos en modo
nativo: MySQL,
Postgres, Oracle, SQL Server...
Un uso comn es dotar a una aplicacin web de un servidor de base
de datos, en elmundo PHP y Apache sta es MySQL, lo que en conjunto
se ha denominado como lasolucin LAMP (Linux, Apache, MySQL y
Php).
-
Plataforma de Teleformacin de IFES Pgina 11 de 240
Durante este curso se recomienda el uso de Xampp 1.7.3, un
servidor web local quepodr instalar en su ordenador, que viene con
Apache, la versin 5.3.1 de PHP y laherramienta grfica phpMyAdmin
3.2.4 para gestionar bases de datos MySql. Msadelante veremos cmo
descargar, instalar y configurar este software libre.
Por qu PHP?Hay muchas razones para aprender a usar PHP:
Como ya se ha dicho con anterioridad el aprendizaje de este
lenguaje esmuy sencillo.
No obstante PHP ofrece muchas caractersticas avanzadas al
alcance delprogramador experto.
Es seguro y robusto, cumpliendo con las exigencias de cualquier
entornoprofesional.
Es gratuito (open source), por lo que ha atrado a una gran
comunidadde usuarios. Todos contribuyen de una u otra forma. Los
desarrolladores
-
Pgina 12 de 240 Programacin en PHP
expertos arreglando errores y aportando mejoras, los usuarios
testeando elcdigo e intercambiando ideas que podran mejorar el
lenguaje.
Existe una gran cantidad de aplicaciones de cdigo abierto que
estndesarrolladas en PHP. Conociendo PHP se tiene siempre la
posibilidad deampliarlas, personalizarlas y darles el mantenimiento
adecuado.
La prctica totalidad de los proveedores de alojamiento de pginas
webofrece soporte para este lenguaje y acceso a una base de datos
MySQL.
U.D.3. Qu es apache?Apache es un producto software desarrollado
por una asociacin de carcter nolucrativo, la Apache Software
Foundation (ASF). La ASF no solo desarrolla el servidorHTTP Apache,
tambin engloba mltiples proyectos, algunos como extensiones
delservidor web y otros independientes.Dentro de toda la gama de
servidores web, Apache es sin duda el que mejorconsiderado est por
parte de los usuarios. La prueba es que cerca del 60% de lossitios
web estn alojados en servidores de este tipo (estadsticas de enero
de 2011
dehttp://news.netcraft.com/archives/web_server_survey.html).
Apache se ha ganado la confianza de los usuarios principalmente
debido a lassiguientes razones:
Es muy eficiente, robusto y seguro. Dispone de caractersticas
avanzadas como mensajes de error altamente
configurables, contenido negociable, autentificacin... Est
disponible para la mayora de las Plataformas, incluyendo Windows
y
Linux. Es software libre, con las ventajas que esto supone. No
solo es que sea
gratuito, sino que adems dispone de una numerosa comunidad de
usuariosque contribuyen a su continua mejora.
La mayor objecin que se le ha puesto a Apache es que no dispone
de un modo grficoamigable para su configuracin, por lo que su
aprendizaje puede suponer ms esfuerzoque el de otros
servidores.
Durante este curso se propone la utilizacin de Apache como
servidor al que se leaade como extensin el interprete de PHP.
-
Plataforma de Teleformacin de IFES Pgina 13 de 240
Otros servidores webLa ventaja de este servidor es que dispone
de un interfaz grfico amigable que hacems sencilla su instalacin,
configuracin y despliegue de sitios web. Existen otrosservidores,
que, o bien son pequeos productos con pocas caractersticas, o bien
sondesarrollos de grandes empresas que no son accesibles al pblico
en general.
U.D.4. InstalacinLas pginas con cdigo PHP son archivos que usan
la extensin .php . Como hemosvisto, para poder visualizarlas,
tienen que estar alojadas en un servidor web remoto.Esta solucin no
es factible para practicar con el lenguaje ya que tiene las
siguientesdesventajas:
Hay que contratar un servicio de alojamiento, lo que puede
resultar costoso. Hay dependencia de la conexin a Internet.
Gestionar los archivos que subimos al servidor a travs de FTP es
algo
engorroso y lento, por lo que no se pueden hacer pruebas de
cdigo conagilidad.
La solucin no puede ser ms sencilla. Haremos que nuestro
ordenador acte comoservidor web. A esta forma de trabajo se le
llama coloquialmente desarrollar en local.
Dependiendo de las habilidades de cada uno en el manejo e
instalacin deaplicaciones un poco ms complejas, como es el caso que
nos lleva, del servidorApache y su mdulo para PHP, se necesitara un
curso para todo ello. Apache se hacriticado en este aspecto de no
contar con una instalacin y/o configuracin grfica/amigable al
usuario, tanto novel como experto.
Afortunadamente existen en el mercado soluciones que integran
todo lo quenecesitamos para trabajar, y adems disponen de los
llamados instaladoresautomticos, que nos dejan preparado y, lo ms
importante, configurado de manerahomognea el entorno de desarrollo
que vamos a emplear en todo este curso.
De entre los instaladores disponibles, hemos elegido una solucin
probada y que cubrevarios sistemas operativos (Windows, GNU/Linux y
Mac), como dijimos anteriormente,se llama XAMPP y la versin ser la
1.7.3. En el curso vamos a usar la versinpara Windows, que ser la
referente por facilidad de uso para los usuarios menosavanzados,
aunque veremos algunas pantallas de Linux como alternativa
(99%idnticas).
-
Pgina 14 de 240 Programacin en PHP
En Linux y otros sistemas, podemos usar XAMPP o nos instalaremos
Apache+PHP+MySQL por nuestra cuenta. Esto ltimo para usuarios
avanzados, dado que hay queconfigurar el sistema, aunque
ltimamente, en algunas distribuciones de Linux es muysencillo que
el sistema nos instale y configure todo por si mismo bajo
demanda.
XAMPP en la versin elegida instala las siguientes versiones de
Apache, Php y Mysql:
Apache: versin 2.2.14 Php: versin 5.3.1 PhpMyAdmin: versin
3.2.4
Requerimientos:
64Mb de memoria RAM 58Mb de disco Windows 98, ME, XP
Home.Windows NT,2000,XP Professional,GNU/
Linux,MacOS.
Hay que tener en cuenta que XAMPP evoluciona muy rpidamente y
que en elmomento de realizar el curso puede encontrarse en una
versin posterior. De todasformas es de esperar que la instalacin
siga siendo muy similar o igual.
Descargamos la versin deseada segn el sistema operativo que
tengamos desde lasdirecciones siguientes:
Windows: http://www.apachefriends.org/en/xampp-windows.html
Linux: http://www.apachefriends.org/en/xampp-linux.html
Instalacin paso a paso sobre Windows1. Ejecutamos el fichero
descargado. Nos aparecer la siguiente ventanapreguntndonos dnde
instalar XAMPP:
-
Plataforma de Teleformacin de IFES Pgina 15 de 240
Le dejamos los valores que trae y hacemos clic en Install. En
C:\ crear el directorioxampp.
2. Una vez instalado, entramos en la carpeta C:\xampp y
ejecutamos el archivo xampp-control. Nos mostrar la siguiente
ventana:
-
Pgina 16 de 240 Programacin en PHP
3. Para poner en funcionamiento el servidor apache, haremos clic
en el botn Start quetiene a su derecha. Tambin haremos clic en el
botn que hay a la derecha de MySql.
Si todo ha ido bien, nos aparecer la siguiente pantalla:
-
Plataforma de Teleformacin de IFES Pgina 17 de 240
La cual nos muestra el texto Running, lo que indica que tanto
Apache como Mysqlestn en funcionamiento.
Mientras estemos utilizando PHP y/o MySql no debemos cerrar esta
ventana. Cuandoqueramos dejar de usar XAMPP no se debe terminar
haciendo clic en el botn cerrarde la ventana, ya que esto lo que
hace es minimizar el programa junto al reloj que hayabajo a la
derecha. Deberemos hacer clic en el botn Exit. Si XAMPP se ha
quedadominimizado, al hacer clic sobre el icono, se muestra la
ventana de control.
4. Vamos a comprobar que Apache est funcionando, para ello vamos
a ir a la direccinhttp://localhost con nuestro navegador favorito y
deberamos ver la siguiente pgina:
-
Pgina 18 de 240 Programacin en PHP
Esta pgina web est siendo servida por Apache y PHP (mira la
direccin en elnavegador). Pulsaremos en el idioma espaol (Spanish )
para continuar.
5. Pulsaremos en el enlace Estado para probar toda la instalacin
definitivamente:
-
Plataforma de Teleformacin de IFES Pgina 19 de 240
Deberamos tener todos los componentes con el estado Activado
(color verde) menoslos tres ltimos (color rojo).
Los scripts que creemos deben estar guardados en la carpeta
htdocs. Dentro deesta carpeta podremos crear ms carpetas. Por
ejemplo, si tengo la ruta
c:\xampp\htdocs\ejercicios\ejercicio1.php, para probar mi script,
en el navegador, y una vezfuncionando XAMPP, escribir lo siguiente
http://localhost/ejercicios/ejercicio1.php ynuestro navegador deber
mostrar lo que haga nuestro script.
Instalacin paso a paso sobre Linux1. Entre como administrador
root en su sistema Linux
Su
2. Descomprima el archivo que ha bajado en /otp
tar xvfz xampp-linux-1.7.3a.tar.gz C /opt
-
Pgina 20 de 240 Programacin en PHP
Use slo este comando para instalar XAMPP.No use ninguna
herramienta de Windows paradescomprimir el archivo ya que no
funcionar.
Si tiene una versin anterior, sta ser sobrescrita.
Esto es todo. XAMPP ya est instalado en el siguiente directorio
/opt/lampp
3. Para que XAMPP empiece a funcionar, escriba el siguiente
comando:
/opt/lampp/lampp start
y en su pantalla deber aparecer lo siguiente:
Starting XAMPP 1.7.3a...LAMPP: Starting Apache...LAMPP: Starting
MySQL...LAMPP started.
Lo que indica que Apache y MySql estn ejecutndose.
Para detener XAMPP deberemos escribir el siguiente comando:
/opt/lampp/lampp stop
y en la pantalla deber aparecer el siguiente mensaje:
Stopping LAMPP 1.7.3a...LAMPP: Stopping Apache...LAMPP: Stopping
MySQL...LAMPP stopped.
4. Vamos a comprobar que est funcionando. Para ellos
escribiremos en nuestronavegador favorito: http://localhost (XAMPP
debe estar ejecutndose).Si todo ha ido bien, deberamos ver la
siguiente pantalla
-
Plataforma de Teleformacin de IFES Pgina 21 de 240
Los scripts que creemos deben estar guardados en el siguiente
directorio /opt/lampp/htdocs/. Dentro de ese directorio podremos
crear ms directorios. Por ejemplo, sitengo la ruta
/opt/lampp/htdocs/ejercicios/ejercicio1.php, para probar mi script,
enel navegador, y una vez funcionando XAMPP, escribir lo siguiente
http://localhost/ejercicios/ejercicio1.php y el navegador deber
mostrar lo que haga nuestro script.
Pgina esttica / dinmicaEste recurso es de tipo Multimedia.Tiene
que conectarse a la plataforma para acceder a este recurso.
Resumen mdulo IEste recurso es de tipo Multimedia.Tiene que
conectarse a la plataforma para acceder a este recurso.
-
Pgina 22 de 240 Programacin en PHP
Prctica: nuestra primera pgina webEste recurso es de tipo
Prctica.Tiene que conectarse a la plataforma para acceder a este
recurso.
Autoevaluacin mdulo I
Pregunta 1:Javascript es un lenguaje de programacin que se
ejecuta en la mquina cliente.
Verdadero Falso
Respuesta correcta: Verdadero
Pregunta 2:Las pginas dinmicas se almacenan en el disco duro del
servidor y cuando son
solicitadas posteriormente, se recuperan y transfieren sin ningn
procesadoprevio.
Verdadero Falso
Respuesta correcta: Falso
Pregunta 3:Se puede programar una pgina web dinmica en el
lenguaje de uso general C++
y comunicarla con el servidor web mediante la especificacin CGI.
Verdadero Falso
Respuesta correcta: Verdadero
Pregunta 4:PHP se encuentra actualmente en su versin 6.
Verdadero Falso
Respuesta correcta: Falso
-
Plataforma de Teleformacin de IFES Pgina 23 de 240
Pregunta 5: PHP no permite interconectividad de forma nativa con
bases dedatos.
Verdadero Falso
Respuesta correcta: Falso
Pregunta 6:Una de las razones del xito de PHP es que es un
producto de pago y por lo tanto
el usuario puede reclamar nuevas caractersticas. Verdadero
Falso
Respuesta correcta: Falso
Pregunta 7:La solucin LAMP consiste en un servidor web con:
Linux, Apache, MySQL y
PHP. Verdadero Falso
Respuesta correcta: Verdadero
Pregunta 8:Instalar un servidor Apache es, por lo general, un
proceso complejo que slo est
al alcance de usuarios expertos. Verdadero Falso
Respuesta correcta: Verdadero
Pregunta 9:La direccin base en la que se pueden ver las pginas
que sirve nuestro servidor
Apache en local es http://localhost Verdadero Falso
Respuesta correcta: Verdadero
Pregunta 10:
-
Pgina 24 de 240 Programacin en PHP
Las pginas web que queramos alojar en nuestro servidor de Apache
en local
las deberemos poner por debajo de C:\xampp\htdocs\ (donde
C:\xampp es eldirectorio en el que hemos intalado Apache).
Verdadero Falso
Respuesta correcta: Verdadero
-
Plataforma de Teleformacin de IFES Pgina 25 de 240
Programacin en PHP
Mdulo II. Conceptos bsicosU.D.1. Panormica del lenguaje
En este mdulo y en el siguiente se van a describir los elementos
y estructuras dellenguaje. Quien est familiarizado con la
programacin estructurada encontrar que lamayora le son familiares.
Concretamente la sintaxis de PHP es heredada del lenguajeC, Java y
Perl. Si ya conocemos C o Java entonces tenemos el 90% del
caminorecorrido, en lo que a sintaxis se refiere.
Las explicaciones vienen acompaadas por ejemplos para facilitar
su comprensin.Todos los ejemplos pueden ser probados tal y como se
explica en la prctica delmdulo I. Para ello hay que crear un
fichero con un editor de textos, como puede ser elBloc de Notas
(ficheros planos), dndole un nombre y guardndolo con extensin
.phpen la carpeta de publicacin C:\xampp\htdocs\practicasPHP.
Puedes utilizar Notepad++, un editor de textogratuito y con
buenas prestaciones, que te permiteguardar los archivos con
extensin .php. Lo puedesdecargar desde la siguiente direccin
http://notepad-plus-plus.org/downloads
Los resultados de los programas que hagamos se visualizarn a
travs del navegador,escribiendo en la barra de direcciones la URL
de nuestra pgina en local.
http://localhost/practicasPHP/miprograma.php
Vamos a pasar directamente a dar una visin general del
lenguaje.
Bloques de cdigo PHPUna pgina web en PHP generalmente contiene
dos tipos de cdigo: cdigo HTML ycdigo PHP. El cdigo de PHP que va a
procesar el interprete puede estar dentro deuna de las siguientes
etiquetas:
-
Pgina 26 de 240 Programacin en PHP
...
Nosotros vamos a usar la primera (es la ms usual), las dos
ltimas hay que activarlasexprsamente en la configuracin de PHP.
Ejemplo 2.1.1. Aqu podemos ver una pgina muy sencilla. Tiene
tres bloques decdigo: al comienzo la cabecera HTML, despus un
fragmento en PHP y finalmente elcierre de la pgina otra vez en
HTML.
En un fichero PHP pueden alternarse tantos bloques HTML con
bloques PHP comose quiera, siempre que estos ltimos estn abiertos y
cerrados por las etiquetasadecuadas.
Sentencias en PHPUna sentencia es una instruccin bsica que
realiza alguna accin. Tambin se lellama a veces lnea de cdigo,
aunque estrictamente hablando no tiene que ocuparexactamente una
lnea en el fichero.
-
Plataforma de Teleformacin de IFES Pgina 27 de 240
Es imprescindible que las sentencias estn bien diferenciadas.
Para ello en PHP todasentencia debe ser terminada con un punto y
coma " ; ". La nica excepcin a esto esla ltima sentencia antes del
fin de un bloque de cdigo PHP, indicado por "?> ".
Ejemplo 2.1.2. Los siguientes bloques de cdigo estn bien
formados, ya que todas lassentencias, salvo la ltima, terminan con
un punto y coma:
Las instruccines echo y print()Una de las instrucciones bsicas
de PHP es la instruccin echo . Se limita a interpretarel texto que
se pone a continuacin e insertarlo en la pgina web. Una forma
alternativade conseguir esto es haciendo uso de la etiqueta:
La funcin print() tambin es equivalente a echo .
Ejemplo 2.1.3. Los siguientes bloques de cdigo PHP son
equivalentes y por lo tantoproducen el mismo resultado:
Ejemplo 2.1.4. En muchas ocasiones querremos insertar un salto
de lnea en la pginade salida. En HTML el salto de lnea se marca con
la etiqueta , por lo que paraconseguir este resultado lo haremos de
forma similar a como se hace a continuacin:
-
Pgina 28 de 240 Programacin en PHP
echo "Esta es la segunda lnea.";
?>
No se debe usar el formato corto de etiquetascuando se
desarrollen aplicaciones o bibliotecas conintencin de
redistribuirlas, o cuando se desarrollepara servidores que no estn
bajo nuestro control,porque puede ser que el formato corto de
etiquetasno est soportado en el servidor. Para generarcdigo
portable y redistribuble, asegrate de nousar el formato corto de
etiquetas.
Funciones en PHPEn PHP hay dos tipos de funciones, las que estn
definidas por el propio lenguaje y lasque puede crear a medida el
programador. Estas ltimas las veremos en la U.D.3. delmdulo
III.Pero en los trozos de cdigo que vienen a continuacin nos
encontraremos que parahacer acciones complejas deberemos usar las
funciones predefinidas del lenguaje PHP.stas se caracterizan por un
identificador seguido por un parntesis,dentro del cualponemos los
parmetros que tenemos que pasarle a la funcin.
A medida que las vayamos usando, iremos describiendo las
funciones definidas. Unejemplo de este tipo de funciones que hemos
visto ya es la instruccin print() .
Comentarios en PHPLos cometarios son ignorados por el interprete
a la hora de generar la pgina. Detodas formas cumplen una funcin
esencial, aumentar la legibilidad del cdigo, parasu posterior
mantenimiento por nosotros o por otra persona. Con los
comentariosdescribiremos la funcin de determinados fragmentos de
cdigo.
En PHP hay tres formas de poner comentarios:
-
Plataforma de Teleformacin de IFES Pgina 29 de 240
que ocupa varias lneas */# Esta forma de poner comentarios de
una lnea se usa menos
?>
Hay que tener en cuenta que si bien los comentarios ayudan a
comprender el cdigoy ,por lo tanto ,facilitan el mantenimiento del
cdigo por nuestra parte o por la de otraspersonas. Un abuso de los
mismos puede hacer difcil distinguir a primera vista elpropsito del
cdigo. Lo ideal es escribir un cdigo limpio que resulte lo ms
legibleposible y limitar el uso de comentarios a aquellas ocasiones
en los que haya que haceruna aclaracin imprescindible.
Tambin es habitual insertar anotaciones en el cdigo a medida que
se estconstruyendo, cuando an no ha tomado su forma final. Este
tipo de comentarios esconveniente eliminarlo en cuanto dejan de ser
necesarios.
Hay dos palabras que se usan habitualmente en los comentarios
durante el desarrollo.
No est de ms recordar que los comentarios son parte del cdigo
PHP, por lo quehan de estar en bloques de cdigo PHP (es decir,
abiertos por la etiqueta " ".
Errores en PHPSin lugar a dudas, cuando programemos, cometeremos
errores, como olvidar ponerun punto y coma al final de una
instruccin, o no cerrar adecuadamente unas comillas.Cuando vayamos
a intentar ver el resultado en el navegador aparecer un mensaje
deerror (o varios) similar a ste.
-
Pgina 30 de 240 Programacin en PHP
El mensaje est en ingls y es muy probable que no nos oriente de
qu es lo queest fallando. Pero lo importante es que s que nos
muestra dnde (en qu lnea) estfallando, por lo que podremos
dirigirnos a ella y arreglar el fallo.
Inhibir erroresEn ocasiones no querremos que el error se vea por
pantalla. Para conseguir estopondremos el smbolo arroba "@" antes
de la sentencia en la que se produce el fallo.
Ejemplo 2.1.5. El primer trozo de cdigo muestra un mensaje de
error al intentar abrirun archivo que no existe. En cambio en el
segundo fragmento se hace uso del smbolo@ para evitar que dicho
error se muestre por pantalla.
-
Plataforma de Teleformacin de IFES Pgina 31 de 240
?>
U.D.2. Variables
Datos en PHPEn PHP definimos los datos con los que vamos a
trabajar como variables. Una variableno es ms que una estructura de
datos cuyo valor puede cambiar durante la ejecucindel programa. PHP
trabaja con cuatro tipos de datos sencillos: integer (nmero
entero),float (nmero con decimales), string (cadena de texto) y
boolean (verdadero o falso).
El separador de decimales en PHP es el punto, como en la mayora
de los lenguajes deprogramacin.
Ejemplo 2.2.1. Veamos algunos ejemplos de los diferentes tipos
de datos. Como seobserva, los tipos string se escriben entre
comillas, que pueden ser simples o dobles.
11 //esto es un dato de tipo integer43.95 //esto es un dato de
tipo double"Cdigo postal" //esto es un dato de tipo string'08080'
//esto tambin es un dato de tipo stringTRUE // esto es un dato de
tipo boolean
Para especificar un literal boolean, use alguna de las palabras
clave TRUE o FALSE.Ambas son insensibles a maysculas y
minsculas.
Ejemplo 2.2.2. Si queremos escribir un dato que contenga
comillas dobles loescribiremos encerrado entre comillas simples. Y
si queremos escribir un dato quecontenga comillas simples lo
encerraremos en comillas dobles.
'Leopoldo Alas "Clarin" fu un gran escritor...'
Nombre de variablesTodas las variables en PHP se distinguen por
comenzar con el smbolo del dolar,"$", seguido del nombre de la
variable. El nombre de una variable ha de empezar
-
Pgina 32 de 240 Programacin en PHP
necesariamente por una letra o el smbolo guin bajo "_" seguido
por cualquiercombinacin de nmeros, letras o guiones bajos.
Ejemplo 2.2.3. Diferentes ejemplos de nombres de variables,
vlidos y no vlidos.
El tipo de una variable usualmente no es declarado por el
programador; en cambio, esdecidido en tiempo de ejecucin por PHP
dependiendo del contexto en el que es usadala variable.
En el siguiente cdigo podemos comprobar que las variables
$numero1 y $numero2 sehan definido como string (van entre
comillas), pero como la operacin que realizamosentre ellas es una
suma, PHP entienda que se tiene que tratar de nmeros, por ello enla
variable $resultado almacena 30.
Otros lenguajes de programacin usan el signo mspara concatenar
cadenas. No es el caso de PHP,el cual utiliza el punto. Si
cambiamos el signo mspor el punto, veremos que el resultado en este
casoser 1020. El manejo de cadenas se estudiar msadelante.
-
Plataforma de Teleformacin de IFES Pgina 33 de 240
Es importante tener en cuenta que en los nombresde variables se
distingue entre maysculas yminsculas.
Ejemplo 2.2.4. Mediante este ejemplo se puede ver que PHP
distingue entremaysculas y minsculas en los nombres de
variables.
A pesar de que tenemos gran libertad a la hora de poner nombres
a las variables, esrecomendable seguir los siguientes consejos para
que el cdigo resulte ms legible:
Usar nombres de variable que tengan significado. No usar nombres
de variable demasiado largos (12-16 caracteres deberan
ser suficientes en la mayora de los casos). No usar como nombre
de variable palabras clave de PHP.
Ejemplo 2.2.5. Los siguientes nombres de variable no son
recomendables.
-
Pgina 34 de 240 Programacin en PHP
Asignacin de datos a variablesComo se ha ido viendo en los
ejemplos, a las variables se les asigna un dato medianteel smbolo
igual "=".
Ejemplo 2.2.6. Asignacin de un dato de tipo cadena a una
variable.
Hay que tener en cuenta que PHP es un lenguaje poco tipado, Las
variables no tienenun tipo de datos predefinido, el tipo vendr dado
segn el contenido de la variable o elcontexto donde se trate. Este
es el punto mas dbil del lenguaje, aunque le aporta unasencillez y
flexibilidad propias.
ConstantesLas constantes son una manera de asignar a un
identificador valores simples que novan a variar. La declaracin de
una constante se realiza mediante la funcin define() .
El nombre de la constante debe seguir las mismas reglas que las
variables, solo que nolleva delante el smbolo del dlar, "$", ya que
no es una variable. Una prctica habituales poner los nombres de las
constantes en maysculas.
Ejemplo 2.2.7. Mostramos a continuacin declaraciones de
constantes. Algunas soncorrectas y otras incorrectas.
-
Plataforma de Teleformacin de IFES Pgina 35 de 240
Ejemplo 2.2.8. Sabemos a ciencia cierta que el nmero PI no va a
cambiar. En lugarde tener que teclearlo varias veces a lo largo del
cdigo podemos definir una constantecon el identificador PI.
Existen constantes predefinidas por el ncleo de PHP. Pero por el
momento no lasvamos a utilizar.
Si en mi cdigo coincide una constante que yo defina con otra
predefinida por PHP, nome mostrara el valor indicado en la funcin
define(), si no el valor que PHP le tieneasignado.
Ejemplo 2.2.9. En el siguiente fragmento de cdigo el valor
mostrado no ser Espaa,mostrar 5.3.1 que es el valor predefinido por
PHP para esa constante. Que es laversin que estoy ejecutando de
PHP.
U.D.3. OperadoresLos operadores son utilizados para realizar
clculos y manipular datos en el mbito deuna expresin. Las
expresiones ms comunes que conocemos, como la
multiplicacin,implican la participacin de dos operandos (los datos)
y un operador (el smbolo dela multiplicacin). En PHP puede
haber:
Operadores unarios: La expresin manipula un nico dato.
Operadores binarios: La expresin manipula dos datos. Operadores
ternarios: La expresin manipula tres datos.
-
Pgina 36 de 240 Programacin en PHP
Ejemplo 2.3.1. Los datos pueden ser introducidos directamente o
estar almacenadosen variables. El resultado de la operacin se suele
asignar a una variable, aunquepuede formar parte de una expresin
mayor. Esta variable a la que se asigna elresultado puede ser parte
de la expresin.
Lo habitual es clasificar a los operadores segn el tipo de
clculo o manipulacin querealizan.
Operadores aritmticosEn PHP hay cinco operadores que realizan
operaciones matemticas entre dos datos yun operador unario, el
signo de negacin.
-
Plataforma de Teleformacin de IFES Pgina 37 de 240
Ejemplo 2.3.2. Aqu se experimenta con varias operaciones
aritmticas.
-
Pgina 38 de 240 Programacin en PHP
$z = 5 % 3;echo $z;echo "";
echo "El resultado de cambiar el signo a la variable $z es ";$z
= -$z;echo $z;
?>
Operadores de comparacinEn el siguiente mdulo se tratar de las
sentencias de control. stas utilizan elresultado de unas
expresiones especiales para decidir cules sern las instruccionesque
ejecutarn luego. Las expresiones bsicas que utilizan son el
resultado de unacondicin. Este resultado solo puede tomar dos
valores: verdadero o falso.
PHP tiene dos constantes predefinidas para designar los valores
verdadero y falso,que son, como caba esperar, TRUE y FALSE. Se
pueden usar tambin en minsculas,aunque conviene recordar que la
prctica habitual en programacin es usar lasconstantes en
maysculas.
Cuando el resultado es verdadero la expresin de comparacin
devolver TRUE, si laevaluacin de la expresin de comparacin es falsa
PHP devolver como resultadoFALSE.
-
Plataforma de Teleformacin de IFES Pgina 39 de 240
A nivel interno PHP no almacena TRUE o FALSE, sino que
interpreta el valor 0 comofalso y el 1 como verdadero (realmente
interpreta como verdadero cualquier valor quesea diferente de 0.
Por ejemplo, en PHP el valor 5 es interpretado como verdadero
).
Ejemplo 2.3.3. En este ejemplo aparece la construccin if ...
else que se ver en laproxima unidad didctica.
-
Pgina 40 de 240 Programacin en PHP
echo "";
echo "Es 5 menor que 3? ";if (5 < 3) { echo "TRUE";}else {
echo "FALSE";}echo "";
echo "Es 5 mayor que 3? ";if (5 > 3) { echo "TRUE";}else {
echo "FALSE";}
?>
Operadores lgicosLos operadores lgicos sirven para relacionar
los resultados de condiciones, es decir,combinan los resultados de
valores TRUE y FALSE. Son tiles para representarexpresiones del
tipo Es cierto que Madrid es la capital de Espaa y que a la
vezMadrid es la ciudad ms poblada de Espaa?
-
Plataforma de Teleformacin de IFES Pgina 41 de 240
Ejemplo 2.3.4. Al conjunto de combinaciones de valores que
pueden tomar losoperandos y el resultado de la operacin se le
conoce en lgica como tabla de verdad.En el siguiente ejemplo
construiremos la tabla de verdad del operador AND. De formasimilar
se podra construir la tabla de verdad del resto de los
operadores.
-
Pgina 42 de 240 Programacin en PHP
echo "TRUE ";}else {echo "FALSE";}echo "";
echo "FALSE | TRUE | ";if (FALSE && TRUE) {echo "TRUE
";}else {echo "FALSE";}echo "";
echo "FALSE | FALSE | ";if (FALSE && FALSE) {echo "TRUE
";}else {echo "FALSE";}
?>
Operador de unin de cadenasEn la mayora de ejemplos anteriores,
cuando hemos querido imprimir un textopor pantalla que estaba
formado por varios fragmentos, hemos tenido que usaruna instruccin
echo por cada uno de los fragmentos. El operador de unin de
cadenasnos permite unir los fragmentos para, por ejemplo, usar una
sola instruccin echo.
-
Plataforma de Teleformacin de IFES Pgina 43 de 240
Ejemplo 2.3.5. Se pueden concatenar directamente cadenas de
texto con datos de tipoentero. Los datos que se concatenan se
pueden introducir directamente o extraer devariables.
Operadores de asignacinEn la unidad didctica sobre variables
hemos visto el operador bsico de asignacin,que es el smbolo igual
"=". Pero hay otros operadores que permiten hacer unaoperacin y una
asignacin a la vez y, por lo tanto, producen un cdigo mscomprimido.
El uso de estos operadores es desaconsejable para el
programadorprincipiante ya que puede llevar a un cdigo poco legible
y como consecuencia aasignaciones errneas.
Los operadores de asignacin comprimidos y sus equivalencias
son:
-
Pgina 44 de 240 Programacin en PHP
Precedencia de operadoresUn ltimo aspecto que conviene mencionar
es, qu pasa cuando en una expresincompleja aparece ms de un
operando? En ese caso, qu operaciones se evaluanantes?.
Cuando hay expresiones complejas con ms de un operando, hay unos
que se evaluanantes de otros, con el siguiente orden, teniendo en
cuenta que los de arriba se evalanantes que los de abajo, y que los
de la misma fila tienen igual precedencia (se evalande izquierda a
derecha):
En cualquier caso podemos alterar la precedencia mediante la
inclusin de partentesisalrededor de las expresiones. De hecho es
muy recomendable hacerlo incluso aunque
-
Plataforma de Teleformacin de IFES Pgina 45 de 240
exista una regla de precedencia que produzca el mismo resultado,
para dar mayorclaridad al cdigo.
Ejemplo 2.3.6. La multiplicacin tiene precedencia sobre la suma
por lo que, sinparntesis, en la expresin 2 + 5 * 4 se evala primero
5 * 4 y luego se le suma 2.
U.D.4. Sentencias de controlHasta ahora solo hemos visto
instrucciones muy sencillas. Adems lo nicoque podamos hacer con
ellas es ejecutarlas secuencialmente. Pero, tenemosherramientas
para elegir una alternativa entre dos? O para escribir 5 veces un
textopor pantalla? Para hacer frente a estas situaciones se
incluyen las sentencias decontrol.
Estructuras condicionales.
Instruccin ifLas instrucciones condicionales permiten ejecutar
diferentes fragmentos de cdigoen funcin del resultado de una
expresin condicional. La instruccin bsica es if . Lasintaxis
es:
if (condicin ) {Cdigo a ejecutar si la condicin es cierta}
-
Pgina 46 de 240 Programacin en PHP
Cuando el cdigo a ejecutar si la condicin es cierta es una sola
sentencia sepueden omitir las llaves "{" "}". En cualquier caso es
preferible no omitirlos ya que danmayor claridad a cules son
exctamente las sentencias que se ejecutan en el caso decumplirse la
condicin.
Ejemplo 2.4.1. Las dos construcciones siguientes son
equivalentes, aunque espreferible siempre usar la primera por
claridad:
Ejemplo 2.4.2. Veamos la diferencia entre poner llaves para
encuadrar un bloque detexto entre llaves y no hacerlo:
Instruccin else En muchos casos no nos bastar con ejecutar un
cdigo si ese cumple la condicinsino que querremos elegir entre dos
opciones alternativas y mutuamente excluyentes.
-
Plataforma de Teleformacin de IFES Pgina 47 de 240
En estos casos la sentencia if se completa con un bloque de
cdigo que se ejecuta solosi es falsa la condicin:
if (condicin ) { Cdigo a ejecutar si la condicin es cierta}else
{ Cdigo a ejecutar si la condicin es falsa}
Ejemplo 2.4.3.
Instruccin else ifTambin puede suceder que queramos encadenar
diferentes condiciones. Para ellose puede encadenar una sentencia
else con un nuevo condicional. A su vez la nuevasentencia if puede
ser completada por un else.
if (condicin1 ) { Cdigo a ejecutar si la condicin1 es cierta}
else if (condicin2 ) { Cdigo a ejecutar si la condicin1 es falsa y
la 2 cierta }else { Cdigo a ejecutar si ambas condiciones son
falsas}
-
Pgina 48 de 240 Programacin en PHP
Ejemplo 2.4.4. Se pueden encadenar varias sentencias else if
como se ve en elsiguiente programa:
Instruccin switchEn el caso anterior se elega entre varias
opciones alternativas y excluyentes. PHPnos ofrece una instruccin
que nos facilita la tarea, siempre que haya que elegir entrevarias
posibles. A diferencia de la instruccin if , si queremos que se
ejecuten variasinstrucciones, no ser necesario englobarlas entre
llaves "{" "}". La ejecucin seguirhasta que encuentre el siguiente
break.
switch (expresion ) { case etiqueta1 : Cdigo a ejecutar si
expresin == etiqueta1 break; case etiqueta2 : Cdigo a ejecutar si
expresin == etiqueta1 break; case default : Cdigo a ejecutar si no
se verifica ninguna etiqueta break; }
-
Plataforma de Teleformacin de IFES Pgina 49 de 240
El bloque de cdigo detras de default se ejecuta en el caso de
que no se hayaverificado ninguno de los casos anteriores. Terminar
el bloque de instruccionesdefault con una instruccin break es
opcional, pero es recomendable ya que mejora lalegibilidad.
Ejemplo 2.4.5. Puede haber tantas sentencias case como sea
necesario.
Ejemplo 2.4.6. Aqu se puede observar dos estrategias que nos
pueden ser tilesen algunos casos. La primera es formar un grupo de
alternativas que producen unresultado. La segunda es omitir
intencionadamente la instruccin break al final de unbloque.
-
Pgina 50 de 240 Programacin en PHP
echo "Ya he desayunado."; break; default: echo "Tengo hambre";
break;}
?>
Estructuras iterativasEn muchas ocasiones, al programar, hay una
accin que se repite varias veces.Podramos poner varios bloques de
cdigo iguales seguidos para conseguir esteefecto, pero esto nos
conducira a un cdigo redundante y muy largo. Adems, qusucede si no
conocemos las veces que queremos repetir el cdigo a priori?
Instruccin whileEs la estructura ms sencilla. Repite
indefinidamente la ejecucin de un bloque decdigo mientras la
evaluacin de la condicin sea cierta. La forma que tenemos
decontrolar cuantas veces se repite el bucle while es a travs de la
condicin. Por lo tanto,en el cuerpo del bucle se han de modificar
las variables que intervienen en la condicinde tal forma que en
algn momento sea falsa.
while (condicin ) { Cdigo a ejecutar mientras la condicin sea
cierta}
Ejemplo 2.4.7. El ejemplo ms tipo de ejecucin de un bucle es
contar. Es importanteobservar dos cosas:
1. La variable $i se inicializa fuera del bucle.2. La variable
$i se modifica en la ltima instruccin del cuerpo delbucle. De esta
forma cada vez que se evala la condicin ha cambiado.Cuando $i llega
a valer 11 la condicin es falsa y el bucle termina.
-
Plataforma de Teleformacin de IFES Pgina 51 de 240
while ($i
Ejemplo 2.4.8. Un ejemplo un poco ms complejo. En la expresin
condicin del buclese hace uso de una constante por primera vez en
los ejemplos.
Instruccin do ... whileEn PHP se dispone tambin de la estructura
do ... while, que a diferencia de la anteriorevala la condicin al
final en lugar de al principio del bucle. De esta forma el buclese
ejecuta siempre al menos una vez y a partir de ese momento se
repite mientras lacondicin sea cierta.
do { Cdigo a ejecutar} while (condicin );
Ejemplo 2.4.9. Uno de los casos en los que se usa esta
estructura es cuando se estesperando recibir un dato en concreto y
hay que realizar varias veces una lectura de un
-
Pgina 52 de 240 Programacin en PHP
dato hasta que se recibe el dato esperado. Como an no conocemos
ninguna forma derecibir datos, se ha optado por generarlos
aleatoriamente. En este ejemplo se simula ellanzamiento de un dado
de parchs.
Instruccin for La instruccin for es probablemente la ms fcil de
comprender para las personas queestn aprendiendo a programar, dado
que, en la mayora de los casos se conoce elnmero de veces que se va
a ejecutar el bucle antes de entrar al mismo. La sintaxisque tiene
PHP es:
for (inicializacin ; condicin ; incremento ) { Cdigo a
ejecutar}
El bucle se ejecutar mientras la condicin sea TRUE.
Ejemplo 2.4.10. Aqu se puede ver un bucle for sencillo que, al
igual que el bucle whiledel ejemplo 2.4.7., imprime 10 lneas
numeradas. Como se puede observar es habitualutilizar la variable
$i en el cuerpo del bucle. A esta variable se le llama a veces
ndice.
-
Plataforma de Teleformacin de IFES Pgina 53 de 240
?>
Ejemplo 2.4.11. La instruccin de incremento no tiene por qu
hacer aumentar el valor,tambin lo puede hacer retroceder. En este
ejemplo se imprime una cuenta atrs.
Ejemplo 2.4.12. Tambin se puede hacer que la instruccin
incremento aumente elvalor en cada paso un nmero distinto de 1. El
siguiente programa cuenta los nmerosdel 3 al 15 de 3 en 3.
Ejemplo 2.4.13. La condicin no tiene por qu ser necesariamente
sobre la variabledeclarada como ndice . En este ejemplo se puede
observar esto. El resultado es elmismo que con el ejercicio
anterior.
-
Pgina 54 de 240 Programacin en PHP
echo $j;echo "";}
?>
De todas formas es muy recomendable que la condicin sea sobre el
ndice. Tambinhay que evitar alterar el contenido del ndice en el
cuerpo del bucle, pues puede llevar acomportamientos impredecibles
si no se tiene cuidado.
Anidamiento de bloques de cdigoHasta ahora hemos visto a las
sentencias de control actuar de forma aislada. Peroen la mayora de
las situaciones nos encontraremos que para obtener el
resultadoesperado hemos de hacer que trabajen juntas. Esto no
supone ningn problema. Unbloque de cdigo dentro de una sentencia de
control puede contener varias sentenciascondicionales, y a su vez
los bloques de cdigo de stas, nuevas sentenciascondicionales.
Ejemplo 2.4.14. Aqu se puede ver un caso tpico del uso de
sentencias de controlanidadas.
El principal problema con el que nos podemos encontrar es tener
un cdigo pocolegible. Para evitarlo es recomendable poner espacios
delante de cada bloque decdigo de tal forma que el comienzo de las
instrucciones comience a diferentes
-
Plataforma de Teleformacin de IFES Pgina 55 de 240
distancias del margen dependiendo del bloque en el que se est. A
esta tcnica se lellama sangrado.
El sangrado ms habitual es de 4 espacios en blanco por cada
nivel de anidamiento.Todos los fragmentos de cdigo que se han
incluido hasta ahora se han puesto coneste estilo de sangrado con
el que es ms frecuente encontrrselos.
Ejemplo 2.4.15. Este cdigo es idntico al anterior pero sin
sangrado. Es obvio que enste es mucho ms difcil comprender el flujo
del programa.
El sangrado no es obligatorio, el cdigo funcionara igual sin
hacerlo, pero como se havisto en este ejemplo, los programas se
vuelven prcticamente ilegibles.
Ejemplo 2.4.16. Mediante el anidamiento se pueden conseguir
resultados interesantescon muy poco cdigo. En el siguiente ejemplo
se va a dibujar una tabla de multiplicar.
-
Pgina 56 de 240 Programacin en PHP
?>
Terminacin de los buclesSi no controlamos bien la condicin del
bucle, sta nunca se evaluar a falso y el buclese evaluar
indefinidamente, dando lugar a un bucle infinito. ste es uno de los
erroresms habituales. En bucles complejos puede ser fcil perder de
vista cules son lasvariables que intervienen en la evaluacin de la
condicin.
Ejemplo 2.4.17. ste es un bucle infinito que escribir
indefinidamente una frase porpantalla. El bucle no se detiene hasta
que no paremos la descarga desde el navegadoro nos quedemos sin
memoria.
Antes de ejecutar este ejemplo, guarda lo que estshaciendo.
Puede ser que se te bloquee el ordenadory tengas que
reiniciarlo.
breakLa ejecucin natural de los bucles se puede interrumpir
mediante la sentencia break.En el cuerpo de cualquiera de los tipos
de bucle que hemos visto, una sentencia breakcausa la finalizacin
del mismo sin ejecutarse ninguna sentencia ms del cuerpo delbucle.
En otras palabras, en cuanto se encuentra una sentencia break, se
interrumpe laejecucin del bucle y se pasa a la siguiente lnea de
cdigo despus del bucle.
Ejemplo 2.4.18. Bucle que se interrumpe mediante un break.
-
Plataforma de Teleformacin de IFES Pgina 57 de 240
Ejemplo 2.4.19. En ocasiones se pone intencionadamente un bucle
infinito que sepretende romper con una sentencia break en su
cuerpo.
continueLa sentencia continue tiene cierta similitud con la
sentencia break.
Su funcionamiento es el siguiente. En cuanto se encuentra una
sentencia continue seignoran el resto de las instrucciones del
cuerpo del bucle pero no se sale del mismo,sino que se salta a la
sentencia de evaluacin de la condicin . Obviamente, si en
-
Pgina 58 de 240 Programacin en PHP
ese momento la condicin del bucle es verdadera, el bucle
comenzar una nuevaejecucin.
Ejemplo2.4.20. Este programa lista los nmeros del 1 al 10,
indica los queson mltiplos de 3, y si son divisibles por 3 nos
muestra el resultado de esta divisin.
Las sentencias break y continue dan lugar, por lo general, a un
cdigo ms complejoy propenso a errores, por lo que no se recomienda
su uso por parte del programadorprincipiante.
Resumen mdulo IIEste recurso es de tipo Multimedia.Tiene que
conectarse a la plataforma para acceder a este recurso.
Prctica: conceptos bsicosEste recurso es de tipo Prctica.Tiene
que conectarse a la plataforma para acceder a este recurso.
Autoevaluacin mdulo II
-
Plataforma de Teleformacin de IFES Pgina 59 de 240
Pregunta 1:En las pginas dinmicas programadas en PHP se alternan
bloques de cdigo
HTML y bloques de cdigo PHP. Verdadero Falso
Respuesta correcta: Verdadero
Pregunta 2:Todas las instrucciones, salvo la ltima, han de
acabar con un punto y coma.
Verdadero Falso
Respuesta correcta: Verdadero
Pregunta 3:En PHP hay solo una forma de mostrar un texto en la
pgina web, y es mediante
la sentencia echo . Verdadero Falso
Respuesta correcta: Falso
Pregunta 4:PHP es un lenguaje de programacin fuertemente tipado.
Soporta los tipos de
dato integer , long , float , double , boolean y string.
Verdadero Falso
Respuesta correcta: Falso
Pregunta 5:"$4ruedas" es un nombre de variable vlido.
Verdadero Falso
Respuesta correcta: Falso
Pregunta 6:
-
Pgina 60 de 240 Programacin en PHP
Cuando una expresin contiene varios operadores estos se evalan
siempre de
izquierda a derecha. Verdadero Falso
Respuesta correcta: Falso
Pregunta 7:La siguiente expresin es verdadera para todos los
individuos que tiene el pelo
rubio y los ojos azules.($pelo == "rubio") && ($ojos !=
"azules")
Verdadero Falso
Respuesta correcta: Falso
Pregunta 8:El siguiente cdigo pintar por pantalla la frase "Ins
es una chica muy alta."
Verdadero Falso
-
Plataforma de Teleformacin de IFES Pgina 61 de 240
Respuesta correcta: Verdadero
Pregunta 9:Si al entrar en un bucle la condicin es verdadera y
no se modifica en el cuerpo
del bucle nunca se podr salir de l. Se trata de un bucle
infinito. Verdadero Falso
Respuesta correcta: Falso
Pregunta 10:En PHP solo se puede anidar un mximo de una
estructura condicional o iterativa
dentro de otra. Verdadero Falso
Respuesta correcta: Falso
-
Pgina 62 de 240 Programacin en PHP
Programacin en PHP
Mdulo III. Conceptos avanzadosU.D.1. Cadenas
El manejo de cadenas en PHP es de vital importancia, ya que la
nica forma quetenemos de comunicarnos con el usuario es a travs de
texto. Hay que tener en cuentaque el resultado de un programa en
PHP es una pgina web con formato HTML.
Combinar cdigo HTML con cdigo PHPComo en una pgina web dinmica
programada en PHP hay cdigo de dos tipos,lo mejor es mantenerlos
bien diferenciados. Hay que ser especialmente cuidadosoprocurando
que el cdigo sea muy legible. Esto facilitar el mantenimiento de la
pginay har mucho ms sencillo dotarla de elementos de diseo.
El objetivo ideal sera que un diseador web pudiera aplicar diseo
a una pginaPHP sin tener que preocuparse de la programacin que
contiene. En el mdulo Vveremos una breve introduccin a las
plantillas que nos facilitan notablemente la tareade separar el
cdigo HTML del cdigo PHP.
Variables dentro de cadenasHasta ahora, siempre que hemos
necesitado mostrar un texto compuesto por unacadena y el valor de
una variable los hemos tenido que unir usando el operadorconcatenar
" . ". Pero PHP ofrece una sintaxis alternativa que resulta ms
compacta ypuede ser de utilidad en muchos casos.
-
Plataforma de Teleformacin de IFES Pgina 63 de 240
echo "Belinda tiene $edad aos.";
?>
Uso de la sentencia echo
Es recomendable usar esta forma de conseguir salida cuando es
predominante lacantidad de cdigo PHP sobre la cantidad de cdigo
HTML. Lo mismo se aplica aluso de la funcin print() que produce los
mismos resultados. Hay partidarios de usaruna forma y partidarios
de usar la otra, lo que no es muy recomendable es mezclarlasdentro
del mismo programa.
Ejemplo 3.1.2. En este pequeo programa predomina el cdigo PHP
sobre el cdigoHTML.
Nmeros primos
-
Pgina 64 de 240 Programacin en PHP
Uso de la sintaxis A la inversa, cuando predomina el cdigo HTML
sobre el cdigo PHP es interesantemostrar la salida usando esta
sintaxis, siempre y cuando la hayamos activado en laconfiguracin de
PHP.
Para activarlo hay que acceder al archivo php.ini, dentro del
directorio C:\xampp\php, yaadirle la siguiente lnea:
short_open_tag=1. Se puede aadir al final del archivo, peroantes
aseguraos de que no existe ya dicha lnea.Una vez aadida esta lnea,
debis reiniciar el servidor Apache para que los cambiossurtan
efecto.
En cualquier caso, no os aconsejo esta sintaxis, porque puede
ocurrir que no estactivado en la configuracin PHP del sistema que
aloje los scripts que estis creando yno tengis acceso al archivo de
configuracin.
Ojo al manipular el archivo de configuracin php.ini.Un uso
incorrecto puede provocar que vuestroservidor Apache no funcione
bien.
Ejemplo 3.1.3. En este pequeo programa predomina el cdigo HTML
sobre el cdigoPHP.
El hombre del tiempo
Hola, soy el hombre del tiempo.Mi mtodo para adivinar el clima
es infalible.
-
Plataforma de Teleformacin de IFES Pgina 65 de 240
Temperatura mnima prevista
Temperatura mxima prevista
grados.
grados.
Fragmentos de HTML dentro de estructurascondicionalesCuando
tenemos que mostrar trozos de cdigo HTML muy grandes y este se
encuentradentro de una estructura condicional, puede ser muy pesado
construirlos a base desentencias echo . En este caso es preferible
volver a cerrar el bloque de cdigo PHPcon la etiqueta ?>,
escribir el cdigo HTML que se ejecuta condicionalmente, y abrirotra
vez el cdigo PHP con la etiqueta produce un cdigocompacto y fcil de
leer.
Ejemplo 3.1.4. Aqu se ven las dos estrategias. La segunda es ms
compacta y clara.
-
Pgina 66 de 240 Programacin en PHP
echo ; echo No est autorizado a ver esta pgina.; echo ; echo
Contacte con el administrador del sistema.; echo ; echo ; echo ;
echo ; echo ;}
?>
No est autorizado a ver esta pgina.Contacte con el administrador
del sistema.
Distribucin del cdigoLa ltima cuestin que nos queda por resolver
es dnde situar el cdigo. Salvo elcdigo que muestra resultados por
pantalla, que tiene que aparecer en el lugar
-
Plataforma de Teleformacin de IFES Pgina 67 de 240
apropiado de la pgina, el cdigo PHP se puede situar en cualquier
lugar. La mejoropcin es separarar en la medida de lo posible el
cdigo encargado de:
Inicializar las constantes y variables. Leer datos de entrada.
Realizar operaciones.
Este cdigo es conveniente ponerlo al principio de la pgina. Los
resultados de lasoperaciones que se quieran mostrar se almacenan
entonces en variables auxiliares yse muestran en el cuerpo de la
pgina HTML donde corresponda haciendo uso de lasetiquetas .
Ejemplo 3.1.5. sta es una pgina web en PHP bien construida. Usa
un algoritmo parahallar el mximo comn divisor de dos nmeros
generados aleatoriamente.
Mximo comun divisor
-
Pgina 68 de 240 Programacin en PHP
El mximo comn divisor de y es .
Esto no es posible siempre. Por ejemplo, si tenemos que mostrar
una lista de 11resultados el bucle que los recorre deber estar
mezclado con el cdigo HMTL. Detodas formas con la experiencia
iremos aprendiendo poco a poco a extraer la mayorparte del cdigo
PHP al comienzo de la pgina.
Manipulacin de cadenasPHP dispone de funciones predefinidas en
el ncleo que nos permiten haceroperaciones con los textos
almacenados en cadenas. Ya hemos visto las funcin echoy printf(),
pero hay unas cuantas ms.
Acceder a los caracteres de una cadenaSe puede acceder a los
caracteres de las cadenas indicando la posicin del carcterque
queremos extraer. Las posiciones van desde 0 hasta el nmero de
caracteres(longitud) menos uno. Si intentamos acceder a una posicin
ms all del final de lacadena nos devolver la cadena vaca (cadena
sin ningn caracter = "").
Ejemplo 3.1.6. Varias pruebas extrayendo caracteresde una
cadena.
-
Plataforma de Teleformacin de IFES Pgina 69 de 240
echo "Caracter en la posicin 9: '$cadena[9]'";
//La cadena tiene longitud 10, en la posicin 12 no hay nadaecho
"Caracter en la posicin 12: '$cadena[12]'";
?>
strlen()strlen(cadena )
Por lo general no conceremos la longitud de la cadena a priori.
Esta funcin nospermite obtenerla
strpos()En ocasiones nos interesar conocer la posicin de la
primera aparicin de un carcteren una cadena. Si no se encuentra el
carcter devuelve FALSE.
strpos(cadena , carcter )
Alternativamente podemos indicarle la posicin a partir de la
cual queremos queempiece a buscar.
strpos(cadena, carcter, posicin inicial )
substr()Habr muchos casos en los que nos interesar extraer un
trozo del texto de unacadena. Para hacerlo disponemos de esta
funcin.
substr(carcter, posicin inicial, posicin final )
Ejemplo 3.1.7. El funcionamiento de las funciones se va a
explicar con un ejemplotpico, la comprobacin de que una direccin de
correo electrnico es correcto y laextraccin de datos del mismo.
-
Pgina 70 de 240 Programacin en PHP
echo "Email a analizar: $email";echo "";echo "Tiene " .
strlen($email) . " letras.";
//Indica la posicin del caracter "@" o FALSE si no
est$posicion_arroba = strpos($email, "@");
//Busca la aparicin de un punto (.) partir de la
arroba$posicion_punto = strpos($email, ".", $posicion_arroba);
if ($posicion_arroba && $posicion_punto) {echo "Es una
direccin de email vlida";$usuario = substr($email, 0,
$posicion_arroba);$dominio = substr($email, $posicion_arroba +
1);echo "El nombre de usuario es: $usuario";echo "El dominio es:
$dominio";} else {echo "No es una direccin de email vlida";if
(!$posicion_arroba) {echo "Le falta el caracter arroba";}if
(!$posicion_punto) {echo "El dominio no es vlido";}}
?>
trim()Elimina los espacios en blanco al principio y final de una
cadena.
trim(cadena )
str_replace() En un texto, reemplaza las apariciones de una
cadena por otra.
str_replace(cadena original, cadena a buscar, cadena reemplazar
)
-
Plataforma de Teleformacin de IFES Pgina 71 de 240
Ejemplo 3.1.8. En este ejemplo se supone que podemos recibir
direcciones de correoelectrnico errneas, y las intentamos arreglar.
El primer error que eliminamos esla aparicin de espacios en blanco
al principio y al final de la direccin. El segundocuando los
usuarios escriben el dominio pernambuco.es cuando el correcto
espernambuco.com.
strtoupper() y strtolower()La funcin strtoupper() convierte los
textos a maysculas, y strtolower() a minsculas.
strtoupper(cadena )strtolower(cadena )
Ejemplo 3.1.9. En este ejemplo vamos a pasar la direccin de
correo a minsculas.
-
Pgina 72 de 240 Programacin en PHP
Ejemplo 3.1.10. Un uso muy habitual de estas funciones es para
comparar cadenas.Para PHP la cadena "MADRID" es diferente a la
cadena "Madrid", pero mediante estasfunciones se pueden comparar
como iguales.
number_format()Esta funcin es til cuando hay que mostrar datos
de tipo double, es decir, nmeroscon decimales. Permite especificar
el nmero de decimales que queremos que semuestren, en lugar de los
diez decimales que se muestran habitualmente.
number_format(nmero, decimales )
Ejemplo 3.1.11. Esta funcin ya apareci en una prctica del mdulo
anterior.
-
Plataforma de Teleformacin de IFES Pgina 73 de 240
echo "A pagar " . number_format($a_pagar, 2) . " euros.";
?>
U.D.2. Arrays
Hasta ahora hemos trabajado en nuestros programas con una pequea
cantidad dedatos, y la cantidad de los mismos no variaba a lo largo
del programa. Pero la mayorade los programas que hacen algo til
requieren tratar gran cantidad de datos. En estecaso sera muy
incomodo tener una variable para cada dato.
Afortunadamente cuando se tratan muchos datos, stos suelen ser
de unos tipos muysimilares entre s. Para tratarlos en grupos, PHP
ofrece tipos de datos compuestos, esdecir, tipos de datos que
permiten almacenar varios datos en una misma variable.
El tipo de datos compuesto ms sencillo es el array . Es una
estructura muy potente,flexible y de uso muy intuitivo. Un array
est compuesto por varios elementos. Cadaelemento almacena un valor
diferente. Y para poder localizar un elemento, disponemosdel ndice
(algo as como una direccin).
Arrays indexados numricamenteEl tipo ms sencillo de array es el
indexado numricamente, en los que el ndicede cada elemento
corresponde con su posicin. Hay que tener en cuenta que, al
igualque suceda con las cadenas, el primer elemento de un array
tiene ndice 0 (y no 1como cabra esperar).
Inicializar un arrayLos arrays se suelen almacenar en variables,
como cualquier otro tipo de datos.La forma ms sencilla de crear un
array es asignando los valores de sus elementos ala vez que se
crea. Para ello primero declaramos el nombre de la variable y
usamos la
-
Pgina 74 de 240 Programacin en PHP
funcin array() , a la que le pasamos como parmetros un grupo de
valores separadospor comas.
Ejemplo 3.2.1. Creacin de un array por asignacin directa
mediante la funcin array():
La segunda forma de crear un array es aadindole elementos al
final del array. Paraaadir un elemento a un array se usa su
identificador seguido de corchetes "[ ]", sin elndice, y se le
asigna un valor.
Ejemplo 3.2.2. Aqu se puede ver cmo se crea un array mediante la
adicin deelementos.
Ejemplo 3.2.3. Se pueden combinar ambas formas, primero declarar
un arraydirectamente y cuando sea necesario ir aadiendo
elementos.
-
Plataforma de Teleformacin de IFES Pgina 75 de 240
Acceder a un elemento de un arrayNecesitaremos acceder a los
elementos de un array para asignarles valores o para leersu
contenido. Esto es muy sencillo, basta poner el ndice del elemento
al que queremosacceder entre corchetes "[ ... ]".
Ejemplo 3.2.4. Aqu se leen los valores de los elementos de un
array para sacarlos porpantalla. Luego se asigna un nuevo valor al
primer elemento (recordamos, con ndice0).
Recorrer un arrayLos arrays se suelen utilizar para almacenar
listas de valores. Por ello, una de lasacciones ms habituales, es
recorrerlos de principio a fin para leer o modificar uno ovarios de
ellos.
Las estucturas iterativas (bucles) que se vieron en la unidad
didctica 4 del mduloII son idneas para recorrer arrays. Lo nico que
hay que hacer es limitar el nmerode iteraciones al nmero de
elementos del array. Para esto disponemos de la funcincount().
count(array )
Ejemplo 3.2.5. La funcin count() nos dice cuantos elementos
contiene un array.
-
Pgina 76 de 240 Programacin en PHP
echo "La lista contiene " . count($frutas) . " frutas.";
?>
Ejemplo 3.2.6. Recorriendo un array para mostrarlo por
pantalla.
Ejemplo 3.2.7. Recorriendo un array para modificar todos sus
elementos. Aqu se usandos arrays que estn relacionados por sus
posiciones.
-
Plataforma de Teleformacin de IFES Pgina 77 de 240
Ejemplo 3.2.8. Recorriendo un array para buscar un elemento. Se
vuelve a haceruso de dos arrays relacionados por las posiciones de
sus ndices. En este cdigose da por supuesto que se va a encontrar
el valor buscado. No es seguro, fallarasi preguntaramos por la edad
de una persona cuyo nombre estuviera en el arraynombres.
Ordenar un arrayLa funcin sort() ordena los elementos de un
array. Si el array est formado porcadenas de texto considera
menores las minsculas que las maysculas.
sort(array )
Ejemplo 3.2.9. En esta ejemplo se ordena una lista de nombres,
primero por elprocedimiento normal. Luego se muestra la forma de
ordenar el mismo array sin hacerdistincin entre maysculas y
minsculas.
-
Pgina 78 de 240 Programacin en PHP
}echo "";
echo "Ordenacin sin distinguir maysculas y
minsculas:";$astros_minusculas = array_map("strtolower",
$astros);array_multisort($astros_minusculas, SORT_ASC,
SORT_STRING,$astros);
for ($i = 0; $i < count($astros); $i++) { echo
"$astros[$i]";}
?>
Arrays no secuenciales
Hasta ahora lo arrays que hemos visto tenan como ndices la
sucesin 0 (1er elemnto),1 (2 elemento), 2 (3er elemento) ...
En PHP los ndices de un array no tiene por qu ser consecutivos,
pueden incluso estardesordenados.
El ndice de los arrays asociativos no tiene por qu ser
necesariamente un entero,puede ser tambin un numero decimal o una
cadena. Este tipo de arrays es ms difcilde usar y aunque permite
una mayor flexibilidad, pueden ser fuente de muchos erroresdifciles
de detectar si no se usan con cuidado.
Arrays asociativosstos son un caso especfico de arrays no
secuenciales en los que el ndice es unacadena de texto. Pueden
resultar tiles para guardar listas en las cuales se asocia unvalor
a una palabra clave.
-
Plataforma de Teleformacin de IFES Pgina 79 de 240
La creacin de este tipo de arrays se puede hacer de dos formas.
La primera esmediante la funcin array() de forma parecida a como lo
hacamos antes, solo queahora deberemos especificar un valor para el
ndice.
Ejemplo 3.2.10. Cuando se declaran explcitamente los ndices se
escribe el valor delindice seguido por "=>" y el valor del
elemento que contiene.
Como se puede observar en el ejemplo, si queremos hacer
referencia a un elemento deun array indexado por una cadena dentro
de un texto entre comillas, lo tendremos queencerrar entre llaves
"{ }". Si no, nos dar un error al interpretar la comilla de
aperturadel ndice del array como la comilla final de la cedena.
Ejemplo 3.2.11. En la siguiente sentencia, PHP dar un error.
La segunda forma de crear un array asociativo es aadiendo
elementos al array yasignndoles de forma explcita cual es su
ndice.
Ejemplo 3.2.12. Veamos esta segunda forma de inicializar arrays
declarandoexplcitamente sus ndices.
-
Pgina 80 de 240 Programacin en PHP
Hay que tener cuidado con este sistema de creacin pues se usa
indistintamente paracrear un elemento y para acceder a su
valor.
Ejemplo 3.2.13. En este ejemplo primero se relaciona un array
con otro a travs dendices de tipo cadena. Los valores del primer
array sirven a su vez como ndices delsegundo.
Aun as, al igual que ocurra con los arrays no secuenciales, su
uso no esrecomendable si no se tiene dominio sobre el lenguaje de
programacin PHP.
Arrays no homogneos.Como estamos viendo, PHP establece muy pocas
limitaciones a las estructuras de losarrays. Aunque hasta el
momento todos los arrays que hemos visto los hemos usadopara
manipular datos del mismo tipo (arrays de enteros, arrays de
cadenas...) sta esuna restriccin que no era necesaria.
-
Plataforma de Teleformacin de IFES Pgina 81 de 240
PHP permite mezclar en los elementos de los array valores de
diferentes tipos. Inclusopermite que los ndices de los elementos de
un mismo array sean de diferentes tipos.Pero una vez ms esta es una
estrategia peligrosa a seguir y a la que en la mayora delos casos
no ser necesario recurrir.
Arrays multidimensionalesEl contenido de un elemento de un array
puede, a su vez, ser un array. De esta formase pueden construir
arrays multidimensionales.
Ejemplo 3.2.14. Aqu se muestra como almacenar una matriz (array
de dosdimensiones) que contiene una sopa de letras generada
aleatoriamente (la funcinchr() devuelve un carcter dado su nmero
ascii).
-
Pgina 82 de 240 Programacin en PHP
?>
Mostrar el contenido de un arrayEjemplo 3.2.15. PHP dispone de
la funcin print_r() a la que se le pasa comoargumento un array e
imprime por pantalla su contenido. Para poderlo ver bien se usala
etiqueta HTML ... que sirve para mostrar el texto y los saltos de
lnea talcual.
Desbordamiento de arraysSi se intenta acceder a un elemento que
no existe en un array, PHP nos devolver lacadena vaca (""). sta es
una causa de error muy habitual, sobre todo si luego vamosa hacer
operaciones con ese dato.
-
Plataforma de Teleformacin de IFES Pgina 83 de 240
Ejemplo 3.2.16. Aqu se accede al quinto elemento del array, que
no existe.
Otra forma de recorrer un array
foreachPHP 4 introdujo un constructor foreach, muy parecido al
de Perl y algunos otroslenguajes. Proporciona un modo fcil de
iterar sobre arrays. foreach trabaja solo sobrearrays y dar un
error al intentar usarlo en una variable con un tipo de datos
diferente ouna variable no inicializada.
foreach (array as $valor){ sentencias}
En cada ciclo, el valor del elemento actual es asignado a $valor
y el ndice interno delarray avanza en uno (as en el prximo ciclo se
estar mirando el siguiente elemento).
Ejemplo 3.2.17. Recorremos el array, y nosotros no tenemos que
controlar el ndice.
-
Pgina 84 de 240 Programacin en PHP
U.D.3. FuncionesPHP es un lenguaje estructurado y como tal
dispone de funciones. Las funciones noson ms que fragmentos de
cdigo a los que se puede llamar desde cualquier parte delcdigo.
Gracias a esto permiten:
Reutilizar cdigo que se usa frecuentemente. Estructurar
lgicamente el cdigo para que sea ms comprensible. Separar el cdigo
en diferentes ficheros para poder compartirlo en diferentes
pginas PHP.
Funciones definidas por el usuario
Declaracin de una funcinAntes de poder utilizar una funcin, sta
ha de ser escrita. Por lo tanto, el lugar enel que se suelen situar
las funciones es al comienzo del archivo, de tal forma queestn
disponibles a partir de ese momento. Situarlas al comienzo tambin
ayuda a unaestructuracin del cdigo ms lgica.
Las funciones se declaran, como las variables, con un nombre ,
precedido de la palabrafunction , unos parntesis (para albergar los
datos de entrada, llamados argumentos oparmetros) y unas llaves que
incluyen el cuerpo de la funcin. Dentro del cuerpo de lafuncin
podemos declarar variables, llamadas a otras funciones y dems
sentencias.
function nombre_funcion (arg1, arg2, arg3, ...) { bloque de
cdigo return valor ; //Opcional}
Llamada a una funcin
Para utilizar una funcin se escribe su nombre, seguido de
parntesis y dentro de stosse escriben los datos que se quieren
pasar a la funcin (o variables que contienendichos datos).
nombre_funcion (arg1, arg2, arg3, ...);
-
Plataforma de Teleformacin de IFES Pgina 85 de 240
Si la funcin devuelve un dato, ste se puede asignar a una
variable o usardirectamente como parte de una expresin.
Ejemplo 3.3.1. A continuacin se muestra una funcin muy sencilla,
que no tieneargumentos.
Devolucin de un valor
Las funciones son mucho ms tiles si pueden devolver un dato.
Para ello usan lasentencia return . Una vez que se llega a esta
instruccin, no se ejecuta el cdigo quese pueda encontrar a
continuacin.
Ejemplo 3.3.2. La siguiente funcin devuelve aleatoriamente un da
de la semana.
Argumentos
-
Pgina 86 de 240 Programacin en PHP
Aun as, estas funciones que hemos visto son muy sencillas y no
permiten hacergrandes cosas. Lo ms habitual es que a las funciones
se les pasen datos, queluego operen con stos y que al terminar la
funcin devuelva el resultado. A los datosque recibe una funcin se
les llama argumentos o parmetros.
En la declaracin de la funcin, tras la palabra clave function ,
va el nombre de lafuncin seguido por una lista de argumentos entre
parntesis y separados por comas.Dentro del cuerpo de la funcin
estos datos se pueden utilizar como una variablecualquiera.
Ejemplo 3.3.3. Funcin sencilla que recibe un parmetro y devuelve
un resultado.Luego es llamada dentro de un bucle para mostrar el
cuadrado de los nmeros de 1 a10;
Paso de argumentos por valor
Cuando se pasan valores a las funciones hay varias formas de
hacerlo. Elcomportamiento predefinido es lo que se conoce como paso
por valor. Esto quieredecir que la variable que recibe el valor
hace una copia del mismo y a partir de esemomento acta como una
variable independiente de manera que si cambias el valordel
argumento dentro de la funcin, no se ve modificado fuera de
ella.
Paso de argumentos por referenciaEn ocasiones es preferible no
hacer la copia del dato que se pasa. Esto puede interesarcuando se
trabaje con arrays (la copia de muchos datos puede perjudicar el
tiempode ejecucin del programa) o, ms comunmente, cuando se quiere
alterar el valorde la variable para obtener algn efecto. A esto se
le llama paso de parmetros por
-
Plataforma de Teleformacin de IFES Pgina 87 de 240
referencia. Para indicar que un parmetro se pasa por referencia
se le antepone elsmbolo ampersand, "&".
Una funcin puede emplear argumentos pasados por valor y por
referencia.
Ejemplo 3.3.4. Comparacin entre el paso por valor y por
referencia.
Ejemplo 3.3.5. No se puede hacer que una funcin devuelva dos
valores. Pero en sulugar es posible pasar por referencia las
variables a devolver y modificar su contenidoen el cuerpo de la
funcin. Aqu se emplea esta estratagema para intercambiar
elcontenido de dos variables.
-
Pgina 88 de 240 Programacin en PHP
$argumento1 = $argumento2; $argumento2 = $auxiliar;}
$numero1 = 5;$numero2 = 8;echo "($numero1, $numero2)";
intercambiar($numero1, $numero2);echo "($numero1,
$numero2)";
?>
Alcance de las variables
Dentro de las funciones tambin podemos declarar nuevas
variables, pero, qu pasasi hay una variable dentro de una funcin
que se llama igual que una variable que seencuetra fuera de la
funcin? La respuesta es que la variable de dentro de la funcin
esdiferente de la que est fuera y por lo tanto su valor es
independiente.
A esto se le llama alcance de una variable. Las variables que se
declaran dentro de unafuncin solo existen en el cuerpo de la
funcin.
Ejemplo 3.3.6. Este cdigo muestra el alcance de una variable
dentro de una funcin.No hay que confundir este ejemplo con el
ejemplo 3.3.4. En este caso no hay ningnargumento.
-
Plataforma de Teleformacin de IFES Pgina 89 de 240
Ejemplo 3.3.7. Puede darse el caso de que queramos acceder a una
variable globaldentro del cuerpo de la funcin. Para conseguirlo le
antepondremos la palabra claveglobal a la primera referncia de la
variable, con lo que el interprete PHP sabe queestamos llamando a
la variable externa.
No obstante, es altamente recomendable usar en las funciones
nombres de variablesdiferentes a los de las variables del programa
principal para evitar confusiones.Tampoco es conveniente usar
variables globales dentro de las funciones. Siempre quese pueda es
mejor pasar estas variables como parmetros, mejora notablemente
lafiabilidad y claridad del cdigo.
Creacin de bibliotecasPara conseguir un cdigo lo ms claro
posible es deseable que ste seabreve. Una forma de conseguirlo es
extraer las funciones que se declaran a unarchivo independiente con
extensin .php. Una ventaja de esta estrategia es que sepueden hacer
accesibles estas funciones a ms de una pgina en PHP.
Ejemplo 3.3.8. Una biblioteca de funciones guardada en el
archivo utils.php . Se haoptado por poner un breve comentario antes
de cada funcin explicando su cometidopara contribuir a la
legibilidad y mantenibilidad del cdigo.
-
Pgina 90 de 240 Programacin en PHP
// Archivo utils.php
// Devuelve el argumento elevado al cuadradofunction
cuadrado($numero) { return $numero * $numero;}
// Devuelve la raz cuadrada del argumentofunction raiz($numero)
{ return sqrt($numero);}
// Devuelve verdadero si el nmero es igual o mayor que
cerofunction es_positivo($numero) { return ($numero >= 0);}
?>
Ejemplo 3.3.9. En los ficheros de biblioteca se puede incluir
cualquier tipo de cdigo.Tambin se pueden poner archivos de
configuracin, de constantes predefinidas, etc.En este caso se
guarda en el archivo config.php.
Las instruccines include() y require()Para tener disponibles las
funciones de un fichero externo hay que indicarle al cdigoPHP que
las ha de incorporar al script actual. Mediante estas instrucciones
se incluyeun fichero en el punto en el que se importa. La
diferencia es que require() lanza un errorfatal en el caso de no
encontrar el fichero mientras que include() no lo hace.
-
Plataforma de Teleformacin de IFES Pgina 91 de 240
Ejempo 3.3.10. La inclusin de bibliotecas se suele poner al
principio para que estndisponibles en el resto del cdigo.
Hay que tener en cuenta el orden en el que se cargan los
archivos externos, sobre todosi unos hacen uso de cdigo de
otros.
Otros tipos de funcionesHasta ahora hemos visto las funciones
que nosotros definimos. Pero a lo largo demuchos ejemplos hemos ido
usando funciones como rand() o number_format() que yaestaban
disponibles en el lenguaje. stas son funciones del ncleo de PHP y,
por lotanto, no hace falta hacer un include() para poder
usarlas.
Extensiones de PHP
Las funciones que incorpora de forma predefinida PHP estn
agrupadas enextensiones.
Ejemplo 3.3.11. Para saber qu extensiones estn instaladas en
nuestro interprete dePHP tenemos una opcin muy til, la funcin
phpinfo() que genera una pgina con lainformacin del intrprete que
tenemos instalado.
-
Pgina 92 de 240 Programacin en PHP
Debe aparecernos una pantalla similar a la siguiente:
-
Plataforma de Teleformacin de IFES Pgina 93 de 240
-
Pgina 94 de 240 Programacin en PHP
Referencia sobre funcionesToda la referencia sobre funciones se
puede encontrar en la pgina oficial sobre PHP:
http://es.php.net/manual/es/funcref.php
Hay una gran multitud de funciones en PHP de las cuales
probablemente usaremosunas pocas. Las extensiones ms tiles son:
Funciones matemticas -
http://es.php.net/manual/es/ref.math.php
Funciones de cadenas -
http://es.php.net/manual/es/ref.strings.php
Funciones de mysql -
http://es.php.net/manual/es/ref.mysql.php
Funciones de fecha y hora -
http://es.php.net/manual/es/ref.datetime.php
La pgina dispone tambin de un buscador que resulta bastante
til.
U.D.4. Formularios
Hasta este momento todas las pginas que hemos visto a travs de
ejemplos tenanuna caracterstica, no eran interactivas. Hacan
operaciones en funcin de los datos delos que ya disponan pero eran
incapaces de recibir datos del navegador.
Una de las formas ms habituales de recibir datos por parte de
una pgina webdinmica es a travs de formularios web. Estrictamente
hablando, los formularios noson parte del lenguaje PHP sino del
lenguaje HTML. Pero para recibir los datos de unformulario en HTML
hace falta, por lo general, una pgina dinmica que los procese.
Hay que tener en cuenta que adems de formularios HTML hay otras
tecnologas quepermiten el envo de datos a pginas web, como Flash u
otras pginas web dinmicas.
Formularios HTMLLos formularios pueden llegar a ser muy
complejos, con una gran cantidad de camposde entrada, validacin de
datos por Javascript, campos ocultos... Pero el objetivo delcurso
no es explicar su funcionamiento, as que se har un repaso muy
superficial.
Un formulario est formado por tres tipos de elementos: Etiquetas
de comienzo y final,campos de entrada de datos y botones para
realizar acciones.
-
Plataforma de Teleformacin de IFES Pgina 95 de 240
Declaracin del formularioUn formulario se distingue por estar
encuadrado entre una etiqueta de comienzo deformulario y una de
final de formulario . La etiqueta de comienzo deformulario ha de
tener al menos tres atributos.
name - No es obligatorio pero s muy recomendable darle un nombre
alformulario para que sea fcil de identificar.
method - Este parmetro puede tomar dos valores segn la forma de
enviarlos datos:
get - Los datos se envan codificados en la URL (direccin de
lapgina destino).
post - Los datos se envan ocultos. action - Indica la pgina
destino que se encargara de procesar los datos que
enva el formulario.
Campos de entrada de datos Botones de acciones
CamposUna vez declarado el formulario hemos de poner un campo
para cada uno de los datosque queremos recibir. Hay 6 tipos de
campos:
Texto - Se usa para recibir una lnea de texto.
Seleccin nica - Se usa para elegir una opcin entre varias. Las
opcionesque son excluyentes entre s han de tener el mismo
nombre.
Seleccin mltiple - Se usa para elegir opciones de forma
independiente.Esto es, se pueden elegir todas, algunas o