0% encontró este documento útil (0 votos)
60 vistas

Modulo 1 PHP5 y My SQL

mp

Cargado por

humberto2471
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
60 vistas

Modulo 1 PHP5 y My SQL

mp

Cargado por

humberto2471
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 106

Centros de Autoformacin

PHP 5 y MySQL
Mdulo 1

Servicio de documentacin
Programacin PHP 5 y MySQL (mdulo 1)

FICHA TCNICA DE LA PUBLICACIN:

Edita: Ceina (Esquemes Informtics, SL)

Autor: Javier Martn Martn


Revisin y coordinacin: Manel Lpez Seuba

Reservados todos los derechos de traduccin edicin y copia mediante


cualquier sistema existente o futuro. Esta documentacin est protegida
por las leyes de la propiedad intelectual y su copia supone la infraccin de
las leyes del Copyright. Prohibida la reproduccin total o parcial, mediante
cualquier sistema mecnico o electrnico, sin autorizacin previa de los
autores.

Depsito legal: B-49.756-2000

Ceina - Centros de Autoformacin Pgina 1


Programacin PHP 5 y MySQL (mdulo 1)

Temario PHP 5 y MySQL

Presentacin
Historia y evolucin de PHP
Qu es PHP?
Ausencia de compilacin
Modos de ejecucin
Caso prctico
Herramientas de desarrollo
Cuestiones generales de sintaxis
Referencias a variables
Operaciones con variables
Malabarismo de tipos
Funciones tiles
Comprobar y forzar el cambio de tipos
Constantes
Estructuras de control
Directivas del lenguaje y funciones
Ejercicios
Conclusin

Ceina - Centros de Autoformacin Pgina 2


Programacin PHP 5 y MySQL (mdulo 1)

Presentacin

En los ltimos aos, la Web ha dejado de ser un lugar de consulta y


referencia, para convertirse en un lugar desde donde operar, realizar
transacciones que van desde la compra de libros o electrnica, hasta
la reserva de viajes y transferencias bancarias.

Seguramente por ello, apreciado estudiante, has tomado la decisin


personal o de empresa de adentrarte en el cada vez ms amplio y
ambicioso mundo del desarrollo de aplicaciones Web.

Lo hars aprovechando la infinidad de recursos que una tecnologa


como PHP pone a tu disposicin.

No slo sers capaz de crear aplicaciones Web dinmicas, sino que


tambin sers capaz de aprovechar esos conocimientos para la
programacin de utilidades de lnea de comandos, aplicaciones de
escritorio, videojuegos y un sinfn de posibilidades ms, gracias a las
extensiones propias o de terceros que pueden aadirse al lenguaje.

Para ello, y antes de adentrarnos en los detalles, comenzaremos en


los siguientes prrafos repasando brevemente la historia del
proyecto, para acabar con el estado actual y los planes de futuro de
esta tecnologa.

Ceina - Centros de Autoformacin Pgina 3


Programacin PHP 5 y MySQL (mdulo 1)

Historia y evolucin de PHP

En 1995, Rasmus Lerdorf cre un conjunto de scripts en lenguaje


Perl para conocer cuanta gente acceda a su currculum vtae
publicado en la red de redes. En el momento que necesit ms
funcionalidad que el mero hecho de crear un contador, Rasmus
escribi una implementacin en lenguaje C que era capaz de
comunicarse con base de datos y procesar formularios,
permitindole escribir algo ms que simples pginas Web.

Al igual que ha sucedido con otras referencias como Linux o MySQL,


Rasmus decidi publicar el proyecto como cdigo abierto (open
source), para que cualquiera pudiera utilizarlo, as como tambin
corregir bugs (errores) y mejorar el cdigo original.

En ese momento el proyecto se llamaba PHP/FI, que responda a


Personal Home Page/Forms Interpreter.

Para su creacin, Rasmus se bas en buena medida en la sintaxis


de lenguajes como C y Perl que ya utilizaba, aunque aadiendo
buena cantidad de sintaxis nueva, como ms adelante podrs
comprobar.

En 1997, PHP/FI 2, una re-escritura en cdigo C, tena ya un monto


de varios miles de usuarios alrededor del mundo, aunque an
siguiera siendo desarrollado por una sola persona.

Ceina - Centros de Autoformacin Pgina 4


Programacin PHP 5 y MySQL (mdulo 1)

PHP 3 fue la primera versin que se asemeja al PHP que puedes


encontrar en la actualidad. Tambin se trat de una re-escritura
completa, llevada a cabo por dos jvenes estudiantes llamados Zeev
Suraski y Andy Gutmans, que encontraron a PHP/FI 2 muy por
debajo de sus necesidades al trabajar en un proyecto en el que
estaban inmersos con la universidad.

La mayor virtud que se aadi con el lanzamiento de PHP 3 fue la


capacidad de desarrollar y aadir nuevas extensiones al corazn del
lenguaje, as como tambin se aadi una versin limitada (no
soportaba interfaces, clases abstractas ni modificadores de acceso)
del soporte para el desarrollo orientado a objetos.

Tambin en esta versin, se elimino la coletilla FI que acompaaba


el nombre del producto, y comenz a defenderse que PHP
responda al acrnimo recursivo PHP Hypertext Preprocessor, para
dejar de lado la idea de que PHP solo poda utilizarse para el
desarrollo de pginas personales.

Poco despus del lanzamiento de PHP 3, Andy y Zeev continuaron


trabajando en el corazn de PHP, con el principal objetivo de
mejorar su desempeo, que notablemente no era ptimo
funcionando en aplicaciones complejas.

El nuevo motor de PHP, llamado Zend Engine en mencin al


nombre de sus creadores (ZEev aNDy), fue introducido a mediados
del ao 1999, con nuevas caractersticas tales como un rendimiento
excepcional, soporte para mayor nmero de servidores Web,
sesiones y diversas mejoras de seguridad.

Ceina - Centros de Autoformacin Pgina 5


Programacin PHP 5 y MySQL (mdulo 1)

Finalmente, en julio de 2004 sale a la luz PHP 5, la segunda revisin


del motor Zend con un definitivo soporte para el desarrollo de
aplicaciones modulares gracias a un modelo de clases completsimo
y equiparable al de otros lenguajes como C++ o Java.

Lo que vendr

El futuro de PHP nos prepara la versin 6, que se centra mucho en


la internacionalizacin de las aplicaciones, es decir, en permitir
manejar cadenas de texto en multitud de alfabetos diferentes gracias
al soporte de Unicode (ahora ya es posible trabajar con diferentes
localizaciones, pero haciendo uso de ciertas extensiones).

Tambin se realizar una limpieza general, quitando extensiones no


recomendadas a favor del uso de otras (ereg por pcre), libreras
obsoletas (primeras versiones de gd y freetype) y definiciones del
lenguaje que ya haban sido marcadas como deprecadas (obsoletas)
y que finalmente sern eliminadas.

Bien, hasta ahora hemos repasado algo de historia, y Cmo


podramos sintetizar lo que es PHP a da de hoy?

Ceina - Centros de Autoformacin Pgina 6


Programacin PHP 5 y MySQL (mdulo 1)

Qu es PHP?

En pocas lneas, PHP es un lenguaje de scripting de propsito


general, especialmente concebido para el desarrollo de aplicaciones
Web y que se puede incrustar en la salida estndar como HTML,
XML, etc.

La definicin anterior puede ser algo vaga, descompongamos el


prrafo anterior en partes:

Lenguaje de scripting: Es una caracterstica destacable de


PHP, y hace referencia a que el guion o script, en Ingls
de un cdigo PHP es interpretado (procesado) por otro
programa. (precisamente, el interprete)

Un cdigo interpretado se va procesando (generalmente lnea


a lnea) sin necesidad de un previo paso de compilacin
(transformacin del cdigo al lenguaje de maquina).

Ceina - Centros de Autoformacin Pgina 7


Programacin PHP 5 y MySQL (mdulo 1)

Propsito general: Esto seala que PHP no es un lenguaje


limitado a una nica rea de especializacin, como el
desarrollo Web, sino que est abierto a cualquier propsito
como el desarrollo de utilidades de lnea de comandos, o
videojuegos, entre otros.

De todas formas, y aunque sea de propsito general, hay que


ser consciente que existen campos en los que PHP se
comporta mejor que en otros (si bien hemos dicho que se
pueden desarrollar videojuegos con PHP, no podemos
esperar desarrollar un completo juego 3D con este lenguaje).

Incrustar en la salida estndar: Debido a la manera de ser


configurado, un script PHP es servido habitualmente entre
trozos de HTML, XML o texto plano, permitiendo trabajar y
presentar los resultados muy fcilmente, por ejemplo en
cualquier navegador Web.

Ceina - Centros de Autoformacin Pgina 8


Programacin PHP 5 y MySQL (mdulo 1)

Ausencia de compilacin

El primer punto (lenguaje interpretado), es suficientemente


importante para que nos detengamos un momento a pensar en sus
implicaciones

Si lo miramos de forma prctica, escribir un script PHP es tan simple


como abrir un editor de texto, escribir el cdigo e invocarlo, bien
desde la Web o en una lnea de comandos.

Modificar este script recin creado para dotarlo de nuevas


funcionalidades o corregirlo requiere el mismo esfuerzo: abrir el
fichero, realizar las modificaciones oportunas e invocarlo.

Prescindir de un proceso de compilacin (existente en otras


tecnologas como C/C++ o Java) agiliza muchsimo los ciclos de
desarrollo de nuestros proyectos, gracias a que el tiempo requerido
para la prueba y error es muy reducido.

Ceina - Centros de Autoformacin Pgina 9


Programacin PHP 5 y MySQL (mdulo 1)

Compara los siguientes esquemas:

Por otro lado, y para hacer una comparacin justa, es cierto que los
lenguajes que son nativos (C/C++) o compilados (Java) en muchos
casos son ms veloces, pero esa velocidad es exigida para el tipo de
tareas que llevan a cabo, y a un coste de desarrollo mucho ms
elevado; PHP sin embargo puede hacer todo para lo que ha sido
pensado, sin presentar notables problemas de rendimiento.

Ceina - Centros de Autoformacin Pgina 10


Programacin PHP 5 y MySQL (mdulo 1)

Modos de ejecucin

Ya hemos comentado que PHP puede ser utilizado en aplicaciones


Web, de escritorio o lnea de comandos, veamos ahora qu
componentes participan en cada escenario.

Primer escenario: Lnea de comandos

Ideal para la creacin de tareas programadas, robots para el


procesamiento/obtencin de datos, etc.

Para poder ejecutar scripts de lnea de comandos es requisito


instalar los ejecutables de PHP con soporte para PHP-CLI
(Command Line Interface).

Ceina - Centros de Autoformacin Pgina 11


Programacin PHP 5 y MySQL (mdulo 1)

Es cada vez ms habitual encontrarse a administradores de


sistemas (generalmente Unix/Linux) que han reemplazado los scripts
en Bash, Perl o Python por scripts programados en PHP.

He aqu una imagen de la lnea de comandos:

Segundo escenario: Aplicaciones grficas de escritorio

A pesar del desconocimiento de muchos usuarios del lenguaje, PHP


tambin ofrece la opcin de crear aplicaciones de escritorio (tpica
ventana con botones, imgenes, tablas, al ms puro estilo
Windows).

Ceina - Centros de Autoformacin Pgina 12


Programacin PHP 5 y MySQL (mdulo 1)

Para poder llevar a cabo esta tarea PHP se apoya en la extensin


oficial PHP-GTK, que trae la librera de componentes grficos GTK
al mundo PHP.

Un ejemplo de aplicacin de escritorio con PHP-GTK:

Dentro de la categora de aplicaciones de escritorio, tambin es


posible la creacin de videojuegos en 2D.

En este caso la extensin que lo hace posible no es PHP-GTK sino


la llamada PHP-SDL.

Ceina - Centros de Autoformacin Pgina 13


Programacin PHP 5 y MySQL (mdulo 1)

PHP-SDL ofrece la misma funcionalidad que la famosa librera SDL


(Simple DirectMedia Layer), que nos permite crear aplicaciones
multimedia con audio, animaciones e interaccin con controladores
como ratn y joysticks.

He aqu un ejemplo de una aplicacin multimedia con PHP-SDL:

Referencias:
PHP-GTK
http://gtk.php.net
PHP-SDL
http://sourceforge.net/projects/phpsdl/

Ceina - Centros de Autoformacin Pgina 14


Programacin PHP 5 y MySQL (mdulo 1)

Tercer escenario: Aplicaciones Web

ste es el mtodo tradicional de usar PHP. Para este tipo de


aplicaciones, se necesitan los siguientes componentes:

Un servidor Web

Tambin conocido como servidor HTTP (HiperText Transfer


Protocol), es el encargado de recibir la peticin de un cliente y
devolver el contenido (pgina HTML, imagen, CSS,
JavaScript, etc) pertinente.

Entre los ms conocidos destacamos: Apache HTTPD,


ligHttpd, Microsoft Internet Information Server.

Mdulo PHP para el servidor escogido

Un servidor Web sin aadidos no es capaz de procesar


cdigo PHP. Por ello es necesario aadirle la capacidad de
hacerlo mediante un mdulo especficamente diseado para
cada servidor.

Navegador Web

Para completar este escenario es necesario el navegador que


ser el responsable, mediante la navegacin del usuario, de ir
solicitando los recursos y pginas.

Los navegadores que lideran hoy el mercado son: Internet


Explorer, Mozilla Firefox, Safari, Opera,

Ceina - Centros de Autoformacin Pgina 15


Programacin PHP 5 y MySQL (mdulo 1)

La siguiente ilustracin ensea como interactan los diferentes


componentes en el desarrollo de aplicaciones Web con PHP.

Finalmente, hacemos referencia a algunas de las pginas ms


conocidas que utilizan PHP como su lenguaje de desarrollo:

Facebook
http://www.facebook.com

Ceina - Centros de Autoformacin Pgina 16


Programacin PHP 5 y MySQL (mdulo 1)

Wikipedia
http://www.wikipedia.org

Yahoo!
http://www.yahoo.com

Ceina - Centros de Autoformacin Pgina 17


Programacin PHP 5 y MySQL (mdulo 1)

Caso prctico

Todos sabemos de una forma u otra que la mejor forma de aprender


sobre un tema nuevo es a travs de una experiencia real. Por ello, a
lo largo de estos mdulos acompaaremos a Sebastin y su
historia

Sebastin es un joven de unos 30 aos que, aunque se dedica a los


sistemas elctricos de manera profesional, preside un club de futbol
de una divisin amateur en su tiempo libre.

La direccin de un club requiere el llevar a cabo decenas de tareas,


como la gestin de los fichajes, planificacin de los partidos,
tesorera, socios, venta de entradas, etc.

Ahora que el club atraviesa un momento de estabilidad, Sebastin


est pensando en optimizar ciertos procesos internos e incrementar
drsticamente la visibilidad del club a travs de su propia pgina
Web.

Una persona dentro de su red de contactos le ha recomendado que


considere PHP como la tecnologa para automatizar esas tareas y
desarrollar el sitio Web.

Sebastin, que confa mucho en el criterio de su contacto, no pierde


ms tiempo y ha empezado a ojear entre foros, artculos y libros
sobre PHP, con el objetivo de sumergirse en el tema.

Lo primero que debo hacer es familiarizarme con la manera de


escribir cdigo PHP, piensa.

Ceina - Centros de Autoformacin Pgina 18


Programacin PHP 5 y MySQL (mdulo 1)

Herramientas de desarrollo

Entonces se ha topado con la primera decisin a tomar Qu


herramienta debe utilizar para desarrollar con PHP?

Ha ledo que una de las caractersticas de PHP es que, por su


simplicidad, cualquier editor de texto sirve para crear los scripts.

Por otro lado tambin sabe (de haberlo ledo) que a cuanto ms
completos los editores, mas rpido avanzar en el desarrollo

Existe un amplio abanico de editores que podemos usar para


programar en PHP, y su eleccin es en muchos casos una decisin
personal, donde incide mucho nuestro gusto; hagamos una
enumeracin:

Notepad/Bloc de notas: Sin duda es la opcin ms rudimentaria,


pero no hay ninguna razn por la cual no podamos utilizar este
software, incluido en Windows, para crear nuestros scripts:

Ceina - Centros de Autoformacin Pgina 19


Programacin PHP 5 y MySQL (mdulo 1)

Notepad++: Es un editor de cdigo abierto, disponible slo para


Windows, que permite editar cdigo PHP con utilidades como el
coloreo de la sintaxis, autocompletado, etc.:

Vim: A diferencia del editor anterior, Vim est presente en


prcticamente cualquier sistema operativo moderno, y tambin
ofrece funcionalidades como el autocompletado y el coloreo de
sintaxis.

Ceina - Centros de Autoformacin Pgina 20


Programacin PHP 5 y MySQL (mdulo 1)

Sin embargo, utilizar este editor puede resultar algo complejo si


ests acostumbrado a depender del ratn:

Eclipse PDT: Es un entorno de desarrollo integrado (IDE), que


permite crear aplicaciones PHP, depurarlas, documentarlas y
compartirlas desde un nico lugar. Fundamental para proyectos que
involucran a ms de un desarrollador.

Ceina - Centros de Autoformacin Pgina 21


Programacin PHP 5 y MySQL (mdulo 1)

Est construido sobre Eclipse, y en consecuencia quienes trabajen


con este IDE para otros lenguajes vern muchas similitudes y una
notable reduccin en su curva de aprendizaje:

Zend Studio: Esta opcin es una ampliacin del IDE anterior,


aunque de pago, y que se integra con otros productos de la
compaa Zend. Su uso an no ha sido popularmente adoptado.

Referencias:
Notepad++
http://notepad-plus.sourceforge.net/es/site.htm
Vim
http://www.vim.org/
Eclipse PDT
http://www.eclipse.org/pdt/
Zend Studio
http://www.zend.com/products/studio/

Ceina - Centros de Autoformacin Pgina 22


Programacin PHP 5 y MySQL (mdulo 1)

Una vez tomada la decisin sobre el editor, Sebastin intuye que


algo que necesitar constantemente ser mostrar resultados, y por
tanto, realizar la primera prueba.

Abre el Bloc de notas de Windows, por ejemplo, y escribe:

Bienvenido al Club Deportivo Rio Grande!

Gurdalo con el nombre Prueba1.php, pero en la carpeta que se


indica a continuacin, para facilitar la posterior ejecucin de la
prueba, asegurndote de que la lnea tipo indique Todos los
archivos, para evitarnos problemas con el nombre del archivo. As:

La carpeta debe ser:

C:\Archivos de programa\Bitnami Wampstack\Php

Aunque es recomendable poner una extensin a nuestros ficheros


que evidencie que se trata de cdigo PHP (como en el nombre que
hemos seleccionado), somos libres de usar cualquier otra.

Vamos a investigar cmo ejecutarlo.

Ceina - Centros de Autoformacin Pgina 23


Programacin PHP 5 y MySQL (mdulo 1)

Para nuestro curso, ya que no disponemos de un servidor real en


Internet, vamos a servirnos de una utilidad que incorpora todas las
herramientas necesarias y que emula un servidor real.

Se trata del paquete:

BitNami WampStack

Dicho paquete, gratuito y descargable desde Internet, incorpora


entre otras las siguientes utilidades:

Un servidor Web (Apache)


Un servidor de bases de datos (MySQL)
El motor de PHP5

Instalarlo es de lo ms simple, solamente es necesario seguir un


asistente y, al finalizar, tendremos el sistema a punto. Si quieres
tenerlo en tu equipo de casa o del trabajo, pide a tu asesor que te
indique como.

Ejecutar un script PHP desde consola (es decir, en su forma ms


bsica), una vez instalado el paquete, es tan simple como escribir la
siguiente instruccin:

php [NOMBRE_FICHERO]

Los corchetes nunca deben de escribirse, simplemente indican que


la frase contenida en ellos deber substituirse por, en este caso, el
nombre del script a ejecutar.

Ceina - Centros de Autoformacin Pgina 24


Programacin PHP 5 y MySQL (mdulo 1)

Ahora debemos acceder a la lnea de comandos del sistema, para


de forma rudimentaria ejecutar nuestro primer script.

Pulsa Inicio Todos los programas.

Selecciona la carpeta Accesorios y escoge Smbolo del sistema

Quizs, en tu sistema, se encuentre en otra ubicacin. En cualquier


caso, cuando lo hayas ejecutado, vers la ventana siguiente:

Ahora, con los antiguos comandos del sistema operativo, dirgete a


la carpeta adecuada:

Cd \Archivos de programa\Bitnami Wampstack\Php

Ceina - Centros de Autoformacin Pgina 25


Programacin PHP 5 y MySQL (mdulo 1)

El sistema te llevar a la carpeta indicada.

Escribe el comando que hemos comentado:

php prueba1.php

El sistema responder con un mensaje:

Perfecto!

No cierres la ventana, por el momento.

Ceina - Centros de Autoformacin Pgina 26


Programacin PHP 5 y MySQL (mdulo 1)

Sebastin, despus de ejecutar el script de la forma sealada, se ha


dado por satisfecho: el mismo texto escrito en el fichero
Prueba1.php ha sido mostrado por pantalla.

La primera prueba ha funcionado correctamente, pero tampoco es


muy excitante, no se ha visto nada que muestre las caractersticas
especiales de PHP.

Ahora bien, Por qu se ha mostrado el texto introducido en el


fichero si no hemos escrito ninguna instruccin que especficamente
indique que se mostrase por pantalla?

El motor de PHP configurado de manera estndar, muestra el


contenido del fichero que se est leyendo tal cual es, hasta
encontrarse con unas etiquetas especiales que indican que, lo que
se escribe a continuacin, es cdigo PHP y que por tanto deber
interpretarse de manera especial, dinmicamente.

Estas etiquetas pueden configurarse de diferentes maneras, pero las


que encontrars habitualmente son <?php para indicar que
comienza cdigo PHP, y ?> para indicar dnde acaba,
respectivamente.

Ya es tarde, pero Sebastin tiene ya el gusanito en el cuerpo. Ahora


quiere probar cmo mostrar algo dinmico

Qu dato actual puedo mostrar para confirmar que la informacin


es dinmica?... La hora!

Ceina - Centros de Autoformacin Pgina 27


Programacin PHP 5 y MySQL (mdulo 1)

Sebastin crea un nuevo fichero: Prueba2.php y deja as su


contenido:

Bienvenido al Club Deportivo Rio Grande!

Fecha actual: <?php echo date('d-m-Y'); ?>

Gurdalo a continuacin en la misma carpeta que hemos usado para


el primer script.

Si lo ejecutas ahora, vers que se imprimir en una lnea el primer


mensaje de texto, seguido por el mensaje de fecha actual (formato
da/mes/ao, indicado por el argumento pasado a la funcin date).

Has visto como es posible entrelazar partes estticas de la salida


con otras que son dinmicas?

Sebastin parece algo ms entusiasmado. Ha podido dinamizar un


pequeo script, y ahora quiere ir a por ms.

Como ejercicio, se ha planteado repetir un texto un nmero arbitrario


de veces, y ha encontrado el siguiente ejemplo en algn rincn de
Internet:

<?php
define('NUM_REPETICIONES', 5);

$fecha = date('d-m-Y');

for($i = 0; $i < NUM_REPETICIONES; $i++) {


echo "Entrada para el partido del $fecha.", PHP_EOL;
}
?>

Ceina - Centros de Autoformacin Pgina 28


Programacin PHP 5 y MySQL (mdulo 1)

Escrbelo en el bloc de notas y gurdalo, de nuevo, en la misma


carpeta anterior con el nombre Repeticiones.php.

A continuacin, prubalo.

El resultado ser:

No cierres la ventana.

Ceina - Centros de Autoformacin Pgina 29


Programacin PHP 5 y MySQL (mdulo 1)

El cdigo es algo complejo para el nivel de aprendizaje actual, pero


cumple su objetivo a la perfeccin, imprimir un mensaje de texto
tantas veces como se le indica, sin suponer ningn esfuerzo. Para
eso est la tecnologa!

Este ejemplo inicial, aunque breve, introduce varios de los conceptos


fundamentales presentes en PHP.

Apertura y cierre de etiquetas (tags) PHP


Sintaxis
Definicin y utilizacin de una variable
Interpolacin de variables dentro de cadenas de texto
Definicin de una constante
Uso de una estructura de control

No te preocupes si todos estos conceptos ahora suenan extraos,


los irs descubriendo y sers capaz de utilizarlos antes de finalizar
este primer mdulo.

Repasemos, junto a Sebastin, cada uno de estos conceptos,


comenzando por la apertura y cierra de etiquetas

Como hemos comentado en prrafos anteriores, debemos indicar al


motor de PHP qu trozos de nuestro cdigo son dinmicos y por
tanto deben procesarse de manera especial, y qu trozos son
estticos y por tanto deben mostrarse tal cual son.

Para ello y tal como te adelantamos, existen las etiquetas (o tags) de


apertura y cierre. Todo lo comprendido entre estos tags ser
validado por PHP, a excepcin de cdigo esttico.

Ceina - Centros de Autoformacin Pgina 30


Programacin PHP 5 y MySQL (mdulo 1)

Veamos algunos ejemplos, sin necesidad de probarlos, aunque si lo


deseas puedes hacerlo tal y como has visto en las pginas
anteriores:

<?php
$nombre = 'Pablo';
?>
[ Mi nombre es "<?php echo $nombre; ?>" ]

En el ejemplo anterior, hay dos bloques PHP bien diferenciados por


los tags que indican inicio y fin de PHP.

El primero de ellos realiza una asignacin, mientras que el segundo


bloque simplemente muestra el valor que contiene una variable.

El resultado de ejecutar este script sera el siguiente (prubalo si


quieres):

[ Mi nombre es "Pablo" ]

Como puedes comprobar, el resultado muestra todo lo que est


fuera de los tags PHP y oculta lo que est dentro, a menos que se le
indique que queremos mostrar un resultado, y para ello utilizamos la
funcin echo().

Ceina - Centros de Autoformacin Pgina 31


Programacin PHP 5 y MySQL (mdulo 1)

Cuestiones generales de sintaxis

A esta altura habrs notado que para separar diferentes


instrucciones se utiliza el punto y coma no?

Por ejemplo, el siguiente cdigo tiene tres instrucciones bien


diferenciadas.

<?php
$a = 1;
$b = 33 * 102;
$c = (10 * 2) / 4;
?>

Este nuevo ejemplo, aunque parezca una nica instruccin por estar
en la misma lnea, tambin tiene tres instrucciones delimitadas por el
punto y coma.

<?php $a = 1; $b = 5; $c = 4 * 2; ?>

Ceina - Centros de Autoformacin Pgina 32


Programacin PHP 5 y MySQL (mdulo 1)

Comentarios

Los comentarios son elementos que acompaan a nuestro cdigo y


aaden explicaciones de lo que estamos haciendo. Son muy tiles
para uno mismo y fundamentales en cdigo que ser compartido
entre un nmero grande de personas.

Existen tres formas de aadir comentarios en PHP; las dos primeras


son similares ya que permiten hacer comentarios de una nica lnea.

El comentario comienza bien con una doble barra (//) o con la


almohadilla (#), y finaliza al acabar la lnea o finalizar el bloque PHP.

<?php
$precio = 100; // Precio unitario
$impuesto = $precio * 0.16; # Calculo del impuesto
?>

La tercera y ltima forma de comentar es encerrando nuestro


comentario entre /* y */.

Ceina - Centros de Autoformacin Pgina 33


Programacin PHP 5 y MySQL (mdulo 1)

La ventaja de esta ltima forma de comentar es que permite


comentarios de varias lneas.

<?php
/*
Este script lee el correo entrante y elimina
aquellos que detecta como spam.

Version: 1.0
Autor: Scott Tiger
*/
// @TODO
?>

Documentar nuestro cdigo habla muy bien de nosotros como


desarrolladores. Entre otras cosas, facilita la lectura a otros
programadores y nos ayuda a reforzar nuestro entendimiento y el
objetivo de nuestro cdigo.

Ceina - Centros de Autoformacin Pgina 34


Programacin PHP 5 y MySQL (mdulo 1)

Sebastin hace una pausa y reflexiona es cierto que crear


utilidades que me muestren a m y a mi equipo la informacin que
necesite, pero Y si quiero hacer justo lo contrario, es decir ocultar
cierta informacin?

Si bien acabamos de decir que las porciones estticas de los scripts


sern siempre mostradas tal cual estn, es posible que se muestre u
oculte informacin, dependiendo de valores que nosotros mismos
hayamos definido y la ayuda de estructuras de control.

Estudiemos el siguiente ejemplo. Redctalo, como siempre, desde el


bloc de notas de Windows y gurdalo en la misma carpeta con el
nombre Condicin.php (acurdate de seleccionar Todos los
archivos en el cuadro correspondiente):

<?php
$horaActual = 19; // Son las 7 de la tarde
?>
<?php if($horaActual < 13): ?>
Buenos das!
<?php else: ?>
Buenas tardes!
<?php endif; ?>

En el cdigo anterior podemos identificar cuatro secciones PHP.

Las primeras tres lneas asignan a la variable $horaActual el valor


19 (las 7 de la tarde).

Las lneas 5 (Buenos das!) y 7 (Buenas tardes!) estn fuera de las


etiquetas PHP, por lo cual, y siguiendo lo que hemos visto, deberan
mostrarse ambas.

Ceina - Centros de Autoformacin Pgina 35


Programacin PHP 5 y MySQL (mdulo 1)

Sin embargo, el conjunto de lneas 4, 6 y 8, al tratarse de una


estructura de control (veremos esto en profundidad ms adelante)
modifican el flujo natural de la aplicacin para tomar un camino u
otro, dependiendo de si la condicin de la lnea 4, que la hora actual
sea menor de 13 ($horaActual < 13), se cumple o no.

Ejecuta el script desde la ventana del smbolo del sistema.

En este caso, como hemos asignado el valor 19 a la hora actual, el


mensaje ser:

Buenas tardes!

Si la primera admiracin muestra un smbolo raro, no te preocupes,


es cuestin de cdigos de pas.

El control de flujo en una aplicacin es una de las caractersticas


fundamentales del lenguaje. De hecho, podemos entrelazar
porciones de PHP con salidas de texto plano como hemos visto, o
tambin con otro tipo de salidas como HTML y XML, que ya
comentaremos.

Para ver qu pasa si asignamos el valor 10 a la hora actual, modifica


el cdigo PHP, para dejar la lnea en cuestin as:

$horaActual = 10; // Son las 10 de la maana

Ceina - Centros de Autoformacin Pgina 36


Programacin PHP 5 y MySQL (mdulo 1)

Obviamente, si no modificas el comentario no afecta al


comportamiento de nuestro pequeo programa, aunque siempre es
recomendable hacerlo, para mantener una buena documentacin.

Guarda los cambios en el bloc de notas, con Archivo Guardar.

Ejectalo de nuevo.

Esta vez, el mensaje ser:

Buenos das!

De nuevo, no te preocupes por los smbolos raros.

Hagamos una prueba ms para reforzar este tema, viendo un nuevo


cdigo, aunque por el momento no lo probaremos, ya que an no
hemos puesto en marcha el servidor PHP y algunas de las opciones
dependen de l.

Dicho cdigo define una variable llamada $colores que contiene


una lista de nombres de colores bsicos.

Ceina - Centros de Autoformacin Pgina 37


Programacin PHP 5 y MySQL (mdulo 1)

Esta vez, en lugar de mezclar los resultados con texto plano, lo


mezclaremos con cdigo HTML, lenguaje que puede mostrarse en
un navegador Web.

<?php
$colores = array('Rojo', 'Verde', 'Azul', 'Amarillo');
?>
<ul>
<?php foreach($colores as $color): ?>
<li><?php echo $color; ?></li>
<?php endforeach; ?>
</ul>

El resultado que se vera en un navegador Web (y que ahora no


puedes comprobar) se puede ver aqu:

En el cdigo nos encontramos con varias novedades

Ceina - Centros de Autoformacin Pgina 38


Programacin PHP 5 y MySQL (mdulo 1)

La primera es la asignacin a una variable $colores de un elemento


llamado array. El array, o matriz, no es ms que una coleccin de
elementos, y en el ejemplo que estudiamos es concretamente una
coleccin de colores (cada tem de la coleccin separado por coma).

El juego de instrucciones foreach/endforeach ser revisado ms


adelante, pero bsicamente permite recorrer cada uno de los
elementos de un conjunto de forma rpida. En el ejemplo tambin,
cada elemento individual de la coleccin se recoge en la variable
llamada $color.

En la salida se ha creado una lista con vietas porque, como


veremos en el mdulo de Desarrollo Web con PHP, HTML ofrece
etiquetas para diferentes propsitos, y el elemento de tipo ul define
una lista sin ordenar (Unordered List) y cada li define un elemento
de la lista (List Item).

Ceina - Centros de Autoformacin Pgina 39


Programacin PHP 5 y MySQL (mdulo 1)

Si, por ejemplo, cambiramos el par ul por un par de etiquetas ol, el


resultado sera este otro:

Interesante verdad? Sin duda esta versatilidad para cambiar entre


cdigo dinmico y esttico ha sido decisivo para hacer de PHP lo
que es hoy en da.

A veces la versatilidad de la que hablamos en la apertura y cierre de


etiquetas PHP puede resultar algo tediosa cuando se hace de forma
reiterada.

Por ello no es obligatorio alternar constantemente entre porciones


estticas y dinmicas, de hecho, a veces resulta ms cmodo
generar todo el contenido desde PHP, aunque ste sea esttico.

Ceina - Centros de Autoformacin Pgina 40


Programacin PHP 5 y MySQL (mdulo 1)

Observa el siguiente trozo de cdigo y compralo con el anterior:

<?php
$colores = array('Rojo', 'Verde', 'Azul', 'Amarillo');
echo '<ul>';
foreach($colores as $color) {
echo '<li>', $color, '</li>';
}
echo '</ul>';
?>

En este ejemplo hay un nico bloque de PHP, debido a que por


practicidad se han impreso desde cdigo las partes de la salida que
son estticas, con los comandos HTML necesarios, evitando abrir y
cerrar las etiquetas de PHP.

Por cuestiones de rendimiento es recomendable pasar grandes


bloques de texto fuera de los tag de PHP, y dejar el echo/print y
funciones similares para cadenas de texto reducidas.

Como si esto no fuese suficientemente til, PHP nos ofrece varias


alternativas a la hora de mostrar mensajes por la salida.

La declaracin echo que hemos utilizado realiza lo que un eco en


una cueva o un valle: recibir un mensaje y repetirlo.

Esta declaracin parece demasiado simple, pero veremos que nos


ofrece muchsimas facilidades a la hora de mostrar mensajes.

Ceina - Centros de Autoformacin Pgina 41


Programacin PHP 5 y MySQL (mdulo 1)

La opcin de uso ms obvia es mostrar un nico mensaje, que se le


pasa como parmetro.

<?php
echo 'Hola mundo!';
?>

El ejemplo imprimir por pantalla:

Hola mundo!

Qu pasara si quisiramos mostrar varios mensajes seguidos?

Sebastin ha ideado la siguiente solucin:


<?php
echo 'Hola mundo!';
echo 'Esta es una prueba!';
echo 'Adis, mundo cruel.';
?>

Vale, esa opcin es vlida, pero echo nos da otra posibilidad, y es


separar cada mensaje nuevo con una coma, como vers en el
siguiente ejemplo:

<?php
echo 'Hola mundo!', 'Esta es una prueba!', 'Adis, mundo
cruel.';
?>

Bien! Parece que nos hemos ahorrado un par de lneas de cdigo:

Hola mundo! Esta es una prueba! Adis, mundo cruel.

Ceina - Centros de Autoformacin Pgina 42


Programacin PHP 5 y MySQL (mdulo 1)

Sin embargo, ninguna de las salidas anteriores ha separado cada


mensaje en una nueva lnea.

Por qu esto es as? Simplemente porque PHP respeta tus


ordenes y no intenta hacer ms de lo que le has solicitado.

Si quieres aadir un salto de lnea tienes dos opciones:

La primera de ellas es usar el carcter especial \n o \r


(dependiendo si utilizas Mac, Windows o Unix/Linux) dentro
de la cadena de texto, que indica que en ese lugar ocurrir un
salto de lnea.

La segunda opcin es utilizar una constante (variable


especial) de PHP que se reemplaza automticamente por el
salto de lnea que tu sistema operativo utiliza habitualmente.
Por tanto sta segunda opcin es la recomendada por
cuestiones de portabilidad a otros sistemas.

La constante que es reemplazada por un salto de lnea se llama


PHP_EOL, y responde a PHP End Of Line, o fin de lnea.

As como existen \r y \n para saltar de lnea manualmente, tambin


se pueden utilizar otros caracteres como \t para aadir una
tabulacin horizontal, o \\ para introducir una barra invertida en
nuestras cadenas de texto.

Ceina - Centros de Autoformacin Pgina 43


Programacin PHP 5 y MySQL (mdulo 1)

Veamos el ejemplo anterior introduciendo los saltos de lnea. Esta


vez, como ya no estamos usando entorno Web ni HTML, deberas
escribir el cdigo y probarlo.

Ejecuta Archivo Nuevo en el bloc de notas, escribe el cdigo


inferior y gurdalo con el nombre Saltos.php, en la carpeta de
siempre.
<?php
echo 'Hola mundo!', PHP_EOL, 'Esta es una prueba!',
PHP_EOL, 'Adis, mundo cruel.', PHP_EOL;
?>

El resultado ahora es el siguiente:

Hola mundo!
Esta es una prueba!
Adis, mundo cruel.

Genial!

Debes de notar un cosa: al pasar trozos de texto separados por


coma a la declaracin echo, estamos asumiendo que se trata de
cadenas de texto separadas.

Ceina - Centros de Autoformacin Pgina 44


Programacin PHP 5 y MySQL (mdulo 1)

Ahora te presentaremos cmo unir varias cadenas de texto en una


nica, y cmo utilizar variables dentro de una cadena de texto.

La unin de cadenas de texto se conoce como concatenacin. En


PHP, para concatenar dos o ms cadenas de texto se usa el
operador punto (.).

Veamos un ejemplo:

<?php
$nombreSucursal = 'Barcelona';
/*
Primero concatenamos la palabra 'Sucursal ' al nombre de la
sucursal contenido en la variable $nombreSucursal
*/
$mensaje = 'Sucursal ' . $nombreSucursal;
// Concatenamos ahora a $mensaje el salto de lnea durante la
asignacin
$mensaje .= PHP_EOL;
print $mensaje;
?>

Crea el script y gurdalo en la carpeta que ya conoces, con el


nombre Concatenar.php. Si quieres, ahrrate los comentarios.

A continuacin, prubalo.

Ceina - Centros de Autoformacin Pgina 45


Programacin PHP 5 y MySQL (mdulo 1)

El resultado ser:

Sucursal Barcelona

Ojo! Escribe el espacio en blanco que aparece despus de la


palabra Sucursal, en el cdigo, si se muestran las palabras juntas y
no intentes usar el operador ms (+) para concatenar cadenas
imitando como funciona en otros lenguajes. En PHP el operador
ms (+) slo te servir para realizar la suma de nmeros.

Una alternativa al cdigo anterior sera utilizando directamente la


variable dentro de la cadena de texto, tal como te enseamos a
continuacin:

<?php
$nombreSucursal = 'Barcelona';
/*
Utilizamos la variable $nombreSucursal dentro de la cadena de
texto.
*/
$mensaje = "Sucursal $nombreSucursal";
// Concatenamos a $mensaje el salto de lnea durante la
asignacin
$mensaje .= PHP_EOL;
print $mensaje;
?>

Modifica tu cdigo y prubalo.

Ceina - Centros de Autoformacin Pgina 46


Programacin PHP 5 y MySQL (mdulo 1)

Para poder utilizar una variable dentro de una cadena de texto se


deben seguir las siguientes reglas:

1. La cadena de texto debe estar encerrada entre comillas


dobles (fjate bien en el cdigo anterior), ya que cadenas de
texto con comillas simples muestran su contenido sin expandir
ninguna variable que puedan contener.

2. El nombre de la variable debe estar separado del resto del


texto, o estar delimitado entre llaves.

Veamos un ejemplo que seguro dejar claro el comportamiento


comentado de PHP. Crea un archivo nuevo y escribe exactamente
ste cdigo:

<?php
$hora = 9;
$minutos = 48;
echo 'Hora actual: $hora:$minutos' . PHP_EOL;
echo "Hora actual: $hora:$minutos" . PHP_EOL;
?>

Gurdalo como ComillasDobles.php. La salida de este script ser:

Hora actual: $hora:$minutos


Hora actual: 9:48

Como has podido comprobar, la primer cadena de texto no ha


expandido (reemplazado, utilizado) ninguna variable debido a estar
encerrada entre comillas simples, mientras que la segunda s que
realiza la substitucin correctamente.

Ceina - Centros de Autoformacin Pgina 47


Programacin PHP 5 y MySQL (mdulo 1)

Llegado a este punto, Sebastin cree que ya tiene conocimientos


bsicos sobre cmo mostrar informacin y se ha propuesto empezar
a profundizar en ciertos temas.

Ha visto como asignar valores a una variable, pero no est


convencido de lo que ello significa.

Por suerte, encuentra la siguiente nota en Internet:

Una variable es un espacio de la memoria del PC donde


dejamos almacenado un dato o valor, que ms adelante
leeremos y/o modificaremos segn sea necesario.

Para facilitar la recuperacin de estos valores (como prcticamente


en el resto de lenguajes actuales) PHP obliga a asociar una variable
a un nombre que la identifique.

De esta forma, y al igual que hacemos las personas, es posible


guardar en memoria un dato (por ej.: un telfono, una direccin) y
relacionarla con un nombre que nos permita luego recuperarlo.

Dentro del cdigo PHP es posible identificar a una variable del resto
de elementos por el signo del dlar que antecede al nombre.

Por ejemplo:

<?php
$contador = 36;
?>

Ceina - Centros de Autoformacin Pgina 48


Programacin PHP 5 y MySQL (mdulo 1)

En este ejemplo, a la variable $contador se la ha asignado el


nmero 36.

El nombre de una variable debe ser algo que represente lo mejor


posible el valor que contendr. As pues, es recomendable usar un
nombre como $contador antes que otros como $co o $cr para
designar el mismo concepto.

Adicionalmente, PHP impone dos simples reglas a la hora de


escoger el nombre de una variable.

Conozcmoslas:

1. Comenzar con una letra o guin bajo, despus del $.


2. Opcionalmente: uno o ms caracteres de tipo letra, guin bajo
o nmero.

As por ejemplo $nombre, $edad, $_titulo son nombres vlidos,


mientras que $1nombre, $#direccion no lo son.

La forma de asignar un valor a la variable es bien sencilla,


simplemente escribiremos el nombre de la misma, seguido del
operador de asignacin (el signo igual, =) y finalmente el valor que
se asignar a la variable.

Por ejemplo:
<?php
$edad = 38;
$nombre = 'Jess';
?>

Ceina - Centros de Autoformacin Pgina 49


Programacin PHP 5 y MySQL (mdulo 1)

Si repetimos la operacin de asignacin a una misma variable, le


estaremos asignado un nuevo valor, y por tanto el anterior se
perder (a no ser que lo hayamos copiado a otro sitio).

Aclaracin: Los nombres de variables en PHP son sensibles a los


cambios de minsculas y maysculas, y en consecuencia variables
como $minombre y $miNombre son consideradas diferentes.

Una variable puede almacenar diferentes tipos de valores, dentro de


los soportados por PHP, y que listamos a continuacin. Si lo crees
necesario, prueba los cdigos que te apetezcan:

Boolean

Es un tipo de datos muy simple que acepta los valores true


(verdadero), false (falso) o una expresin entera. Al final del cdigo
se aclara algn concepto del mismo:

<?php
define('SERVIDOR', 'produccion');

// $modoPruebas tendr false, 1 no es igual a 3


$modoPruebas = (1 == 3);

// $modoPruebas tendr true


$modoPruebas = true;

/*
$modoPruebas tendr false, la constante SERVIDOR
no es igual a local.
*/
$modoPruebas = (SERVIDOR == 'local');

Ceina - Centros de Autoformacin Pgina 50


Programacin PHP 5 y MySQL (mdulo 1)

// No se imprimir el mensaje porque $modoPruebas es false


if($modoPruebas) {
print 'Ejecutando en modo de pruebas.' . PHP_EOL;
}
?>

Los signos == realizan una comprobacin entre dos elementos. Por


ejemplo, 1 == 3 equivale a preguntar: 1 es igual a 3?. El resultado,
lgicamente, es false.

En el ejemplo anterior, la sentencia es sta:

$modoPruebas = (1 == 3);

As, la variable $modoPruebas tendr el valor booleano false, al


recibir el resultado de la comprobacin:

(1 == 3)

Lo entiendes?

En cambio, (1==1) contendr true (verdadero), ya que el resultado


de dicha pregunta es ste. Fjate que podemos asignar un valor de
este tipo directamente a la variable escribiendo, simplemente, una
sentencia como:

$modoPruebas=true;

Ceina - Centros de Autoformacin Pgina 51


Programacin PHP 5 y MySQL (mdulo 1)

Integer

Es el conjunto de nmeros enteros (negativos y positivos).

Pueden ser expresados en base decimal (base 10), octal (base 8) y


hexadecimal (base 16), precedidas opcionalmente por el signo (+/-).

Para diferenciar la base en la que se ha expresado un nmero se


siguen las siguientes reglas:

En la notacin octal se antepone el 0.


En la notacin hexadecimal se antepone el 0x.
La base decimal no requiere ningn tratamiento especial.

<?php
$a = 25; // 25 en base decimal;
$b = 0x10; // 16 en base hexadecimal
$c = 011; // 9 en base octal

/*
La funcin printf permite imprimir valores y especificar su
formato. En este ejemplo %d representa un valor entero.
*/
printf("a: %d, b: %d, c: %d\n", $a, $b, $c);
?>

Observa la curiosa forma de imprimir en la ltima lnea, ya que


simplemente indicamos en qu lugar encajarn los datos, con qu
formato (%d para enteros, %f para flotantes, por ejemplo) y, al final,
y despus de cerrar las comillas, los nombres de las variables en el
orden que aparecern.

Ceina - Centros de Autoformacin Pgina 52


Programacin PHP 5 y MySQL (mdulo 1)

Escribe el cdigo anterior, omitiendo los comentarios para ganar


rapidez si quieres, y gurdalo con el nombre Enteros.php.

Al ejecutarlo, el resultado ser:

a: 25, b:16, c:9

Ahora, modifica el cdigo y deja la ltima lnea as:

printf("a: %f, b: %f, c: %f\n", $a, $b, $c);

a: 25.000000, b: 16.000000,c: 9.000000

Observars como, al usar el parmetro %f los nmeros se muestran


como float, con una parte entera y otra fraccionaria. Toma nota
que, si quieres mostrar menos decimales, debers usar la variacin
de este comando de la forma siguiente, por ejemplo:

%0.3f para mostrar 3 decimales


%0.2f paramostrar 2 decimales

Ceina - Centros de Autoformacin Pgina 53


Programacin PHP 5 y MySQL (mdulo 1)

Float

Son los llamados nmeros reales, compuestos como hemos


mencionado, por una parte entera y otra fraccionaria.

La forma de representar un float es separando la parte entera y la


fraccionaria con un punto (el uso de la coma es errneo), como
muestra el siguiente ejemplo:

<?php
$precioUnitario = 59.9;
$distTierraLuna = 10 / 4; // $distTierraLuna es 2.5
?>

String

Popularmente este tipo de datos se conoce como una cadena (o


serie) de caracteres y, de hecho, sirve para almacenar caracteres.
Su uso es muy habitual.

Sin embargo, un string es realmente una cadena de bytes y, por


esta razn, se puede utilizar para almacenar simples cadenas de
texto o enormes ficheros binarios (como imgenes, archivos pdf,
etc.).

Ceina - Centros de Autoformacin Pgina 54


Programacin PHP 5 y MySQL (mdulo 1)

En el siguiente cdigo, por ejemplo, almacenamos en una variable el


contenido de un fichero PNG (de imagen) y lo mostramos por la
salida estndar. ste no podrs probarlo, ya que requerira el uso del
navegador y el servidor PHP:

<?php
/*
La siguiente lnea instruye al navegador que el contenido
que genera este script es una imagen.
*/
header('Content-type: image/png');

$imagen = file_get_contents('logo.png');
echo $imagen;
?>

Y aqu tienes un cdigo (ya visto) donde se ve el uso de algunas


cadenas de caracteres:

<?php
$nombreSucursal = 'Barcelona';
$mensaje = 'Sucursal ' . $nombreSucursal;
$mensaje .= PHP_EOL;
print $mensaje;
?>

Ceina - Centros de Autoformacin Pgina 55


Programacin PHP 5 y MySQL (mdulo 1)

Array

Se utiliza para representar colecciones de datos. A diferencia de


otros lenguajes, en PHP un array es tambin un diccionario, porque
asocia una key o ndice (la palabra en el diccionario) con su valor (la
definicin de esta palabra).

Veamos un ejemplo que ser esclarecedor:

<?php
$diccionario = array(
'rbol' => 'Planta perenne, de tronco leoso y elevado,
que se ramifica a cierta altura del suelo.',
'animal' => 'Ser orgnico que vive, siente y se mueve
por propio impulso.',
'libro' => 'Conjunto de muchas hojas de papel u otro
material semejante que, encuadernadas, forman un volumen.'
);
?>

Ampliaremos en detalle este tema en otro mdulo.

Ceina - Centros de Autoformacin Pgina 56


Programacin PHP 5 y MySQL (mdulo 1)

Object

Este tipo de datos se considera compuesto ya que permite contener


mltiples variables, as como tambin funciones, en un nico
elemento. Ser discutido en otro mdulo, aunque aqu te dejamos un
trozo de cdigo para que empieces a hacerte a una idea:

<?php
class Persona {
var $nombre;
var $edad;

function __construct($nombre, $edad) {


$this->nombre = $nombre;
$this->edad = $edad;
}

function saludar() {
echo "Mi nombre es {$this->nombre} y tengo
{$this->edad} aos.";
}
}

$p = new Persona('Luis', 22);


$p->saludar();
?>

La salida del script ser:

Mi nombre es Luis y tengo 22 aos.

Ceina - Centros de Autoformacin Pgina 57


Programacin PHP 5 y MySQL (mdulo 1)

Resource

Un resource es un tipo de variable especial, que hace referencia a


un recurso que est gestionado fuera de PHP.

Se trata de enlaces entre una variable en PHP y un elemento


externo como un fichero, una conexin a una base de datos, o un
documento XML.

<?php
$conexion = mysql_connect('localhost', 'admin', 'secreto');
// $conexion es una variable de tipo resource (recurso)
mysql_close($conexion);
?>

NULL

Finalmente, el tipo NULL informa de que una variable no tiene valor


asignado, o que lo tuvo y fue liberado (o borrado) con la funcin
unset():

<?php
$nombre = 'Francsco';
echo "Su nombre es $nombre\n";

unset($nombre);
// $nombre ya no contiene ningn valor debido al unset
// PHP lanza una advertencia
echo "Su nombre es $nombre\n";
?>

Ceina - Centros de Autoformacin Pgina 58


Programacin PHP 5 y MySQL (mdulo 1)

Referencias a variables

Al explicar el concepto variables, hicimos una analoga entre stas y


la forma de asociar el nombre de una persona con su telfono,
direccin, edad, etc. en nuestra propia memoria.

Seguramente conoces a ms de una persona a la que te refieres de


dos maneras quizs por su nombre, o bien por su apodo o por su
apellido...

PHP ofrece una forma de tratar alias para denominar un mismo


valor, mediante referencias.

El operador de referencia es el ampersand (&), y su uso est


ejemplificado en el siguiente cdigo:

<?php
// La forma incorrecta, guardar el mismo dato en variables
diferentes
$telSantiago = 666333222;
$telSanti = 666333222;

/*
Si se cambia el valor a una de las variables, la otra no se
dar cuenta produciendo informacin desactualizada!
*/
$telSanti = 666000111;

echo "El telfono de Santiago es $telSantiago, y el telfono


de Santi es $telSanti\n";

// La forma correcta, usando referencias (alias)


$telSantiago = 666333222;

Ceina - Centros de Autoformacin Pgina 59


Programacin PHP 5 y MySQL (mdulo 1)

$telSanti = &$telSantiago;

/*
Usando referencias, al cambiar una de las variables
la otra es "notificada" automticamente!
*/
$telSanti = 666000111;

echo "El telfono de Santiago es $telSantiago, y el telfono


de Santi es $telSanti\n";
?>

Produce la siguiente salida:

El telfono de Santiago es 666333222, y el telfono de Santi


es 666000111
El telfono de Santiago es 666000111, y el telfono de Santi
es 666000111

Ceina - Centros de Autoformacin Pgina 60


Programacin PHP 5 y MySQL (mdulo 1)

Operaciones con variables

Conociendo la definicin de variables y sus tipos, ahora vamos hacia


el siguiente paso, operar entre ellas. Operar comprende muchas
operaciones como las aritmticas (sumar, restar, multiplicar, etc.),
lgicas, de bits, entre otras.

Las operaciones aritmticas son sin duda las ms fciles de


comprender porque son aquellas que podemos realizar utilizando
una calculadora.

As por ejemplo, para sumar o restar dos valores simplemente los


unimos mediante el operador + (suma) o - (resta).

Los operandos (los miembros de la operacin) pueden ser


constantes, variables u otras expresiones ms complejas.

<?php
$subtotal = 104;
$impuestos = 30;
echo ($subtotal + $impuestos); // Esto imprimir "134"
?>

El resultado de estas operaciones puede ser almacenado en otra


variable, que a su vez puede formar parte de otra operacin. Las
posibilidades son infinitas!

<?php
$subtotal = 100;
$transporte = 20;
$total = $subtotal + $transporte;
?>

Ceina - Centros de Autoformacin Pgina 61


Programacin PHP 5 y MySQL (mdulo 1)

En el siguiente ejemplo vemos una operacin de substraccin.

<?php
$numEntradas = 60;
$numVendidas = 13;

$numRestantes = $numEntradas - $numVendidas;

// La siguiente lnea imprimir "Entradas restantes: 47"


echo "Entradas restantes: $numRestantes";
?>

En referencia a las operaciones de suma y resta, PHP pone a


nuestra disposicin unos operadores especiales de incremento y
decremento, que nos permitirn sumar o restar nicamente una
unidad.

Esto es especialmente til en el uso de contadores, o iteradores.

<?php
$contador = 245;
/*
Incrementamos (sumamos 1) al contador
porque hemos recibido una nueva visita.
*/
$contador++;
// Ahora el contador vale 246

Ceina - Centros de Autoformacin Pgina 62


Programacin PHP 5 y MySQL (mdulo 1)

// La siguiente lnea imprimir "Usted es la visita 246!"


print "Usted es la visita $contador!";
?>

Prueba el cdigo, si quieres, guardndolo con el nombre


Incremento.php.

Los operadores de incremento y decremento aceptan dos sintaxis


distintas. La primera, que ya hemos visto, usa el operador ++ a la
derecha de la variable. La segunda lleva el operador de incremento
(++) o decremento (--) a la izquierda del nombre de la variable.

La diferencia entre ambas es que, dentro de una expresin ms


grande, el contenido de la variable que ser tomado en cuenta ser
el actual en el caso de los operadores a la derecha, o el valor ya
actualizado en el caso de los operadores a la izquierda.

Mejor hagamos una prueba:

<?php
$contador = 5;

$resultado = $contador++ * 2;
/*
$resultado aqu contiene 10.
$contador aqu vale 6.
*/

$contador = 5;

$resultado = ++$contador * 2;

Ceina - Centros de Autoformacin Pgina 63


Programacin PHP 5 y MySQL (mdulo 1)

/*
$resultado aqu contiene 12.
$contador aqu vale 6.
*/
?>

De este ejemplo se desprende que la posicin del operador de


incremento/decremento afecta a la expresin donde est siendo
evaluado y no a la propia variable, que termina siempre con el valor
modificado.

Acabemos de ver qu otras operaciones aritmticas pone PHP a


nuestra disposicin:

Multiplicacin

<?php
$tapasPorPersona = 4;
$numTapas = 10 * $tapasPorPersona;
?>
Necesitaremos <?php echo $numTapas; ?> para la fiesta.

Divisin

<?php
$premioLoteria = 200000;
$numFamiliares = 6;
$reparto = $premioLoteria / $numFamiliares;
printf("Cuando gane la lotera repartir %f entre mis
familiares.", $reparto);
?>

Ceina - Centros de Autoformacin Pgina 64


Programacin PHP 5 y MySQL (mdulo 1)

La operacin de divisin no necesita ms explicacin que indicar su


valor de retorno ser flotante (%f) o entero (%d), dependiendo de los
operandos.

Mdulo

La operacin mdulo es equivalente a obtener el resto de una


divisin y se usa el smbolo % para utilizarla:

<?php
$numCartas = 40;
$numJugadores = 3;
?>
Se repartirn <?php echo round($numCartas / $numJugadores) ?>
carta(s) a cada jugador y sobrarn <?php echo($numCartas %
$numJugadores) ?> carta(s).

El resultado del anterior script es el siguiente:

Se repartirn 13 carta(s) a cada jugador y sobrarn 1


carta(s).

Operadores de asignacin

El operador de asignacin lo hemos utilizado en muchas ocasiones


en prrafos anteriores, ahora simplemente presentaremos una forma
de combinar la asignacin con otras operaciones.

<?php
$otroNum = 3;
$otroNum += 5; // Es equivalente a $otroNum = $otroNum + 5
echo 'Otro nmero: ', $otroNum . PHP_EOL;
?>

Ceina - Centros de Autoformacin Pgina 65


Programacin PHP 5 y MySQL (mdulo 1)

Operadores de comparacin

Estos operadores nos permiten comparar dos valores, y devuelven


un Boolean para indicar si son iguales (true) o distintos (false). Ya
los hemos usado en algn ejemplo con anterioridad.

Los operadores de comparacin son la clave de muchas estructuras


de control, pues dependiendo del resultado de una comparacin, la
aplicacin tomar un camino u otro:

<?php
$estacion = 'verano';
if($estacion == 'invierno') {
echo 'No olvides abrigarte durante esta estacin del
ao.';
}
?>

En el ejemplo anterior se comparan dos valores (la variable


$estacion y la cadena de texto invierno) para comprobar su
igualdad.

La igualdad es uno de los operadores de comparacin, aunque


existen otros, como los siguientes:

Igual (==): Devuelve true cuando los dos operandos tienen igual
contenido.

Distinto (!=, <>): Devuelve true cuando los dos operandos tienen
distinto contenido.

Ceina - Centros de Autoformacin Pgina 66


Programacin PHP 5 y MySQL (mdulo 1)

Idntico (===): Devuelve true cuando los dos operandos tienen igual
contenido e igual tipo de datos (por ejemplo, los dos valores son 12
y, adems, son ambos de tipo Integer).

No idntico (!==): Devuelve true cuando los dos operandos tienen


distinto contenido o distinto tipo de datos (por ejemplo, los dos
valores son 12, pero uno es de tipo Integer y el otro Float).

Menor que (<): Devuelve true cuando el primer operando es menor


que el segundo.

Menor o igual que (<=): Devuelve true cuando el primer operando


es menor o igual al segundo.

Mayor que (>): Devuelve true cuando el primer operando es mayor


que el segundo.

Mayor o igual que (>=): Devuelve true cuando el primer operando


es mayor o igual que el segundo.

Ceina - Centros de Autoformacin Pgina 67


Programacin PHP 5 y MySQL (mdulo 1)

Operadores de control de errores

El lenguaje PHP muestra advertencias cada vez que algo no se ha


hecho de manera correcta (por ejemplo usar una variable no
declarada).

Si bien podemos deshabilitar estas advertencias a nivel global, es


mucho ms conveniente poder, para ciertas expresiones,
deshabilitar estas alertas.

Tal accin se realiza mediante el operador de supresin de errores


(@), simplemente anteponindola a la expresin que queremos
callar.

El primer ejemplo que sigue a continuacin mostrar la advertencia


al utilizar errneamente una variable, mientras que el segundo
estar en modo silencioso.

Ceina - Centros de Autoformacin Pgina 68


Programacin PHP 5 y MySQL (mdulo 1)

Primer ejemplo, con advertencia. Entra el cdigo y gurdalo con el


nombre Error1.php:

<?php

// Asignamos 40 a la variable $a
$a = 40;

// Ooops! Multiplicamos por una variable $A que no exste


(nota la mayscula)
$b = $A * 20;

echo "\$b vale $b\n";

?>

Ejectalo.

El resultado ser:

PHP Notice: Undefined variable: A


$b vale 0

Ceina - Centros de Autoformacin Pgina 69


Programacin PHP 5 y MySQL (mdulo 1)

Ahora modifica y guarda de nuevo el ejemplo, en modo silencioso:

<?php

// Asignamos 40 a la variable $a
$a = 40;

// Ooops! Multiplicamos por una variable $A que no exste


(nota la mayscula)
$b = @($A * 20); # Tomamos precauciones con la @

echo "\$b vale $b\n";


?>

Aadiendo el operador @, el error desaparece, aunque el clculo


continua siendo errneo al no encontrar la variable.

Fjate en el resultado:
$b vale 0

Ceina - Centros de Autoformacin Pgina 70


Programacin PHP 5 y MySQL (mdulo 1)

Operadores de ejecucin

Existe un operador ms en PHP que nos permite ejecutar cdigo del


propio sistema operativo, como si estuviramos en su lnea de
comandos (llamada shell).

Se trata del operador backticks (`) -el acento abierto -, y funciona


encerrando entre este smbolo el comando que queremos ejecutar.
El resultado (la salida) de la ejecucin del comando es devuelto para
que podamos, si as lo deseamos, almacenarla en una variable.

Utilizar backticks es igual a la utilizacin de la funcin shell_exec,


y as queda demostrado en el siguiente ejemplo:

<?php

/*
La salida del comando "tree" la mostramos
por pantalla.
*/
echo '=== Arbol del sistema ===', PHP_EOL;
echo `tree`, PHP_EOL;

/*
Utilizamos la funcin shell_exec
con identico resultado que con backticks.
*/
echo '=== Memoria utilizada ===', PHP_EOL;
echo shell_exec('mem'), PHP_EOL;

?>

Ceina - Centros de Autoformacin Pgina 71


Programacin PHP 5 y MySQL (mdulo 1)

Si no lo has hecho ya, escribe el script en un archivo al que llamars


Shell.php y gurdalo en la carpeta de siempre. Despus de
probarlo, vers el resultado que deber parecerse a ste:

Ceina - Centros de Autoformacin Pgina 72


Programacin PHP 5 y MySQL (mdulo 1)

Operadores lgicos

Los operadores lgicos permiten combinar diferentes expresiones de


forma que el resultado global sea consecuencia de las
sub-expresiones que contenga.

Para ello contamos con los siguientes operadores:

&& y and para una conjuncin de expresiones (se cumple una


expresin y se cumple la otra, o sea, se cumplen ambas).

|| y or para una disyuncin de expresiones (se cumple una expresin


o se cumple la otra, pero al menos una de las dos).

Se trata, simplemente, de los consabidos operadores lgicos que ya


habrs usado en otras ocasiones, sobretodo si has realizado algn
curso de bases de datos como Access.

Se usan para, por ejemplo, realizar acciones lgicas del tipo:

Lista clientes si la poblacin es Lleida y la edad mayor de 10.


Lista clientes si la poblacin es Lleida o Tarragona

Observa que en la primera lnea se deben listar los clientes que


cumplan ambas condiciones y, en cambio, en la segunda solamente
es necesario que se cumpla una de las dos.

Ceina - Centros de Autoformacin Pgina 73


Programacin PHP 5 y MySQL (mdulo 1)

He aqu un listado PHP de ejemplo que usa dichos operadores:

<?php

$llueve = false;
$nublado = true;

$soleado = true;
$estoyTrabajando = false;

// No llueve, pero esta nublado.


// Como se cumple una de las condiciones, la expresin global
es verdadera
if($llueve || $nublado) {
echo 'Hoy no salimos de casa', PHP_EOL;
}

// Voy a la playa si es soleado Y no estoy trabajando


// Si no trabajara, pero no hace sol, no voy.
// Si hace sol, pero estuviera trabajando, no voy.
if($soleado && !$estoyTrabajando) {
echo 'Hace sol y no trabajo Vamos a la playa!',
PHP_EOL;
}

?>

Te animas a probarlo por tu cuenta?

Ceina - Centros de Autoformacin Pgina 74


Programacin PHP 5 y MySQL (mdulo 1)

Malabarismo de tipos

Existen otros operadores, como los operadores de bits, que


manipulan un nmero alterando su representacin binaria (de 1s y
0s), aunque no debes preocuparte por este tipo de datos, los vers
como algo complejo ya no por los comandos, sino por el uso de
cdigo binario.

Antes de continuar con otros temas, es importante que conozcas


como PHP hace malabarismo con las variables. Crees que es una
broma, verdad? Pues no, type juggling (malabarismo de tipos) es
una caracterstica de PHP definida por lo siguiente:

No es necesario especificar el tipo de variable al declararla.


Una variable es tratada como un tipo o como otro
dependiendo del contexto. As, una variable con un entero
asignado, pasar a ser un string en el momento que se
vuelva a realizar una asignacin.

El prximo ejemplo dejar de manifiesto los malabares que realiza


PHP, pon atencin:

<?php
$titular = '5 delincuentes han sido arrestados.';
// Se arresto a un delicuente ms
$titular += 1; // Aqu $titular es tratado como un entero!
echo "En total se han arrestado a $titular delincuentes.";
?>

En total se han arrestado a 6 delincuentes.

Ceina - Centros de Autoformacin Pgina 75


Programacin PHP 5 y MySQL (mdulo 1)

PHP hace este malabarismo porque estamos dejando en sus manos


la decisin de convertir un tipo en otro. Si queremos tener control
absoluto sobre el tipo de nuestras variables, debemos entonces
hacer uso del casting. Gracias a l podemos formalizar el
malabarismo que realiza PHP, pero de forma controlada.

En PHP existen dos formas de hacer la conversin. La primera es


mediante la expresin (tipo de datos), y la segunda es utilizando la
funcin set_type(). Como ves, PHP permite normalmente realizar
las cosas de distintas formas.

Veamos un ejemplo con ambos:

<?php

$precio = 33.50; // Precio es un float (punto flotante)


echo "Precio original: $precio", PHP_EOL;
// No necesitamos decimales, convirtmoslo a int (entero)
$precio2 = (int)$precio;
echo "Precio entero con (int): $precio2", PHP_EOL;

// Sintaxis alternativa con intval (


$precio4 = intval($precio);
echo "Precio entero con intval: $precio4", PHP_EOL;

// Sintaxis alternativa con set_type


$precio3 = $precio;
settype($precio3, 'integer');
echo "Precio entero con settype: $precio3", PHP_EOL;

?>

Ceina - Centros de Autoformacin Pgina 76


Programacin PHP 5 y MySQL (mdulo 1)

Funciones tiles

Trabajar con variables es algo que se realiza constantemente


durante la programacin de una aplicacin, por eso PHP tiene un
conjunto de funciones que nos permitirn imprimir el tipo y valor de
una variable, sea primitiva o compuesta, as como tambin para
cambiar su tipo.

Quizs te preguntes qu ofrecern estas nuevas funciones frente al


clsico echo/print, as que veamos un ejemplo con la funcin
llamada var_dump:

<?php
// Realizamos algunas declaraciones de variable
$numero = 5;
$texto = 'PHP rulez!';
$coleccion = array('tierra', 'marte', 'saturno');
$afirmacion = true;

// Imprimimos su contenido y tipo con var_dump


var_dump($numero);
var_dump($texto);
var_dump($coleccion);
var_dump($afirmacion);
?>

Prueba, si quieres, el cdigo anterior en tu PC.

Ceina - Centros de Autoformacin Pgina 77


Programacin PHP 5 y MySQL (mdulo 1)

El resultado de su ejecucin sera el siguiente:

int(5)
string(10) "PHP rulez!"
array(3) {
[0]=>
string(6) "tierra"
[1]=>
string(5) "marte"
[2]=>
string(7) "saturno"
}
bool(true)

Como habrs comprobado por la salida del anterior script,


var_dump devuelve el tipo de cada variable, incluso lo hace para
variables que se encuentran dentro una coleccin!

print_r

A diferencia de var_dump, print_r no imprime informacin sobre el


tipo de la variable y solamente se limita a imprimir sus valores.

Su ventaja respecto a echo/print es la posibilidad de mostrar


colecciones y objetos de una manera legible para los usuarios.

Ceina - Centros de Autoformacin Pgina 78


Programacin PHP 5 y MySQL (mdulo 1)

El cdigo anterior, pero utilizando print_r, sera como a


continuacin:

<?php
// Realizamos algunas declaraciones de variable
$numero = 5;
$texto = 'PHP rulez!';
$coleccion = array('tierra', 'marte', 'saturno');
$afirmacion = true;

// Imprimimos su contenido de forma legible para humanos con


print_r
print_r($numero); echo PHP_EOL;
print_r($texto); echo PHP_EOL;
print_r($coleccion);
print_r($afirmacion); echo PHP_EOL;
?>

5
PHP rulez!
Array
(
[0] => tierra
[1] => marte
[2] => saturno
)
1

Ceina - Centros de Autoformacin Pgina 79


Programacin PHP 5 y MySQL (mdulo 1)

Comprobar y forzar el cambio de tipos

En estos ltimos prrafos estudiaremos como podemos convertir


entre distintos tipos de datos, bien con el uso de casting, o con las
funciones set_type y otras como intval, floatval, etc.

Primero, eso s, conoceremos el conjunto de funciones is_xxx


(donde xxx se reemplaza por el nombre de algn tipo de dato), que
nos permite comprobar si un variable se corresponde con un tipo
dado o no. Lo estudiaremos a partir del siguiente ejemplo, aunque
este incluya elementos que an no hemos estudiado:

<?php

/**
La siguiente funcin convierte nmeros
en palabras a valor numrico.
*/
function convertir($valor) {
switch($valor) {
case 'uno': return 1;
case 'dos': return 2;
case 'tres': return 3;
case 'cuatro': return 4;
case 'cinco': return 5;
case 'seis': return 6;
case 'siete': return 7;
case 'ocho': return 8;
case 'nueve': return 9;
}
}

Ceina - Centros de Autoformacin Pgina 80


Programacin PHP 5 y MySQL (mdulo 1)

/*
Definimos una coleccin de nmeros
expresados numricamente o literalmente.
*/
$valores = array('uno', 53, 'tres', 'nueve', 13);

// Recorremos cada valor


foreach($valores as $valor) {
if(is_int($valor)) {
echo "Valor numrico: $valor", PHP_EOL;
} else
if(is_string($valor)) {
$convertido = convertir($valor);
echo "Valor numrico: $convertido (convertido)",
PHP_EOL;
}
}

?>

Valor numrico: 1 (convertido)


Valor numrico: 53
Valor numrico: 3 (convertido)
Valor numrico: 9 (convertido)
Valor numrico: 13

Bien, como habrs comprobado con el ejemplo, el conjunto de


funciones is_xxx es muy simple: se le pasa una variable y retorna
true o false para indicar si coincide con el tipo de la funcin
utilizada.

Ceina - Centros de Autoformacin Pgina 81


Programacin PHP 5 y MySQL (mdulo 1)

Constantes

Una constante representa un valor de nuestro script que no se ver


alterado durante la ejecucin de nuestra aplicacin. Por ejemplo, la
variable $contador, como vimos en prrafos anteriores, va
incrementndose a medida que se cumple la condicin especificada,
sin embargo, el nombre de la aplicacin es algo que permanecer
inalterable durante la vida del programa.

Por tanto, podramos definir un tipo de dato que contenga el nombre


de la aplicacin y que su valor slo cambiara con cada nueva
instalacin de nuestro software, pero no durante la vida del mismo.

La forma de crear una constante es mediante la funcin define(),


mientras que la manera de utilizarlas es escribiendo su nombre, sin
ningn smbolo delante.

Veamos un ejemplo:

<?php
define('MODO_PRUEBAS', true);

if(MODO_PRUEBAS) {
echo 'Ejecutndose en modo pruebas.', PHP_EOL;
}
?>

Tambin podra crearse una constante para un valor como, por


ejemplo, PI (3,1416)

Ceina - Centros de Autoformacin Pgina 82


Programacin PHP 5 y MySQL (mdulo 1)

El nombre de una constante sigue las mismas reglas que el de una


variable. Recordmoslas reglas:

Comenzar con una letra o guin bajo


Opcionalmente: una combinacin de letra, guin bajo o
nmero.

Por convencin entre los usuarios y desarrolladores del lenguaje, es


habitual escribir las constantes en maysculas, de esta forma es
posible identificar una constante rpidamente al seguir un cdigo
PHP.

Una constante puede contener cualquier valor primitivo (bsico), o


dicho de otra manera, no puede contener datos compuestos, como
un array o un objeto.

En el siguiente ejemplo veremos definiciones vlidas e invlidas de


una constante.

<?php
// Las siguientes son definiciones vlidas
define('NUM_PAGINAS', 10); # Entero
define('NOMBRE_APLIC', 'Gestin 2000'); # Cadena de texto
define('FUNCION_HABILITADA', false); # Booleana
// Definiciones invalidas por su nombre o su valor
define('10NOMBRE', 10); # Nombre invalido!
define('#PRUEBA', 'Hola'); # Tampoco funcionar
define('CONJUNTO', array(1, 2, 3)); # Contenido no soportado
?>

Tambin es posible preguntar si una variable ha sido definida o no


mediante la funcin defined().

Ceina - Centros de Autoformacin Pgina 83


Programacin PHP 5 y MySQL (mdulo 1)

Por ejemplo:

<?php
// Definimos la constante USUARIO con el valor "admin"
define('USUARIO', 'admin');

$usuarioActual = USUARIO;
$claveActual = '123';

/*
Si la constante CLAVE est definida la utilizamos
para reemplazar el contenido de la variable $claveActual
*/
if(defined('CLAVE')) {
$claveActual = CLAVE;
}

// Establecemos una conexin a MySQL


$conexion = mysql_connect('localhost', $usuarioActual,
$claveActual);

?>

A diferencia de las variables, una constante no puede ser redefinida


ni borrada mientras se ejecuta el cdigo. Por esta razn se las utiliza
para valores que tienen que permanecer intactos en todo momento,
sin importar el flujo del cdigo.

PHP crea automticamente una serie de constantes que no son


definidas por el usuario sino por el propio motor (por eso se las llama
constantes mgicas), que nos dan informacin til sobre el fichero
que estamos utilizando, la lnea en donde se encuentra el intrprete,
etc.

Ceina - Centros de Autoformacin Pgina 84


Programacin PHP 5 y MySQL (mdulo 1)

He aqu algunas:

__LINE__ : Indica la lnea donde se encuentra el intrprete.


__FILE__ : La ruta completa al script en ejecucin.
__FUNCTION__ : El nombre de la funcin que encierra el cdigo en
ejecucin, si existe.
__CLASS__ : El nombre de la clase que encierra el cdigo en
ejecucin, si existe.

Para qu me puede servir a m conocer esta informacin? -se


pregunta extraado Sebastin-

Pues, principalmente, como herramienta de control de errores y


depuracin. Observa el comportamiento del siguiente cdigo:

<?php
echo 'Lnea uno', PHP_EOL;
echo 'Este mensaje se mostrar gracias a la lnea nmero ',
__LINE__, PHP_EOL;
echo 'Otro mensaje para finalizar.', PHP_EOL;
?>

Lnea uno
Este mensaje se mostrara gracias a la lnea nmero 3
Otro mensaje para finalizar.

Te has fijado que la lnea con la etiqueta la ha contado verdad?


Por ello el segundo echo se contabiliza como tercera lnea.

Ceina - Centros de Autoformacin Pgina 85


Programacin PHP 5 y MySQL (mdulo 1)

Nos quedan dos constantes tiles por conocer:

DIRECTORY_SEPARATOR y PATH_SEPARATOR.

DIRECTORY_SEPARATOR contiene un valor con el separador de


directorios para el sistema operativo que estemos ejecutando.
Esto es / en Unix o Linux y \ en Windows.

Por otro lado, PATH_SEPARATOR contiene el carcter utilizado


(tambin vara segn el sistema operativo) para separar nombres de
carpetas o directorios.

Veamos un ejemplo:

<?php

$dirAplic = array(
'home',
'juan',
'aplicaciones',
'bin',
);
$dirJuegos = array(
'home',
'laura',
'juegos',
'cartas'
);

Ceina - Centros de Autoformacin Pgina 86


Programacin PHP 5 y MySQL (mdulo 1)

/*
Queremos mostrar los dos directorios
con las rutas absolutas.
*/

// Primero nimos cada carpeta de cada directorio


$dirAplic = implode(DIRECTORY_SEPARATOR, $dirAplic);
$dirJuegos = implode(DIRECTORY_SEPARATOR, $dirJuegos);

/*
Luego unimos los dos directorios
con el operador de concatenacin.
*/
echo $dirAplic . PATH_SEPARATOR . $dirJuegos;

?>

Esto nos da como resultado:

home\juan\aplicaciones\bin;home\laura\juegos\cartas

Ah! La funcin implode (implosin) une los elementos de la


coleccin con el valor del primer argumento, que en nuestro ejemplo
era el separador de directorios.

Ceina - Centros de Autoformacin Pgina 87


Programacin PHP 5 y MySQL (mdulo 1)

Estructuras de control

En esta seccin introduciremos un concepto fundamental de los


lenguajes de programacin, las estructuras de control, que
permitirn a nuestra aplicacin y en combinacin con ciertas
condiciones, comportarse de una manera u otra.

Si no existiesen las estructuras de control de flujo, una aplicacin se


ejecutara y devolvera siempre el mismo resultado.

PHP nos ofrece un amplio abanico de estructuras de control, que


nos sern ms o menos convenientes de acuerdo al tipo de datos
que estemos usando, el objetivo de la interaccin, etc.

La estructura de control ms utilizada es el conjunto if / else / elseif,


que permite ejecutar o no una instruccin (o un grupo de ellas),
dependiendo de si se cumple determinada expresin:

<?php
$numLoteria = 62443;
$numGanador = 78331;
if($numLoteria == $numGanador) {
echo 'Has ganado la lotera!';
}
?>

En el conjunto anterior, las instrucciones encerradas entre llaves no


se ejecutarn, ya que la expresin encerrada en el if no se cumple
(no es verdadera; el numero de lotera no coincide con el nmero
ganador).

Ceina - Centros de Autoformacin Pgina 88


Programacin PHP 5 y MySQL (mdulo 1)

Este tipo de estructura tambin permite gestionar lo que sucede


cuando la condicin no se cumple, mediante la sintaxis extendida
else:

<?php
$genero = 'M'; # M es igual a masculino, y F a femenino
if($genero == 'M') {
echo 'Eres hombre.';
} else {
echo 'Eres mujer.;
}
?>

Por ltimo, es posible aadir ms de una expresin a verificar,


utilizando la sintaxis completa if + elseif + else

<?php
/*
Los estados aceptados por semforo son:
R: Rojo, A: Amarillo, V: Verde
*/
$semaforo = 'R';
if($semaforo == 'R') {
echo 'No puedes cruzar en rojo.';
} elseif($semaforo == 'A' {
echo 'Acelera o frena! Semforo en amarillo.';
} else {
echo 'En verde, adelante.';
}
?>

En estos casos, puede usarse la instruccin exit() cuando se cumple


la condicin, para interrumpir la ejecucin del cdigo.

Ceina - Centros de Autoformacin Pgina 89


Programacin PHP 5 y MySQL (mdulo 1)

Como podemos ver en el anterior ejemplo, la cantidad de if y elseif


puede ser larga, y repetir la expresin para cada valor posible puede
convertirse en algo tedioso.

En casos donde el nmero de valores que puede tomar la expresin


sea mayor a 3 (ms o menos), es recomendable el uso de otra
estructura de control llamada switch.

Switch permite bifurcar la ejecucin de un programa a tantos


caminos como valores pueda tomar una variable.

As por ejemplo, el cdigo del semforo podra ser re-escrito de la


siguiente manera:

<?php
/*
Los estados aceptados por semforo son:
R: Rojo
A: Amarillo
V: Verde
*/

$semaforo = 'R';
switch($semaforo) {
case 'R':
echo 'No puedes cruzar en rojo.';
break;
case 'A':
echo 'Acelera o frena! Semforo en amarillo.';
break;

Ceina - Centros de Autoformacin Pgina 90


Programacin PHP 5 y MySQL (mdulo 1)

case 'V':
echo 'En verde, adelante.';
break;
default:
echo 'Color desconocido. Semforo averiado.';
}

?>

La expresin encerrada en el switch puede ser cualquier valor


primitivo (nmero, cadena de texto, booleano).

En el siguiente ejemplo, vemos como se podra implementar un


traductor de cdigos de error numricos a texto (aunque existen
formas mejores de hacerlo, a efectos de demostracin nos vale)

<?php
$error = 60003;
switch($error) {
case 60001:
echo 'Error de impresin'; break;
case 60002:
echo 'Error de comunicacin'; break;
case 60003:
echo 'Error de lectura'; break;
case 60004:
echo 'Error de grabacin'; break;
default:
echo 'Error desconocido'; break;
}
?>

La palabra reservada break se utiliza para indicar que no se


contine evaluando otras condiciones y se salga del switch.

Ceina - Centros de Autoformacin Pgina 91


Programacin PHP 5 y MySQL (mdulo 1)

La etiqueta default es una especie de comodn. En caso que la


expresin del switch no coincida con ninguna de las enumeradas, la
aplicacin optar por la etiqueta default.

Al iniciar este mdulo vimos como era posible recorrer una coleccin
de datos con la estructura foreach, ampliemos algo mas esa
definicin

foreach (del ingls, por cada elemento-) recorre cada elemento de


una coleccin, y nos prepara una variable para que podamos
utilizarla:

<?php
$usuarios = array(
'Santiago',
'Pablo',
'Guadalupe',
'Alejandra',
'Celeste'
);

// Recorrer la coleccin usuarios y mostrar su nombre


foreach($usuarios as $usuario) {
echo "Usuario: $usuario\n";
}
?>

As, la variable $usuario contiene cada uno de los elementos, cada


vez que se pasa por la instruccin echo. Adicionalmente, se nos
permite recorrer la coleccin obteniendo no solo el valor de cada
elemento de la misma, sino tambin su ndice (posicin) en ella.

Ceina - Centros de Autoformacin Pgina 92


Programacin PHP 5 y MySQL (mdulo 1)

Veamos el ejemplo anterior ampliado:


<?php
$usuarios = array(
'santi' => 'Santiago',
'pablo' => 'Pablo',
'lupe' => 'Guadalupe',
'ale' => 'Alejandra',
'cele' => 'Celeste'
);
// Recorrer la coleccin usuarios y mostrar su nombre y apodo
// (la coleccin de datos utiliza apodos como ndice)
foreach($usuarios as $indice => $valor) {
echo "Usuario: $valor (apodo: $indice)\n";
}
?>

Esta es su salida:

Usuario: Santiago (apodo: santi)


Usuario: Pablo (apodo: pablo)
Usuario: Guadalupe (apodo: lupe)
Usuario: Alejandra (apodo: ale)
Usuario: Celeste (apodo: cele)

La prxima estructura de datos que probaremos es for. Se usa tanto


como if y permite repetir una o ms instrucciones de manera
iterativa. Su sintaxis es algo rebuscada, veamos cmo funciona de
manera desglosada:

for(expresion1; expresion2; expresion3) { instrucciones; }

Ceina - Centros de Autoformacin Pgina 93


Programacin PHP 5 y MySQL (mdulo 1)

Expresion1 se ejecutar una sola vez en todo el ciclo, el conjunto


de instrucciones interior se ejecutara siempre que expresion2 sea
verdadero y expresion3 se ejecutara despus de que el conjunto de
instrucciones se procese.

La teora puede resultar bastante ms compleja que si nos remitimos


a un ejemplo:

<?php
for($i = 0 ; $i < 6; $i++)
echo "Linea #$i", PHP_EOL;
?>

El resultado de ese cdigo resultara en:

Linea #0
Linea #1
Linea #2
Linea #3
Linea #4
Linea #5

Siguiendo nuestra descomposicin de la sintaxis, obtenemos lo


siguiente:

expresion1 pone la variable $i a 0. Se ejecuta nicamente una vez.


Linea #0 se imprimi porque la expresion2 se cumple ($i < 6, 0 < 6)
y expresion3 incremento $i, para convertirse en 1.

Linea #1 se imprimi porque la expresion2 se continuaba


cumpliendo ($i < 6, 1 < 6)

Ceina - Centros de Autoformacin Pgina 94


Programacin PHP 5 y MySQL (mdulo 1)

Y as hasta que la expresin $i < 6 deja de cumplirse (porque $i


alcanza el valor 6) y el ciclo finaliza.

Vamos a por un par de estructuras que nos quedan, y que estn


relacionadas. La primera de ellas, while, ejecuta un bloque de
instrucciones siempre y cuando la expresin que se evala sea
verdadera:

<?php
$dinero = 450; // Euros
while($dinero > 0) { // Gasto 100 siempre que tenga dinero.
$dinero -= 100;
}
echo "Ya no puedes comprar tu balance es de $dinero euros.";
?>

Debido a su sintaxis puede que el bloque de instrucciones jams se


ejecute, como ocurre en el siguiente ejemplo:

<?php
// Balance inicial en negativo por culpa de la crisis.
$dinero = -120; // Euros
while($dinero > 0) { // Gasto 100 siempre que tenga dinero.
$dinero -= 100;
}
echo "Ya no puedes comprar tu balance es de $dinero euros.";
?>

Por otro lado, la sintaxis de do while, permite evaluar la misma


expresin, con la certeza que al menos una vez se ejecutara el juego
de instrucciones.

Ceina - Centros de Autoformacin Pgina 95


Programacin PHP 5 y MySQL (mdulo 1)

Modifiquemos el ejemplo de operacin bancaria:

<?php
// Balance inicial en negativo por culpa de la crisis.
$dinero = -70; // Euros
do {
$dinero -= 100; // Gasto 100, tenga o no dinero.
} while($dinero > 0); // Si tengo dinero, entonces continuo
gastando.

echo "Ya no puedes comprar tu balance es de $dinero euros.";


?>

El resultado es que, a pesar de no cumplir la condicin del ciclo, se


permiti una primera ejecucin (que endeud ms al personaje de
nuestro ejemplo).

Ya no puedes comprar tu balance es de -170 euros.

En el pasado ejemplo, el conjunto de instrucciones se ejecuta una


primera vez y, antes de repetirse, se realiza la comprobacin, que
resulta fallida y se interrumpe.

Has comprendido las diferencias entre los ejemplos? No dudes en


consultar con tu asesor si lo ves difcil.

Ceina - Centros de Autoformacin Pgina 96


Programacin PHP 5 y MySQL (mdulo 1)

Directivas del lenguaje y funciones

Seguro que piensas que no sera en absoluto prctico tener un nico


fichero con miles de lneas de cdigo PHP.

Por esta razn, PHP nos permite organizar nuestros proyectos en


mltiples ficheros, e incluirlos en algn punto de nuestra aplicacin.

A modo de ejemplo, es comn en muchas aplicaciones tener un


fichero con la configuracin y, desde otros ficheros, incluirlo para
poder utilizarlo sin necesidad de escribir una y otra vez el mismo
cdigo.

Desarrollemos este ejemplo.

Este es el contenido del fichero config.php

<?php
/*
Configuracin de la base de datos.
*/
define('BD_SERVIDOR', '127.0.0.1');
define('BD_NOMBRE', 'bd_socios');
define('BD_USUARIO', 'admin');
define('BD_CLAVE', 'admin123');
?>

Para incluir este fichero en otro tenemos dos opciones, las


declaraciones include o require.

Ambas se comportan igual, con la nica diferencia en como tratan


los errores.

Ceina - Centros de Autoformacin Pgina 97


Programacin PHP 5 y MySQL (mdulo 1)

Ambas lanzan una advertencia si el fichero no ha sido encontrado,


pero la severidad del error lanzada por require ser ms alta que la
de include, deteniendo la ejecucin del programa.

<?php
include 'no_existo.php';
echo 'PHP mostrar una advertencia en la lnea anterior, y
tambin este mensaje';
?>

Ahora el mismo ejemplo utilizando la declaracin require:

<?php
require 'no_existo.php';
echo 'PHP mostrar una advertencia en la lnea anterior y
nunca mostrar este mensaje';
?>

Continuando con el ejemplo, veamos como incluir y utilizar nuestro


fichero de configuracin.

<?php
/*
El fichero de configuracin es absolutamente necesario
para continuar, por esa razn utilizamos require en lugar
de include.
*/
require 'config.php';
// Establecer conexin con la base de datos
$db = mysql_connect(BD_SERVIDOR, BD_USUARIO, BD_CLAVE);
// Seleccionamos la base de datos con la cual trabajar
mysql_select_db(BD_NOMBRE);
?>

Ceina - Centros de Autoformacin Pgina 98


Programacin PHP 5 y MySQL (mdulo 1)

Perfecto! Ya tenemos un fichero de configuracin que podemos


ajustar sin necesidad de tocar el resto de nuestro proyecto.

Pero piensa en lo siguiente, Qu pasara si se incluye o requiere un


fichero mltiples veces? (y crenos cuando te decimos que esto
sucede a menudo).

Variables inicializadas ms de una vez, y aun peor, errores al


intentar redefinir constantes, funciones, etc. (recuerda que no es
posible redefinir una constante, y un intento de hacerlo dar
advertencias y errores emitidos por PHP)

Por ello existen ampliaciones de las anteriores declaraciones:


include_once y require_once (para include y require
respectivamente).

Se comportan de idntica manera que las declaraciones primeras,


con la diferencia que stas, antes de incluir y evaluar los ficheros,
comprueban que no hayan sido incluidos ya con anterioridad.

En caso de haber sido incluidos previamente, la declaracin es


ignorada y tu cdigo es protegido de violaciones de la sintaxis.

Las declaraciones include_once y require_once son ligeramente


ms lentas, por el hecho de que tienen que realizar mas
comprobaciones.

Ceina - Centros de Autoformacin Pgina 99


Programacin PHP 5 y MySQL (mdulo 1)

Ejercicio 1

Un trabajador percibe un salario base de 3500 y se le retiene un


impuesto del 20%. Realiza un programa que muestre el siguiente
resultado al ejecutarlo:

Sueldo del trabajador antes del impuesto: 3500.00


Sueldo con el impuesto: 2800.00

Guarda el ejercicio con el nombre Ejercicio1M1.php

Ejercicio 2

Teniendo en cuenta que el rea de un tringulo se calcula con la


frmula Base por Altura dividido por 2, crea el correspondiente
cdigo PHP que muestre el resultado siguiente, para un tringulo de
base 18 cm y altura 15 cm:

El rea del tringulo es: 135.000 centmetros cuadrados

Guarda el ejercicio con el nombre Ejercicio2M1.php

Ceina - Centros de Autoformacin Pgina 100


Programacin PHP 5 y MySQL (mdulo 1)

Ejercicio 3

Crea el cdigo correspondiente para que, dados dos nmeros (23 y


13 por ejemplo), se muestre en lneas distintas el resultado de su
suma, resta, multiplicacin y divisin. Ten en cuenta, para el caso de
la divisin, que se muestren dos decimales. As:

La suma de 23 y 13 es: 36
La resta de 23 y 13 es: 10
La multiplicacin de 23 y 13 es: 299
La divisin de 23 y 13: 1.77

Guarda el ejercicio con el nombre Ejercicio3M1.php

Ejercicio 4

Pablo, Mara y Pilar tienen 26 caramelos en una bandeja para


repartirse. Crea un programa que muestre el nmero de caramelos
que toca a cada uno, y los que sobrarn en la bandeja. El mensaje
debe ser:

A cada persona le tocarn: 8 caramelos


En la bandeja sobrarn: 2 caramelos

Guarda el ejercicio con el nombre Ejercicio4M1.php

Ceina - Centros de Autoformacin Pgina 101


Programacin PHP 5 y MySQL (mdulo 1)

Ejercicio 5

Dados dos nmeros enteros positivos (235 y 123), crear un cdigo


que indique cul de los dos es mayor, con el mensaje:

El nmero mayor es: 235

Guarda el ejercicio con el nombre Ejercicio5M1.php

Ejercicio 6

Dado un nmero del 1 al 7 que corresponde al da de la semana,


crear un cdigo que responda con su nombre. Es decir, ante el
nmero 3, aparecer el mensaje Mircoles:

El nombre del da de la semana es: Mircoles

Guarda el ejercicio con el nombre Ejercicio6M1.php

Ejercicio 7

Ahora, basndote en el cdigo del ejercicio anterior, realiza las


modificaciones necesarias para que se compruebe si el nmero de
da se encuentra en el rango del 1 al 7. En tal caso, se proceder
habitualmente pero, en el caso de ser un nmero mayor o menor, se
mostrar el mensaje:

El nmero de da proporcionado no es vlido.

Guarda el ejercicio con el nombre Ejercicio7M1.php

Ceina - Centros de Autoformacin Pgina 102


Programacin PHP 5 y MySQL (mdulo 1)

Ejercicio 8

Realiza el cdigo correspondiente para, dado un nmero, se


desarrolle la tabla de multiplicar del mismo mostrando el siguiente
resultado:

7x1=7
7 x 2 = 14
7 x 3 = 21
7 x 4 = 28
7 x 5 = 35
7 x 6 = 42
7 x 7 = 49
7 x 8 = 56
7 x 9 = 63
7 x 10 = 70

Guarda el ejercicio con el nombre Ejercicio8M1.php

Ejercicio 9

Aprenderemos con este ejercicio el uso de la funcin Include de


PHP. Por un lado, debes crear un archivo llamado Variables.php
que contendr la definicin y los valores de dos variables. Una de
ellas el nombre de una fruta y, la otra, su color.

Ceina - Centros de Autoformacin Pgina 103


Programacin PHP 5 y MySQL (mdulo 1)

Con este paso realizado, crea ahora el nuevo cdigo necesario, en


otro archivo llamado Ejercicio9M1.php, para que aparezca un
mensaje como el siguiente, que aproveche el uso de las variables
definidas en el primero:

Una manzana verde

Ejercicio 10

Ahora, selecciona todos los archivos creados en las pginas


anteriores (desde Ejercicio1M1.php a Ejercicio9M1.php, y el
archivo Variables.php) y cpialos en tu carpeta personal del curso,
para evitar que otros usuarios los borren o usen, o se pierdan en
caso de problemas con el PC.

Ceina - Centros de Autoformacin Pgina 104


Programacin PHP 5 y MySQL (mdulo 1)

Conclusin

Bien, ya hemos acabado el primer mdulo de introduccin al


lenguaje PHP. Seguramente te ha resultado atrapante y al mismo
tiempo agotador.

Todo lo que hemos visto juntos representa los fundamentos del


lenguaje, y su compresin es clave para poder construir aplicaciones
estables y funcionales.

Los conceptos que hemos estudiado sern necesarios,


independientemente del tipo de aplicacin que quieras construir.

Como al final de cada mdulo, lleg el momento de pedirle a tu


asesor el cuestionario que te servir para verificar si has alcanzado
satisfactoriamente estos primeros objetivos.

Mucha suerte!

Ceina - Centros de Autoformacin Pgina 105

También podría gustarte