Sei sulla pagina 1di 31

CURSO PHP INTRODUCCIN AL PHP PHP es lo que llamamos un lenguaje de programacin del lado del servidor, esto significa

que el cdigo se interpreta en el servidor y no en el ordenador del usuario. El cdigo php interpretado, produce un resultado que es enviado al navegador del visitante en forma de HTML, imagen, documento .doc... de ninguna manera el navegador del visitante accede al cdigo fuente en php sino solo a su resultado en HTML.

000 001 002 003 004 005 006 007 008 009 010 011

<html> <head> <title>Prueba</title> </head> <body> <? $texto = "Hola mundo"; echo $texto; ?> </body> </html> Maximizar Seleccionar

XML,PHP

Este cdigo producir el siguiente resultado que es lo que se enviar al navegador del visitante: 000 001 002 003 004 005 006 007 <html> <head> <title>Prueba</title> </head> <body> Hola mundo </body> </html> Maximizar Seleccionar

El navegador pide un documento al servidor, en el caso que este documento sea un archivo PHP, el archivo es interpretado y se enva su resultado al navegador. Vamos a ver un ejemplo sencillo de cdigo escrito en php para que nos sea ms fcil de comprender:

XML

Vemos que el cdigo php esta delimitado por las etiquetas <? y ?>, aunque tambin puede usarse <?php en lugar de <?. Otra caracterstica del php es que las variables se identifican con el signo del dlar ($) y que cada instruccin debe finalizarse con un punto y coma (;).

INSTALAR FCILMENTE Para poder empezar a aprender a programar en PHP, debemos tener un servidor web con PHP instalado, y lo ms cmodo para trabajar es que lo tengamos en nuestro propio ordenador. Las herramientas que necesitamos, son un servidor web (en el curso se utiliza Apache pero el IIS de Windows tambin puede servir), el propio PHP y posiblemente el motor de bases de datos MySQL. Todo esto se puede instalar por separado, o se puede hacer con paquetes que instalan y configuran PHP, Apache y MySQL. Aunque en este captulo ensear a instalar el XAMPP, existen otros como el WAMP o el easyPHP. El XAMPP El XAMPP es el nico paquete de los que hemos comentado en este captulo disponible para multiplataforma (Windows, Mac OS X, GNU/Linux y Solaris). Incluye, entre otros, aplicaciones como el Apache, el MySQL, el intrprete PHP, el OpenSSL, el phpMyAdmin, el Mercury Mail Transport System y el FileZilla FTP Server. El primer que hacemos es descargarnos el instalador. Os explicar la instalacin para WINDOWS, pero los paquetes de instalacin de otros SO los encontramos en la misma pgina. Nos damos cuenta de que la versin para WINDOWS supera los 30 MB, as que tened paciencia los que no dispongan de conexin rpida a Internet o bajaos el WAMP Server o el EasyPHP (al final del artculo).

Una vez bajado el ejecutable, lo abrimos y vemos que nos pregunta por el idioma en que queremos realizar la instalacin (hay 11, uno de ellos el espaol). Despus de esto, nos dan la bienvenida al asistente de instalacin i, al presionar sobre Siguiente, nos preguntan el directorio sobre el cual queremos realizar la instalacin.

El asistente nos da la bienvenida.

Especificamos el directorio de instalacin.

Si la instalacin se produce sin problemas, presionamos sobre Acabar y el XAMPP ya estar listo.

XAMPP Control Panel. Proceso de instalacin. Tan solo por tener activado el Apache, puedes acceder al http://localhost, donde podrs ver si se ha instalado correctamente el servidor local.

La instalacin se ha finalizado. Si lo ejecutas, podrs visualizar el XAMPP Control Panel Application, donde podrs poner en funcionamiento el Apache, el MySQL, el FileZilla y el Mercury. Localhost por defecto de XAMPP. Aunque lo puedes eliminar, el localhost por defecto de XAMPP puede ser muy til: des de all puedes acceder a todas las herramientas, y adems puedes ver cul es el estado de este y sus agujeros de seguridad.

OTROS PAQUETES. Adems del XAMPP, hay otros paquetes de instalacin del servidor local. No os quedis tan solo con esto, probar ne tantos como podis. Aqu os dejo dos: EASYPHP EasyPHP contiene el mnimo para poder trabajar bien: un servidor web (Apache), el intrprete PHP y el MySQL. La ltima versin est disponible en espaol (y en 27 lenguas ms) y tan solo ocupa 7 MB la aplicacin y 144 KB todo el conjunto de idiomas. An as, la ltima versin es muy antiguas y les versiones del Apache y el PHP estn muy desfasadas (Apache 1.x y PHP4), para el que si te quieres introducir en programacin orientada a objetos te recomiendo seguir leyendo. Web para descargrtelo: http://www.easyphp.org/telechargements.php3 WAMP SERVER WAMP es el acrnimo de Windows Apache MySQL PHP. Es bastante ms completo, ya que incorpora el PHP5, el Apache 2 y el MySQL 5. No dispone de ms idiomas que no sean el ingls o el francs y ocupa unos 17 MB. Web para descargrtelo: http://www.wampserver.com/en/download.php Si os descargis uno de los dos ltimos y queris trabajar con GD Images, tendris de desbloquear la librera al archivo de configuracin de PHP (php.ini a la carpeta conf_files de EasyPHP y a la carpeta Apache2/bin del WAMP). Buscad la lnea; extension=php_gd2.dll sacadle el punto y coma. Quedar as: extension=php_gd2.dll Tambin tenis la opcin de bajaros el Apache, el intrprete de PHP y todas les utilidades por separado

COMENTARIOS Para que en futuras revisiones a tu cdigo por tu parte y sobre todo por parte de otros programadores este cdigo sea inteligible para la mente humana, es un buen costumbre comentar lo que se esta haciendo en PHP pero en palabras. De esta manera el cdigo ser mucho ms sencillo de comprender y a su vez de modificar, corregir, ampliar... Los comentarios que soporta PHP son los de C, C++ y los del shell de Unix, as podemos usar // y /* */ para comentarios y comentarios multilinea respectivamente como haramos en C: 000 <? 001 echo 'Esto se ve'; 002 // esto no se ve 003 echo 'esto tambien se ve'; 004 /* esto tampoco 005 se ve */ 006 ?> Maximizar Seleccionar

PHP

O tambin podemos usar # como en los comentarios del shell de Unix: 000 001 002 003 <? # esto no se ve echo 'pero esto si'; ?> Maximizar Seleccionar

PHP

Tendremos cuidado con no poner un comentario multilnea en el interior del otro:

000 <? 001 /* /* No hacer nunca esto */ */ 002 ?> Maximizar Seleccionar

PHP

Como veis, PHP interpreta como comentario desde el primer /* al primer */ sin tener en cuenta que hay otro */, esto nos producir un error as que habr que tener cuidado. VARIABLES Una variable es un nombre que contiene unos determinados datos, ya sean de texto o numricos, y en php tienen la peculiaridad de ir precedidas por el signo del dlar ($). En PHP no es necesario declarar las variables antes de usarlas y pueden contener texto y nmeros indiferentemente (ya hablaremos de esto ms adelante). Vamos a ver un ejemplo de uso de variables: 000 001 002 003 004 005 <? $miVariable = 'Hola '; $miVariable2 = 33; // Imprimimos Hola 33 echo $miVariable.$miVariable2; ?> Maximizar Seleccionar PHP

000 <? 001 $nombreVariable = "miVariable"; 002 $$nombreVariable = "Hola"; 003 // Imprimimos Hola 004 echo $miVariable; 005 ?> Maximizar Seleccionar PHP Para que una variable sea accesible desde cualquier parte de nuestro script php, la definiremos cmo global de la siguiente manera: 000 <? 001 global $miVariableGlobal = 'Hola'; 002 ?> Maximizar Seleccionar PHP Hay un seguido de variables que ya vienen definidas en nuestros scripts en php por defecto, estas son las variables predefinidas. VARIABLES PREDEFINIDAS El PHP tiene muchas variables predefinidas, pero hay que tener en cuenta que todas estas variables no suelen estar activas en todos los servidores, para saber de qu variables disponemos, podemos usar la funcin de info de PHP: 000 <? 001 phpinfo(); 002 ?> Maximizar Seleccionar PHP Estas son las variables que usaremos ms comnmente y que probablemente nuestro servidor tendr correctamente habilitadas:

Como vemos, asignamos valor a una variable con el operador de igualdad (=), y concatenamos con el operador punto (.). Existe la posibilidad de trabajar con una variable de nombre variable, es decir, podemos acceder a una variable que tenga el nombre que nos viene indicado por el contenido de otra variable, usando ($$):

1 $SERVER_NAME Cuando imprimimos a nuestros servido la variable $SERVER_NAME nos devolver normalmente el nombre del server si estamos trabajando en local nos saldra http://localhost/ o el nombre que le hayamos puesto a la maquina y si tenemos la web alojada por ejemplo en este caso nos saldra www.programacionweb.net 2 $SERVER_SOFTWARE En este caso nos saldra el servidor que andamos usando si usamos el IIS o el apache tal version. 3 $DOCUMENT_ROOT En la variable DOCUMENT_ROOT lo que nos pasara cuando imprimimos en el navegador nos dira la ruta del fichero exacta, tambin pensando depende de la configuracin del servidor que no dar su ruta, no pensis que nos dar www.nuestraweb.com/nuestroarchivo.php que este no es caso 4 $HTTP_REFERER Haciendo referers queremos decir que nos dir de donde procede la persona que visita nuestra web, es decir, de donde viene. 5 $HTTP_USER_AGENT Como muy bien dice la siguiente variable es USER_AGENT y que quiere decir esto? Pues que nos dir en que navegador estamos utilizando, Netscape, mozilla, Internet Explorer, etc... 6 $REMOTE_ADDR Esta variable nos puede ser muy til por un motivo muy concreto, Cuntas veces hemos pensado quiero saber la IP del visitante que nos est visitando? Pues esta misma variable es la que nos ayuda a esto +Informacin en un artculo que publico el webmaster

7 $SERVER_ADMIN Simplemente nos devolver el email de configuracin del servidor donde est alojado el script PHP. 8 $REQUEST_METHOD Si imprimimos esta variable nos devolver el tipo de peticin que usamos para acceder a la pgina si fue con POST o con GET 9 $HTTP_ACCEPT Los tipos de archivos que el visitante puede recibir de este servidor con el navegador actual 10 $REMOTE_PORT Como ya habamos comentado la variable de $REMOTE_ADDR no bamos a dejar aparte el puerto que se est utilizando para comunicarse con el servidor web CONSTANTES Una constante es como una variable pero con la diferencia que una vez toma un valor este no puede variar durante la ejecucin del script, otra particularidad de las constantes es que son globales, por lo que se pueden leer desde el interior de una funcin sin tener que pasarlas como parmetro. Al contrario que las variables, las constantes se expresan sin signo del dlar ($), y se tienen que definir usando la funcin define: 000 001 002 003 <? define ('miConstante','valor de mi constante'); echo miConstante; ?> Maximizar Seleccionar PHP

Existe otra funcin, llamada defined que nos permite saber si se ha declarado una constante determinada, lo haremos de la siguiente manera:

000 001 002 003 004

<? $definida = defined("miVariable"); // Mostrara 0 si existe la variable y 1 si no existe echo $definida; ?> Maximizar Seleccionar PHP

En algunos casos no es posible acceder al valor de una constante directamente por su nombre, pues este nombre puede coincidir con el de una funcin y el resultado producido no sera el esperado, en ese caso usaremos la funcin constant para leer el valor de dicha constante: 000 001 002 003 <? define ('echo','valor de mi constante'); echo constant('echo'); ?> Maximizar Seleccionar PHP

__FUNCTION__ - Aadida en la versin 4.3 de PHP, contiene el nombre de la funcin que se est ejecutando actualmente __CLASS__ - Aadida tambin en la versin 4.3, contiene el nombre de la clase que se ejecuta actualmente __METHOD__ - Aadida en la versin 5, contiene el nombre del mtodo actual Veamos un ejemplo de uso de estas constantes:[cdigo]<? echo "Ejecutando la lnea ".__LINE__;?>[/cdigo] Ntese que estas constantes tienen dos barras de subrayado delante y dos detrs del nombre cada una. TIPOS DE DATOS EN PHP PHP es un lenguaje de los denominados de tipo dinmico, lo que significa que una misma variable puede tener tipos (nmero, texto, vector...) diferentes en distintos momentos. Por esta razn, no soporta la definicin de tipos en la declaracin de variables sino que el tipo de la variable viene determinado por el contexto en el que se encuentra, veamos un ejemplo: 000 <?php 001 // La variable $var1 es un numero ( entero ) 002 $var1 = 3; 003 // La variable $var2 es un texto ( cadena de caracteres ) 004 $var2 = "9 aos"; 005 // Si juntamos las variables $var1 y $var2, obtenemos un texto 006 $var3 = $var1 . $var2; // "39 aos" 007 // Si en cambio las sumamos obtendremos un nmero 008 $var3 = $var1 + $var2; // PHP suma 3 + 9 y nos da como resultado solo el 12 009 ?> Maximizar Seleccionar PHP Podemos forzar un tipo determinado, con la funcin settype o ente parntesis delante de la variable uno de los siguientes tipos de datos:

En este ejemplo vemos como la constante tiene un nombre polmico, que coincide con el de una funcin (echo) y para diferenciar el primer echo del segundo hemos usado la funcin constant. Existen muchas constantes predefinidas en PHP, entre las cuales encontramos las llamadas constantes mgicas. CONSTANTES MGICAS Existen unas constantes llamadas mgicas que son accesibles para cualquier script PHP, estas nos proporcionan informacin sobre el script que depende del lugar en el que las usemos: __FILE__ - Contiene el nombre y la ruta del archivo que se est ejecutando __LINE__ - Contiene la lnea que se est ejecutando en ese momento exacto del fichero actual

boolean - Lgico integer - Entero float - Decimal string - Cadena de caracteres null - vaco array - vector object - Objeto

float Decimal En versiones anteriores a la 4.2.0 de PHP se les llamaba double, contienen nmeros decimales positivos o negativos. Si lo usamos cmo entero, su valor se redondea a la baja (truncamiento). string - Cadena de caracteres Es una lista de caracteres (letras, cifras, signos...) en un orden determinado, por ejemplo "hola mundo". Los representamos delimitados con comillas dobles o simples. No podemos utilizar el mismo tipo de comillas en el interior de una cadena que para delimitarla, en este caso le tendremos que poner un \ delante para diferenciarla del final de la cadena, y si se puede confundir, \\ en lugar de \: 000 001 002 003 004 005 006 007 <?php // As si $var1 = "pongo \ delante de las \" pero no de las ' "; $var1 = 'pongo \ delante de las \' pero no de las " '; $var1 = "pongo \\"; // As no $var1 = "pongo " donde quiero"; // Mal ! " $var1 = "pongo \"; // Mal ! \ ?> Maximizar Seleccionar PHP

boolean - Lgico Puede contener 2 valores True o False. Al usarlo cmo entero su valor puede ser 1 (True) o 0 (False). Un ejemplo tpico de lgico es el resultado de una comparacin:
000 <?php 001 $var1= 1 != 2 ; // $var1 es true 002 ?> Maximizar Seleccionar PHP

integer - Entero Puede contener enteros (sin decimales) positivos y negativos, se pueden escribir en notacin octal, decimal y hexadecimal: 000 001 002 003 004 <?php $var1 = 027; // Notacin octal ( 23 en decimal ) $var1 = 23; // Notacin decimal $var1 = 0x17; // Notacin hexadecimal ( 23 en decimal ) ?> Maximizar Seleccionar PHP

Las cadenas con comillas dobles, aparte de \" y \' tienen otros caracteres especiales: \n - Salto de lnea (en el cdigo, no en la presentacin de la pg.) \r - Retorno de carro (Salto de lnea, enter) \t Tabulador \$ - Dlar 000 <?php // Contenido con caracteres especiles 001 $var1 = "linea 1\t 10\$\nlinea 2\t 15\$"; 002 ?> Maximizar Seleccionar PHP

Si lo utilizamos cmo lgico su valor es False si es 0 o True en cualquier otro caso.

La existencia de un carcter especial \$ para el dlar, es porque en el interior de comillas dobles podemos usar variables. Si vamos a acceder a elementos de un vector, lo agruparemos con {y} detrs del $: 000 001 002 003 004 005 006 007 <?php // As si $var1 = "php"; $var2 = Array ( "php","html" ); // [0]=>php, [1]=>html $var3 = "aprendo $var1"; // aprendo php $var3 = "aprendo {$var2[0]}"; // aprendo php // As no $var3 = "aprendo $var2[0]"; // aprendo Array ?> Maximizar Seleccionar PHP

VECTORES EN PHP Los vectores o array (a veces mal llamados arreglos) son listas ordenadas de elementos. Para definir un vector en PHP utilizamos la funcin array: 000 <?php 001 $vector = array ( "elemento 1", "elemento 2" ); 002 ?> Maximizar Seleccionar PHP Una vez definido el vector, podemos acceder a sus elementos, sus elementos estarn identificados por un nmero ( empezando por 0 ) o una clave que se puede definir as: 000 001 002 <?php $vector = array ( "clave 1" => "elemento 1", "clave 2" => "elemento 2" ); ?> Maximizar Seleccionar PHP

Si mezclamos una cadena con nmeros (enteros o decimales) se utilizar cmo nmero hasta el primer carcter incorrecto (ver primer ejemplo del captulo). Si lo mezclamos con lgicos ser False cuando la cadena est vaca. null - vaco No tiene valor, se comporta como cadena vaca, cero o false; array - vector Los veremos en profundidad en el prximo captulo vectores en PHP. object - Objeto Los veremos ms adelante en el captulo PHP orientado a objetos

Para acceder a un elemento usaremos [y] con su clave ("clave 1" o 0): 000 001 002 003 <?php echo $vector[0];// elemento 1 echo $vector['clave 1'];// elemento 1 ?> Maximizar Seleccionar PHP

Podemos borrar un elemento de una variable con la funcin unset. Si usamos una clave que no existe, estaremos creando un nuevo elemento (con la clave que hayamos usado), si no ponemos clave entre los [], crearemos un elemento nuevo al final del vector:

000 001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016

<?php $vector = array ( "elemento 1", "elemento 2" ); // Aadimos "elemento 3" al final $vector[] = "elemento 3"; // Aadimos un elemento con clave "clave 3" $vector['clave 3'] = "elemento 4"; // Cambiamos el texto al elemento 3 ( 2 contando el 0 ) $vector[2] = "elemento N"; // Borramos el 'clave 3'; unset ( $vector['clave 3'] ); print_r ($vector); /* Array ( [0] => elemento 1 [1] => elemento 2 [2] => elemento N ) */ ?> Maximizar Seleccionar PHP

Resultado: Array ([0] => elemento 1 [1] => elemento 2 [2] => elemento 3 [3] => elemento N) OPERADORES Los operadores son expresiones que nos permiten manipular los datos que les pasamos, cada uno de los datos que se le pasa a un operador se llama operando, y segn el nmero de operandos de que disponga un operador estaremos hablando de un operador unario (un operando), binario (dos operandos), ternario... Los operadores no los utilizamos aisladamente, sino que solemos utilizar mas de uno en una misma expresin compleja, en este caso tendremos que tener en cuenta las normas de preferencia para no encontrarnos con resultados no deseados. NORMAS DE PREFERENCIA

Las operaciones no se realizarn de izquierda a derecha sino que se realizarn siguiendo un orden de preferencia que PHP asigna a cada operando, estas son las preferencias de PHP en cuanto a los operadores: new [ ! ~ ++ -- (int) (float) (string) (array) (object) @ */% +-. << >> < <= > >= == != === !== & ^ | && || ?: = += -= *= /= .= %= &= |= ^= <<= >>= Print And Xor Or , Para cambiar el orden en que se realizan las operaciones utilizaremos los parntesis (), consiguiendo que se realicen primero las operaciones del interior del parntesis y, acto seguido, el resto de operaciones siguiendo en cada caso el mismo orden de preferencia anteriormente citado: 000 001 002 003 004 <?php // el operador de multiplicacin es l signo asterisco ( * ) $a = 2 + 4 * 2; // El resultado es 10 $a = (2+4) * 2; // el resultado es 12 ?> Maximizar Seleccionar PHP

Tipos de operadores PHP dispone de una gran cantidad de operadores que podramos organizar en las siguientes categoras: Operadores de Aritmtica Operadores de Asignacin Operadores Bit a Bit Operadores de Comparacin Operadores de Control de Errores Operadores de ejecucin Operadores de Incremento Operadores de Lgica Operadores de Cadena Operadores de Matrices Operadores de Tipo Estos operadores en su mayor parte son para trabajar con valores numricos, a excepcin de los 4 ltimos de la lista anterior, y se explicaran uno a uno en el curso de operadores PH OPERADORES DE ARITMTICA Los operadores de aritmtica son los operadores bsicos para el trabajo con nmeros, nos permiten sumar dos valores, restarlos, dividirlos... Se trata de operadores binarios en todos los casos ya que requieren dos operandos para funcionar correctamente. Los operadores aritmticos existentes son los siguientes: Adicin (+) - Devuelve la suma de los dos operandos que recibe el operador. 000 <? 001 $a = 1 + 2; // $a toma valor 3 002 ?> Maximizar Seleccionar PHP Substraccin (-) - Devuelve la diferencia entre el primer y el segundo operando. Multiplicacin (*) - Devuelve el producto de los operandos. Divisin (/) - Devuelve el cociente en valor flotante de los operandos.

Mdulo (%) - Devuelve el resto de dividir el primer operando entre el segundo. Este operador es muy til para saber si un nmero es mltiple de otro 000 <? 001 $a = 3 % 2; // $a toma valor 1 002 ?> Maximizar Seleccionar PHP Al tratar de operar matemticamente con cadenas u otros tipos de datos, PHP intentar transformar a enteros y luego realizar las operaciones deseadas. OPERADORES DE ASIGNACIN Los operadores de asignacin, son aquellos que nos permiten modificar el valor de una variable, el operador de asignacin bsico es el 'es igual a' (=), que da el valor que lo sigue a la variable que lo precede: 000 <? 001 $miVariable = 'suValor'; 002 ?> Maximizar Seleccionar

PHP

Asimismo, combinando los operadores de aritmtica, bit a bit o de cadenas con el operador de asignacin, conseguimos los 'operadores combinados', con los que podemos realizar una operacin de asignacin conjuntamente con otra operacin: 000 001 002 003 004 <? $a = 1; $a += 1; // Sumamos y asignamos $a = $a + 1; // Operacion equivalente ?> Maximizar Seleccionar PHP

En este ejemplo vemos que podemos poner el operador de suma seguido

del de asignacin para incrementar el valor de la variable, asimismo podramos usar el operador de concatenacin (.=), el de multiplicacin (*=)... consiguiendo efectos similares. OPERADORES DE COMPARACIN Los operadores de comparacin son operadores en su mayora binarios que nos permiten comparar variables devolviendo un valor booleano a 1 (TRUE) si se cumple la condicin que expresan y a 0 (FALSE) en el caso contrario. Los operadores binarios de comparacin son: Igual (==) - Devuelve 1 si los operandos son iguales aunque sean de tipo distinto. Idntico (===) - Devuelve 1 si los operandos son iguales y del mismo tipo. Diferente (!= o <>) - Devuelve 1 si los operandos son distintos. No idnticos (!==) - Devuelve 1 si son distintos o de tipo diferente. Menor que (<) - Devuelve 1 si el primer operando es mas pequeo que el segundo. Mayor que (>) - Devuelve 1 si el primer operando es mas grande que el segundo. Menor o igual que (<=) - Devuelve 1 si el primer operando es mas pequeo o igual que el segundo. Mayor o igual que (>=) - Devuelve 1 si el primer operando es mas grande o igual que el segundo. Estos operadores se usan mayormente como condicin para las estructuras de control. El operador de comparacin ternario es el '?:', este operador, evala una condicin, que puede ser una operacin de comparacin binaria y si se cumple ejecuta el segundo operando, de lo contrario ejecuta el tercero: 000 <? 001 echo ($variable == 1) ? 'Vale 1' : 'Vale mas de uno'; 002 ?> Maximizar Seleccionar PHP

Este ejemplo imprime 'Vale 1' si se cumple la expresin '$variable == 1' de lo contrario imprime 'Vale mas de uno'. OPERADORES DE CONTROL DE ERRORES Para evitar que se muestre en pgina un determinado error que se puede producir eventualmente en una lnea PHP dispone del operador de control de errores. Este operador que se representa con el signo arroba (@), permite evitar que se imprima en la pgina de resultado un error producido por la ejecucin del cdigo PHP en una lnea determinada: 000 <?php 001 echo 'Hola mundo'; 002 @ funcionquenoexiste (); // Esto debera producir un error 003 ?> Maximizar Seleccionar PHP

OPERADORES DE INCREMENTO Los operadores de incremento (++) permiten aumentar en una unidad el valor de una variable numrica, los de decremento (--) por lo contrario disminuyen la misma variable en una unidad. Estos operadores son operadores unarios por lo que solo reciben un operando al que incrementan o decrementan segn el operador. Estos operadores pueden ponerse delante del operando, en ese caso la operacin devolver el valor una vez operado, o despus, caso en el que la operacin devolver el valor antes de operar:

000 001 002 003 004

<? $variable = 2; echo $variable++; // Imprime 2 y luego incrementa echo ++$variable; // incrementa y luego imprime 4 ?> Maximizar Seleccionar PHP

Existe otro operador lgico, en este caso unario, que es el operador No (!), este operador delante de un valor binario, devuelve el valor contrario (0 si es 1 y 1 si es 0): 000 <? 001 echo !((1 == 1)&&(2 != 2)); // Devuelve 1 002 ?> Maximizar Seleccionar PHP

Este tipo de operador se utiliza mucho para el tercer parmetro de un bucle for. OPERADORES DE LGICA Los operadores de Lgica nos permiten crear expresiones mas complejas para evaluar nuestras estructuras de control, permitindonos enlazar varias operaciones de comparacin con los diferentes operadores booleanos. Estos operadores son mayoritariamente binarios, por lo que reciben 2 operandos, dependiendo de estos operandos (de valor 0 o 1) devolver 0 (FALSE) o 1 (TRUE), los operadores lgicos binarios son Y (&& o and) - Devuelve 1 si ambos operandos sn 1 O (|| o or) - Devuelve 1 si algn operando es 1 O exclusivo (xor) - Devuelve 1 si solo 1 operando es 1 Veamos un ejemplo para ver como funcionan estos operadores: 000 <? 001 echo ((1 == 1)&&(2 != 2)); // Devuelve 0 002 ?> Maximizar Seleccionar PHP

En esta expresin primero evaluaremos los parntesis, el primero vale 1 porque se cumple, el segundo 0 porque no se cumple, como usamos Y (&&) y no son 1 los dos vale 0, entonces lo negamos y vale 1

OPERADORES DE CADENA En esta categora encontramos el operador binario de concatenacin (.), que se encarga de unir dos cadenas dadas la una a continuacin de la otra: 000 <? 001 $texto = 'hola ' . 'mundo'; 002 echo $texto; 003 ?> Maximizar Seleccionar

PHP

A su vez, existe un operador que hemos incluido entre los operadores de asignacin, que es el operador de asignacin sobre concatenacin (.=), este operador concatena a una variable un valor dado de la siguiente manera:

000 001 002 003 004

<? $texto = 'hola '; $texto .= 'mundo'; echo $texto; ?> Maximizar Seleccionar

PHP

Este operador nos ser de gran utilidad para almacenar una gran cantidad de datos en una misma variable de manera limpia, veamos un ejemplo: 000 <? 001 $html = "<html>\n"; 002 $html .= "<head>\n"; 003 $html .= "<title>Mi pgina</title>\n"; 004 $html .= "</head>\n"; 005 $html .= "<body>\n"; 006 $html .= "Este es el contenido de mi\n"; 007 $html .= "preciosa pgina\n"; 008 $html .= "</body>\n"; 009 $html .= "</html>\n"; 010 echo $html; 011 ?> Maximizar Seleccionar PHP Como veis, hemos almacenado una pgina HTML en la variable $html de forma limpia y bien presentada para finalmente imprimir el resultado. ESTRUCTURAS DE CONTROL Porque los scripts PHP no son lineales, debemos poder controlar la ejecucin de una accin o de un determinado bloque de acciones, para hacer esto, PHP dispone de lo que se llama estructuras de control, que nos permiten ejecutar o no, una o ms veces un determinado bloque de acciones.

Estas estructuras son: if while do..while for foreach switch Y se explicarn una a una en el curso de estructuras de control CONDICIONAL IF La estructura if nos permite ejecutar un bloque de acciones si se cumple una determinada condicin, de lo contrario nos permite ejecutar otro bloque de acciones identificado por la sentencia else, si el resultado de la condicin es distinto de 0, se ejecutarn las acciones del if, de lo contrario las del else: 000 <? 001 if($var1 == 12){ 002 echo 'La variable vale 12'; 003 } 004 else { 005 echo 'La variable tiene otro valor'; 006 } 007 ?> Maximizar Seleccionar PHP La condicin, se escribe entre parntesis a continuacin de la palabra if, y esta formada por operaciones PHP, sobre todo por operaciones lgicas y de comparacin. Hay otra sentencia que usamos a menudo para unir ms de un condicional if, es la sentencia elseif, sta nos permite dar otra condicin por si no se ha cumplido la primera, despus de elseif podemos volver a usar else con

normalidad: 000 <? 001 if($var1 == 12){ 002 echo 'La variable vale 12'; 003 } 004 elseif($var1 == 3){ 005 echo 'La variable vale 3'; 006 } 007 else { 008 echo 'La variable tiene otro valor'; 009 } 010 ?> Maximizar Seleccionar PHP En este caso, si var1 es distinto de 12, evaluar si vale 3, si es as mostrar el segundo mensaje, si no el tercero. BUCLE WHILE Esta instruccin nos permite efectuar un bloque de acciones mientras se cumpla una determinada condicin, cuando deje de cumplirse, se continuar ejecutando el resto del cdigo PHP, la condicin se cumple mientras no de resultado 0 y esta formada por operaciones, sobretodo por operaciones lgicas y de comparacin. 000 <? 001 $var1 = 0; 002 while($var1 < 10){ 003 echo "\$var1 = $var1<br>"; 004 $var1++; // Incrementamos la variable 005 } 006 ?> Maximizar Seleccionar PHP

Hay que tener cuidado con este tipo de bucle, en el interior del bloque de acciones siempre se debe modificar algn parmetro de la condicin para que esta acabe cumplindose, de lo contrario crearemos un bucle infinito. BUCLE DO WHILE El bucle do while es en su esencia igual al bucle while con la diferencia de que ejecuta las acciones antes de comprobar la condicin, consiguiendo que se ejecuten las acciones una vez si la condicin retorna 0 o FALSE, as, este bucle se ejecutar siempre una vez mas que while si tienen la misma condicin: 000 <? 001 $var1 = 0; 002 do { 003 echo "\$var1 = $var1<br>"; 004 $var1 ++; 005 } while ($var1 <= 10); 006 ?> Maximizar Seleccionar Si ejecutas este ejemplo, veris cmo imprime: $var1 = 0 $var1 = 1 $var1 = 2 $var1 = 3 $var1 = 4 $var1 = 5 $var1 = 6 $var1 = 7 $var1 = 8 $var1 = 9 $var1 = 10

PHP

Aunque en el ltimo caso no se haya cumplido la condicin de ya que $var1 no seria mas pequeo que 10. BUCLE FOR El bucle for nos permite ejecutar un determinado bloque de acciones un nmero determinado de veces, a esta estructura le pasaremos tres parmetros que separaremos por punto y coma (;) y que sern: Accin inicial - Inicializa la variable de control del bucle condicin - Se evala en cada iteracin, cuando devuelve 0 o FALSE se continua ejecutando el cdigo de despus del for accin - Se ejecuta en cada bucle y debe modificar la variable de la condicin Vamos a ver un ejemplo para que nos quede todo claro, ya que el concepto puede costar un poco de comprender. 000 <? 001 for ($var1 = 0; $var1 < 10; $var1++){ 002 echo "\$var1 = $var1"; 003 } 004 ?> Maximizar Seleccionar PHP Antes de empezar el bucle se ejecutar $var1 = 0, entonces se ejecutar el interior del bucle y $var1++ hasta que se cumpla $var1 < 10. BUCLE FOREACH El bucle foreach nos permite iterar para cada elemento de un vector, su sintaxis es sencilla, solo hay que indicar el identificador de la matriz, la expresin as y seguidamente la variable que identificar el valor del elemento:

000 <? 001 $vector = array("uno", "dos", "tres"); 002 foreach ($vector as $valor) { 003 echo "Valor: $valor<br>"; 004 } 005 ?> Maximizar Seleccionar PHP Esta expresin tambin nos permite trabajar con vectores con ndice, en este caso trabajaremos as: 000 <? 001 $vector = array( 002 "uno" => 1, 003 "dos" => 2, 004 "tres" => 3, 005 "diecisiete" => 17 006 ); 007 foreach($vector as $indice => $valor) { 008 print "\$vector[$indice] => $valor.\n"; 009 } 010 ?> Maximizar Seleccionar PHP Como vemos en este caso especificamos la variable que identifica el ndice y la que identifica el valor separadas por => CICLO SWITCH En muchas ocasiones, programando en PHP, nos encontramos que queremos hacer una u otra accin dependiendo del valor de una variable, en este caso, podramos usar una sucesin de condicionales if, pero el cdigo resultante ser confuso y difcil de modificar en el futuro. Pero PHP y en general todos los lenguajes de programacin de un nivel

mas o menos alto, dispone de un ciclo que nos ir como anillo al dedo en este caso, el ciclo switch que nos realizar un bloque de acciones para cada valor de una variable dada. 000 <? 001 switch ($i) { 002 case 0: 003 echo "Variable en valor bajo"; 004 break; 005 case 1: 006 echo "Variable en valor alto"; 007 break; 008 default: 009 echo "La variable no es binria"; 010 } 011 ?> Maximizar Seleccionar PHP Este cdigo har un switch para la variable $i, en el caso que esta sea 0, imprimir el mensaje 'Variable en valor bajo', si es 1 imprimir 'Variable en valor alto' y sino, nos dir que la variable no es un nmero decimal. Vemos que cada valor se relaciona con un caso, en el interior del cual realizamos las acciones requeridas y una instruccin llamada break, de lo contrario, se seguiran ejecutando las instrucciones de los dems casos. Finalmente encontramos un caso especial llamado default, este caso se activar si no se ha activado ninguno de los casos anteriores. En el artculo 'Paso de variables por URL' podemos ver y ejecutar un ejemplo de ciclo switch.

LAS FUNCIONES En toda aplicacin mas o menos compleja hay bloques de acciones que realizamos mas de una vez y PHP no es una excepcin, para que no tengamos que escribir estas acciones repetidamente, todos los lenguajes de un nivel mas o menos alto incorporan lo que llamamos funciones. Para declarar una funcin utilizamos la expresin function seguida del nombre que queremos dar a la funcin, a continuacin y entre parntesis, los argumentos que recibe la funcin y finalmente y entre corchetes el cdigo que esta debe ejecutar, veamos un ejemplo: 000 <? 001 function miFuncion ($argumento_1, $argumento_2) { 002 // Codigo de la funcion 003 } 004 ?> Maximizar Seleccionar PHP LLAMADO DE UNA FUNCIN Una vez creada la funcin, la debemos llamar como una funcin prefabricada de PHP, por su nombre pasando los argumentos que necesita. Veamos un ejemplo: 000 <? 001 miFuncion("hola", "pepe"); 002 ?> Maximizar Seleccionar PHP EL VALOR DE RETORNO Es interesante saber que las funciones pueden devolver un valor al lugar donde las llamamos, esto se hace gracias a la instruccin return seguida del valor de retorno, veamos este ejemplo:

000 <? 001 function saludo($nombre,$momento){ 002 return "Hola $nombre buenas $momento"; 003 } 004 echo saludo("Pepe","tardes"); 005 ?> Maximizar Seleccionar PHP Este ejemplo dar como resultado: Hola Pepe buenas tardes PROCESAMIENTO DE FORMULARIOS Al enviar un formulario HTML, los datos sn enviados al servidor Web para que este los procese. El formulario HTML indica algunas caractersticas sobre cmo ser el enva, cmo el method o forma de envo y el action o direccin de envo del formulario. 000 <form method="POST" action="recoger_datos.php"> 001 <input type="text" name="telefono"> 002 <!-otros campos --> 003 </form> Maximizar Seleccionar XML

Estos datos, podemos recojerlos desde nuestra aplicacin PHP , en el ejemplo recoger_datos.php, utilizando los arrays superglobales, $_GET y $_POST de manera respectiva. De esta manera, cuando el usuario rellena un campo cmo el del formulario de ejemplo el servidor le enva a recoger_datos.php, donde de reciben los datos y PHP genera la variable $_POST['telefono'], que podemos guardar en la Base de Datos o mostrar por ejemplo con un echo: 000 <?php 001 echo $_POST['telefono']; 002 ?> Maximizar Seleccionar

PHP

Exactamente igual pasar cuando el mtodo especificado sea GET (siempre, tambin con POST los escribiremos en maysculas). Podemos usar _REQUEST cmo sinnimo de _GET y _POST simultneamente. COOKIES EN PHP Antes de leer este artculo recomiendo leer el artculo cookies en JavaScript pues aqu no explicare que es una cookie, slo como usarla con PHP. Para usar cookies en PHP, tenemos que tener en cuenta que la cookie se enva antes de enviar la pgina, es decir, que enviaremos la cookie al navegador antes de enviar ningn carcter de la pgina o recibiremos un error. La funcin que usaremos para enviar una cookie es setcookie, que funciona de la siguiente manera:

Segn lo indicado en el form, los datos del formulario se envan utilizando uno de los siguientes mtodos, dependiendo del method del formulario GET - Los datos del formulario sn enviados al servidor a travs de los encabezados HTTP, estos datos sn visibles en la URL y en los logs del servidor, es poco recomendado para datos de usuario. POST - Los datos del formulario son enviados al servidor como datos de la peticin, no se recomienda para pasar parmetros de modularizacin, paginacin..

000 <?php 001 setcookie (nombre,valor,fecha); 002 ?> Maximizar Seleccionar PHP Donde 'nombre', ser un identificador de la cookie que contendr el texto indicado por 'valor' y que tendr vigencia hasta 'fecha'. Vamos a hacer un ejemplo que incrementara el valor de una cookie cada vez que se visite cierta pgina: 000 <?php 001 $visitas = $_COOKIE["visitas"]+1; 002 setcookie ("visitas", $visitas, time () + 7*24*60*60); 003 echo "Nos has visitado $visitas veces"; 004 ?> Maximizar Seleccionar PHP Vemos que accedemos al valor de la cookie 'visitas' con un array superglobal que almacena todas las cookies de la pgina y le sumamos 1: 000 <? 001 $visitas = $_COOKIE["visitas"]+1; 002 ?> Maximizar Seleccionar PHP Si lo deseas, puedes ver un ejemplo operativo del cdigo usado en este artculo. ENVO DE EMAIL PHP dispone de la funcin mail() para enviar un correo electrnico a un servidor SMTP que se encargar de entregar el correo a su destinatario.

OPCIONES DE CORREO Para que la funcin mail funcione correctamente, deberemos tener configurados en nuestro archivo de configuracin de PHP las opciones de correo. Si no tenemos acceso al archivo de configuracin de PHP podremos definir las opciones de correo usando este cdigo antes de usar mail:
000 001 002 003 004 005 006 007 <?php // Direccin del servidor SMTP, en el ejemplo smtp.example.com, comnmente localhost ini_set(SMTP, "smtp.example.com"); // Puerto del servidor SMTP, comnmente 25 ini_set(smtp_port, "25"); // Direccin FROM, desde la que se enva el email ini_set(sendmail_from, "emisor@example.com"); ?> Maximizar Seleccionar PHP

ENVIANDO UN EMAIL SENCILLO La funcin mail, que nos sirve para enviar nuestro correo, tiene los siguientes parmetros destinatario - El que recibe el correo, en el ejemplo usaremos destinatario@example.com asunto - El asunto del email cuerpo - El contenido del email encabezados - Distintas configuraciones del email separadas por \n en el ejemplo lo usamos para definir el emisor ( from )
000 <?php 001 // Definimos el emisor 002 ini_set('sendmail_from', 'emisor@example.com'); 003 // Enviamos el correo de "Nombre Emisor <emisor@example.com>" a "destinatario@example.com" 004 mail("destinatario@example.com", "Asunto del correo", "Cuerpo del mensaje", "from: Nombre Emisor <emisor@example.com>"); 005 ?> Maximizar Seleccionar PHP

ENVIANDO EMAILS CON HTML Para enviar emails en HTML en lugar de texto simple cmo en el ejemplo anterior, usaremos los encabezados del email (parmetro 4 de mail) para indicar que el contenido del email es HTML con estas opciones:

MIME-Version: 1.0 Content-type: text/html; charset=iso-8859-1 El charset (iso-8859-1 ) se puede cambiar por utf-8 si tenemos problemas con los acentos, las opciones las pondremos junto con el from ( o emisor ) que ya haba y separando cada una con \n

000 <?php 001 ini_set('sendmail_from', 'emisor@example.com'); 002 // Aadimos opciones a los encabezados 003 mail("destinatario@example.com", "Asunto del correo", "Cuerpo del <b>mensaje</b>", "MIMELa nica cosa que deberemos tener en cuenta, es que si usamos cookies no 004 Version: 1.0\nContent-type: text/html; charset=iso-8859podremos haber enviado ni un solo carcter (ni siquiera un espacio) al 1\nfrom: Nombre Emisor <emisor@example.com>"); navegador antes del session_start, el siguiente ejemplo nos dar error por ?> el espacio de la lnea 0: Maximizar Seleccionar PHP 000 <?php 001 // Inicializamos sesion 002 session_start(); ADJUNTANDO ARCHIVOS Y OTRAS OPCIONES 003 ?> Los encabezados nos permiten, adems de indicar el emisor y si es HTML, Maximizar Seleccionar PHP indicar otras opciones del formato del correo cmo por ejemplo los archivos adjuntos. Si lo deseas puedes leer informacin sobre envo de emails con LEER UNA VARIABLE GUARDADA PHP y opciones adicionales Si hemos guardado una sesin, podremos acceder a sus variables desde todas las pginas PHP de nuestra web Cuando sean visitadas por el mismo SESIONES EN PHP usuario. Utilizaremos sesiones para almacenar una serie de variables en el servidor relacionndolas (gracias a una variable pasada por cookie o por URL) con un usuario concreto para que estn disponibles en diferentes pginas de nuestro sitio web. Una vez almacenada una variable de sesin, podremos leerla desde todas las pginas de nuestra web mientras la sesin no se destruya. Esto lo haremos simplemente inicializando la sesin y con el mismo vector $_SESSION, para ver si existe una variable de sesin determinada, usaremos isset cmo con cualquier otra variable:

000 <?php 001 // Inicializamos sesion 002 session_start(); 003 // Guardamos una variable 004 $_SESSION['nombre'] = 'Fernando Daz'; 005 ?> Maximizar Seleccionar PHP

GUARDAR UNA VARIABLE El soporte para sesiones de PHP nos permite inicializar fcilmente una sesin utilizando session_start y gracias al vector superglobal $_SESSION, podremos trabajar con sesiones como si de cualquier otro vector se tratara:

000 <?php 001 // Inicializamos sesion 002 session_start(); 003 // Comprovamos si existe la variable 004 if ( isset ( $_SESSION['nombre'] ) ) { 005 // Si existe 006 echo $_SESSION['nombre']; 007 } else { 008 // Si no existe 009 echo 'desconocido'; 010 } 011 ?> Maximizar Seleccionar PHP BORRAR UNA VARIABLE Podemos borrar una variable de sesin usando la funcin unset, pero adems podemos eliminar la sesin con session_destroy: 000 <?php 001 // Inicializamos sesion 002 session_start(); 003 // Borramos la variable 004 unset ( $_SESSION['nombre'] ) { 005 // Borramos toda la sesion 006 session_destroy(); 007 ?> Maximizar Seleccionar PHP

PHP ORIENTADO A OBJETOS Cuando a principios de los aos 80 se empez a experimentar la Programacin Orientada a Objetos (POO) esta ha ido suplantando la programacin tradicional, por esta razn y aunque PHP no sea orientado a objetos, PHP incorpora sus principales caractersticas para que podamos trabajar con clases y objetos. CLASES Y OBJETOS Para entender la programacin orientada a objetos debemos primero entender lo que es una clase, pero primero diremos que un objeto es un conjunto de atributos y mtodos agrupados. Una clase es un grupo de objetos que comparten los mismos atributos y mtodos, veamos como podemos crear una clase llamada Imagen: 000 <? 001 class Imagen { 002 // Aqu el cdigo de la clase 003 } 004 ?> Maximizar Seleccionar

PHP

MTODOS Y ATRIBUTOS Esta clase contendr un seguido de atributos, que definiremos con la palabra reservada var, y mtodos, que programaremos como funciones usando function. Para crear un objeto de tipo imagen se ejecutar el constructor de la imagen que ser el mtodo con el mismo nombre que la clase o en PHP5 el mtodo llamado __construct(), veamos un ejemplo:

000 001 002 003 004 005 006 007 008 009 010 011 012

<? class Imagen { var $src; // Estos sn los atributos var $border; // de los objetos asociados // Esta funcion es el constructor function Imagen($src,$border) { $this->src=$src; $this->border=$border; } } // Creamos un objeto imagen $logo = new Imagen("logo.gif",3); ?> Maximizar Seleccionar PHP

Puedes ver cmo efectivamente este ejemplo funciona y es un magnifico ejemplo de cmo nos puede simplificar algo rutinario como la creacin de mltiples imgenes. HERENCIA DE CLASES Si resulta que hemos creado una clase pero que adems vemos que hay unos determinados objetos de esta clase que comparten otras cualidades por lo que queremos englobarlos en una clase distinta, lo que podemos hacer es ponerlos en una subclase, los objetos de la subclase, mantendrn todos los mtodos y atributos de la clase padre y adems compartirn los de la clase derivada. Vamos a ver cmo podemos definir una subclase de la clase Imagen definida en la pgina anterior para imgenes de tamao 468 x 60, esta subclase se llamar Banner y ser de la siguiente manera: 000 <? 001 // Definimos la subclase de Banner 002 class Banner extends Imagen { 003 // Esta es la nueva funcion Imprimir para banners 004 function Imprimir() { 005 echo "<img src=\""; 006 echo $this->src; 007 echo "\" border=\""; 008 echo $this->border; 009 echo "\" width=\"468\" height=\"60\">"; 010 } 011 } 012 ?> Maximizar Seleccionar PHP Y finalmente crearemos el objeto $banner_1 y lo imprimiremos:

Tambin podemos crear mas mtodos adems del constructor, vamos a completar el ejemplo con un mtodo que imprima la imagen en el navegador del visitante:
000 001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 <? class Imagen { var $src; var $border; function Imagen($src,$border) { $this->src=$src; $this->border=$border; } // Esta funcion es un mtodo de Imagen function Imprimir() { echo "<img src=\""; echo $this->src; echo "\" border=\""; echo $this->border; echo "\">"; } } $logo = new Imagen("logo.gif",3); // Llamamos el nuevo mtodo $logo->Imprimir(); ?> Maximizar Seleccionar PHP

000 <? 001 $banner_1 = new Banner("anunciante1.gif",0); 002 $banner_1->Imprimir(); 003 ?> Maximizar Seleccionar PHP Tener en cuenta que en el cdigo de la subclase falta el cdigo de la clase Imagen, sino no funcionar. Vemos que no declaramos constructor para banner, podemos crearle un constructor especfico, pero si no lo hacemos cuando hagamos new Banner, llamaremos al constructor de la clase padre Imagen. Cuando hacemos Imprimir () del objeto perteneciente a la base derivada Banner, se llama al mtodo Imprimir de Banner y no al de Imagen aunque se llamen igual. En PHP5, las cosas son un poco distintas, porque el motor Zend Engine 2, est preparado para trabajar con Objetos a fondo, esto implica una gran cantidad de cambios a nivel interno y los siguientes cambios externos: CONSTRUCTORES Y DESTRUCTORES Si trabajamos con PHP5, para definir un constructor, usamos el mtodo __construct, vamos a ver un ejemplo:

000 001 002 003 004 005 006 007 008 009 010 011 012

<? class Imagen { var $src; // Estos sn los atributos var $border; // de los objetos asociados // Esta funcion es el constructor function __construct($src,$border) { $this->src=$src; $this->border=$border; } } // Creamos un objeto imagen $logo = new Imagen("logo.gif",3); ?> Maximizar Seleccionar PHP

Adems tenemos la opcin de crear un destructor que se ejecutar cuando el objeto va a ser eliminado de la memoria, el constructor se define con el mtodo __destruct. ENCAPSULAMIENTO Este es un concepto nuevo en PHP5, el encapsulamiento permite el uso de variables y mtodos internos a un objeto que no pueden ser accedidos internamente, de esta manera existen tres tipos de objetos: public - Son accesibles desde todo el cdigo. protected - Son accesibles desde la clase actual y las clases derivadas. private - Son accesibles desde la clase actual Vamos a ver el ejemplo de antes pero con atributos protegidos:

000 001 002 003 004 005 006 007 008 009 010 011 012

<? class Imagen { protected $src; // Estos sn los atributos private $border; // de los objetos asociados // Esta funcion es el constructor function __construct($src,$border) { $this->src=$src; $this->border=$border; } } // Creamos un objeto imagen $logo = new Imagen("logo.gif",3); ?> Maximizar Seleccionar PHP

Image GD, es una biblioteca de funciones para la creacin y modificacin al vuelo de imgenes muy potente, que nos permite hacer verdaderas maravillas como creacin de grficas de quesito en 3D, cambio de tamao de imgenes y muchas mas aplicaciones todas ellas muy interesantes. Esta biblioteca, tiene una versin para PHP que podremos instalar fcilmente en nuestro servidor si tenemos permisos de administrador, y que viene instalada en la mayora de servidores linux del mercado. La versin para PHP biblioteca contiene una gran cantidad de funciones para el dibujo y el tratamiento de imgenes que iremos viendo en futuros artculos, y que nos permiten realizar excelentes reportes visuales de nuestros datos, como los de los siguientes ejemplos: Grfica de lneas

Y estos son los cambios principales de PHP5, adems de incorporar un constructor de copia 000 __clone Maximizar y algunas otras opciones. IMAGEN GD, DESCRIPCIN Y EJEMPLOS A menudo, cuando estamos programando una aplicacin, contamos con una gran cantidad de datos interesantes para el usuario pero que no podemos mostrar en forma de texto debido a su cantidad o complejidad, en estos casos, es cuando nos vemos obligados a generar grficas al vuelo para mostrar los datos de forma clara. Las aplicaciones en PHP, no son una excepcin, y a menudo necesitamos mostrar los datos en forma de grfica, y eso significa crear una imagen dinmicamente.

Seleccionar

Grfica de quesitos en 3 dimensiones (artculo)

GRFICAS CIRCULARES EN 3D Si disponemos de PHP con GD, podremos disfrutar de la creacin al vuelo de imgenes, esta poderosa herramienta, nos permite entre muchas otras cosas la creacin de todo tipo de grficas, de todas ellas, las ms vistosas son las grficas de quesitos en 3D que vamos a ver cmo podemos generar. Para crear una grfica de quesitos, usaremos la funcin imagefilledarc, que nos crear un quesito del color que nosotros le indiquemos, veamos un ejemplo:
000 001 002 003 004 005 006 007 008 009 010 011 012 013 014 <?php // Creamos la imagen $im = imagecreate(200,200); // Definimos un color para el quesito $fondo = imagecolorallocate ($im, 255,255,255); $rojo = imagecolorallocate ($im, 255,0,0); // Dibujamos el quesito imagefilledarc ($im, 100, 100, 200, 175, 0, 45, $rojo, IMG_ARC_PIE); // Enviamos la imagen header("Content-type: image/png"); imagepng($im); ?> Maximizar Seleccionar PHP

anguloF - Angulo final del ngulo dibujado color - Color del arco dibujado estilo - Usaremos IMG_ARC_PIE Ahora, vamos a darle un efecto de sombreado al mismo arco que acabamos de crear, creando unos arcos ms oscuros debajo suyo:
000 001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 <?php // Creamos la imagen $im = imagecreate(200,200); // Definimos un color para el quesito $fondo = imagecolorallocate ($im, 255,255,255); $rojo = imagecolorallocate ($im, 255,0,0); $rojo_oscuro = imagecolorallocate ($im, 150,0,0); // Dibujamos el efecto sombra 3D for ($i = 0; $i < 10; $i ++) imagefilledarc ($im, 100, 100+(10-$i), 200, 175, 0, 45, $rojo_oscuro, IMG_ARC_PIE); // Dibujamos el quesito imagefilledarc ($im, 100, 100, 200, 175, 0, 45, $rojo, IMG_ARC_PIE); // Enviamos la imagen header("Content-type: image/png"); imagepng($im); ?> Maximizar Seleccionar PHP

Veamos al detalle lo que hace la funcin imagefilledarc, esta funcin crea un arco de color en la imagen, y sus parmetros son: Imagen - Variable con el recurso imagen cX - Coordenada X del centro del crculo cY - Coordenada Y del centro del crculo X - Tamao horizontal del crculo Y - Tamao vertical del crculo anguloI - Angulo inicial del arco dibujado en grados

Y este ser el resultado obtenido:

Ahora vamos a hacer el mismo ejemplo pero con unos cuantos quesitos, de manera que habremos generado nuestra primera grfica de quesitos completa:
000 001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 <?php // Creamos la imagen $im = imagecreate(200,200); // Definimos un color para el quesito $fondo = imagecolorallocate ($im, 255,255,255); $rojo = imagecolorallocate ($im, 255,0,0); $rojo_oscuro = imagecolorallocate ($im, 150,0,0); $verde = imagecolorallocate ($im, 0, 255,0); $verde_oscuro = imagecolorallocate ($im, 0, 150,0); $azul = imagecolorallocate ($im, 0, 0, 255); $azul_oscuro = imagecolorallocate ($im, 0, 0, 150); // Dibujamos el efecto sombra 3D for ($i = 0; $i < 10; $i ++){ imagefilledarc ($im, 100, 100+(10-$i), 200, 175, 0, 45, $rojo_oscuro, IMG_ARC_PIE); imagefilledarc ($im, 100, 100+(10-$i), 200, 175, 45, 145, $verde_oscuro, IMG_ARC_PIE); imagefilledarc ($im, 100, 100+(10-$i), 200, 175, 145, 360, $azul_oscuro, IMG_ARC_PIE); } // Dibujamos el quesito imagefilledarc ($im, 100, 100, 200, 175, 0, 45, $rojo, IMG_ARC_PIE); imagefilledarc ($im, 100, 100, 200, 175, 45, 145, $verde, IMG_ARC_PIE); imagefilledarc ($im, 100, 100, 200, 175, 145, 360, $azul, IMG_ARC_PIE); // Enviamos la imagen header("Content-type: image/png"); imagepng($im); ?> Maximizar Seleccionar PHP

CREACIN DE UNA IMAGEN CON GD El primer paso para empezar a trabajar con grficos y image GD, es la creacin de una imagen, que puede ser en blanco (para hacer una grfica, un dibujo...) o bien a partir de una imagen existente (para editarla, redimensionarla...). Creacin de una imagen en blanco Para crear una imagen en blanco y poder dibujar sobre ella, usaremos la funcin imagecreate, a la que le indicaremos el tamao de la imagen que queremos crear, la funcin devolver un identificador de la imagen que, en el ejemplo, almacenamos en la variable $im. El siguiente paso es crear un color, que al ser el primero creado, ser usado como color de fondo. Para crear colores, usamos la funcin imagecolorallocate, a la que le pasamos el id de la imagen y los valores de rojo, verde y azul (en este orden) 000 001 002 003 004 005 006 007 008 009 010 <?php $im = @imagecreate(100, 100) or die("Error creando la imagen"); $fondo = imagecolorallocate($im, 255, 255, 255); // blanco // Aqui podemos trabajar con la imagen header("Content-type: image/png"); imagepng($im); imagedestroy($im); ?> Maximizar Seleccionar PHP

Y este es nuestro resultado, una magnfica grfica con quesitos: Ahora solo nos faltar un poco de imaginacin para recoger los valores de la base de datos, o de donde nos sea ms conveniente.

Finalmente, como vemos en el ejemplo, enviamos al navegador los

encabezados de PNG (header), enviamos la imagen al navegador (imagepng) y liberamos la memoria (imagedestroy). CARGAR UNA IMAGEN EXISTENTE La carga de una imagen existente es ms o menos cmo el caso anterior, pero en lugar de usar imagecreate, usaremos una funcin de las de la siguiente lista: imagecreatefromgif - Crea una imagen a partir de una imagen gif existente imagecreatefromjpeg - Crea una imagen a partir de una imagen jpeg existente imagecreatefromjpeg - Crea una imagen a partir de una imagen png existente imagecreatefromjpeg - Crea una imagen a partir de una imagen bmp para wap existente imagecreatefromgd2, imagecreatefromgd2part, imagecreatefromgd, imagecreatefromstring, imagecreatefromxbm, Imagecreatefromxpm Que dependiendo de la versin de GD, estarn o no disponibles, para saberlo, haremos: 000 <?php 001 var_dump(gd_info()); 002 ?> Maximizar Seleccionar PHP

000 <?php 001 $im = imagecreatefrompng("image.png"); 002 header("Content-type: image/png"); 003 imagepng($im); 004 imagedestroy($im); 005 ?> Maximizar Seleccionar PHP

USO DEL COLOR CON GD


La utilizacin de colores en GD es algo mas compleja que en HTML aunque ambos utilizan el modelo RGB.

CREAR UN COLOR Para usar un determinado color con GD en PHP, primero tenemos que reservar ese color en la imagen. Para reservarlo usaremos la funcin imagecolorallocate y almacenaremos su valor de retorno en una variable para pasrsela despus como color a las funciones de dibujo, coloreado... Nota: El primer color creado con imagecolorallocate ser utilizado como color de fondo de la imagen. Los parmetros que pasaremos a la funcin sern la variable del objeto image y los valores de la intensidad en 24 bits (de 0 a 255 ) de los colores rojo, verde y azul en este orden, veamos un ejemplo:

Veamos un ejemplo de carga de una archivo png:

000 <?php 001 $color = imagecolorallocate($im, 255, 0, 0); 002 // 100% rojo, 0% verde, 0% azul 003 ?> Maximizar Seleccionar PHP OBTENCIN DE UN COLOR DE LA IMAGEN Otra opcin para crear un color consiste en obtener el color de un punto determinado de la imagen usando imagecolorat con el objeto imagen y las coordenadas del punto: 000 001 002 003 <?php $imagen = ImageCreateFromPng("manzana.png"); $color = ImageColorAt($imagen, 100, 200); // x: 100, y: 200 ?> Maximizar Seleccionar PHP

DIBUJO DE LNEAS CON GD En este tutorial de 3 pginas veremos cmo podemos dibujar todo tipo de lneas (normales, gruesas, discontinuas, punteadas... ) usando la librera GD de PHP. DIBUJO DE LNEAS BSICAS Para dibujar una linea contnua de grosor 1 en una imagen creada con GD, usaremos la funcin imageline, que funciona de la siguiente manera: 000 imageline($im, $ax, $ay, $bx, $by, $col); Maximizar Seleccionar CSS Donde los parmetros que pasamos a la funcin sern: $im - Es el identificado de la imagen que hemos creado cmo se explica en este artculo $ax - Es la coordenada horizontal del primer punto de la lnea $ay - Es la coordenada vertical del primer punto de la lnea $bx - Es la coordenada horizontal del segundo punto de la linea $by - Es la coordenada vertical del segundo punto de la lnea $col - Es el color de la lnea como se explica tambin en este artculo Vamos a ver un ejemplo de lnea:
000 001 002 003 004 005 006 007 008 009 010 011 012 <?php $im = @imagecreate(100, 100) or die("Error creando la imagen"); $fondo = imagecolorallocate($im, 255, 255, 255); // blanco $linea = imagecolorallocate($im, 0, 0, 0); // negro // Dibujamos la lnea imageline($im, 10, 10, 90, 90, $linea); header("Content-type: image/png"); imagepng($im); imagedestroy($im); ?> Maximizar Seleccionar PHP

UTILIZACIN DEL COLOR Una vez creado el color con cualquier de los dos mtodos anteriores, y almacenado su valor ( variable imagen en los ejemplos ), podemos utilizarlo en las funciones que permiten colores pasando la variable, vamos a seguir los ejemplos anteriores: 000 001 002 003 <?php imagefill ( $imagen, 1, 1, $color ); // Usamos el cubo de pintura con el color creado en x=1 y=1 ?> Maximizar Seleccionar PHP

Y aqu tenemos su resultado:

Y aqu tenemos su resultado:

DIBUJO DE LNEAS GRUESAS Para hacer una lnea de grosor distinto de 1, antes de dibujarla, usaremos la funcin imagesetthickness, que funciona de la siguiente manera: 000 imagesetthickness($im, $grosor); Maximizar Seleccionar Donde los parmetros que pasamos a la funcin sern: 000 [b]$im[/b] - Es el identificado de la imagen 001 [b]$grosor[/b] - Es el grosor en pxels de la lnea Maximizar Seleccionar Vamos a ver un ejemplo de lnea de 10 pxels:
000 001 002 003 004 005 006 007 008 009 010 011 012 013 <?php $im = @imagecreate(100, 100) or die("Error creando la imagen"); $fondo = imagecolorallocate($im, 255, 255, 255); // blanco $linea = imagecolorallocate($im, 0, 0, 0); // negro // Cambiamos el grosor a 10 imagesetthickness($im, 10); imageline($im, 10, 10, 90, 90, $linea); header("Content-type: image/png"); imagepng($im); imagedestroy($im); ?> Maximizar Seleccionar PHP

Finalmente, para volver a dibujar un imagesetthickness con grosor DIBUJO DE RECTNGULOS CON GD

lneas

normales,

haremos

Con GD, podemos dibujar rectngulos y rectngulos coloreados fcilmente utilizando las funciones que explicaremos en este artculo. DIBUJO DE RECTNGULOS Para dibujar un rectngulo utilizaremos la funcin imagerectangle, pasndole las coordenadas del rectngulo y el color de la siguiente manera: 000 imagerectangle($im, $ax, $ay, $bx, $by, $col); Maximizar Seleccionar CSS Donde los parmetros que pasamos a la funcin sern: $im - Es el identificado de la imagen que hemos creado cmo se explica en este artculo $ax - Es la coordenada horizontal del primer punto del rectngulo $ay - Es la coordenada vertical del primer punto del rectngulo $bx - Es la coordenada horizontal del segundo punto del rectngulo $by - Es la coordenada vertical del segundo punto del rectngulo $col - Es el color de la lnea como se explica tambin en este artculo

De esta manera dibujaremos las cuatro lneas del rectngulo, donde el primer punto es el borde superior izquierdo y el segundo el borde inferior derecho. A estas lneas tambin les podremos aplicar grosores y estilos de lnea. DIBUJO DE RECTNGULOS COLOREADOS Otro tipo de rectngulo que podemos dibujar son los rectngulos coloreados (reas de un color) que haremos con la funcin imagefilledrectangle, que funciona exactamente igual que la anterior pero genera un resultado distinto. DIBUJO DE ARCOS Y ELIPSES CON GD Una elipse es una seccin cnica, una especie de huevo, y un caso particular de elipse es el crculo, por otra parte, un arco es una curva entre dos puntos (elipse no completa) El dibujo de elipses y arcos con GD, es muy parecido al dibujo de rectngulos, salvo que en lugar de indicar las esquinas del rectngulo, debemos indicar el centro, la altura, el ancho y en el caso de los arcos, el ngulo inicial y final. DIBUJO DE ELIPSES Y CRCULOS Usando la funcin imageellipse o imagefilledellipse (para rellenarla de color), podemos generar una elipse de la siguiente manera: 000 imageellipse ($im, $cx, $cy, $an, $al, $col); Maximizar Seleccionar CSS Donde cada variable pasada a la funcin significa: $im - Es el identificado de la imagen que hemos creado cmo se explica en este artculo $cx - Coordenada horizontal del centro de la elipse $cy - Coordenada vertical del centro de la elipse $an - Ancho de la elipse $al - Altura de la elipse

$col - Es el color de la linea (o relleno) como se explica tambin en este artculo Veamos un ejemplo de cmo generar un caso particular de elipse, un crculo de 100 x 100 pixels (centrado en 50,50): 000 001 002 003 004 005 006 007 008 009 010 011 012 <?php $im = @imagecreate(101, 101) or die("Error creando la imagen"); $fondo = imagecolorallocate($im, 255, 255, 255); // blanco $linea = imagecolorallocate($im, 0, 0, 0); // negro // Dibujamos la elipse imageellipse($im, 50, 50, 100, 100, $linea); header("Content-type: image/png"); imagepng($im); imagedestroy($im); ?> Maximizar Seleccionar PHP

Y este ser el resultado (que sera relleno de color negro de haber usado imagefilledellipse):

DIBUJO DE ARCOS Para dibujar un arco, usaremos la funcin imagearc o imagefilledarc, que tiene la misma sintaxis que la funcin anterior salvo que aade el ngulo inicial y el final:

000 imageellipse ($im, $cx, $cy, $an, $al, $in, $fi, $col); Maximizar Seleccionar CSS Donde cada variable pasada a la funcin significa: $im - Es el identificado de la imagen que hemos creado cmo se explica en este artculo $cx - Coordenada horizontal del centro del arco $cy - Coordenada vertical del centro del arco $an - Ancho del arco $al - Altura del arco $in - ngulo inicial del arco $fi - ngulo final del arco $col - Es el color de la linea (o relleno) como se explica tambin en este artculo Veamos un ejemplo de cmo generar un arco: 000 <?php 001 $im = @imagecreate(101, 101) 002 or die("Error creando la imagen"); 003 $fondo = imagecolorallocate($im, 255, 255, 255); // blanco 004 $linea = imagecolorallocate($im, 0, 0, 0); // negro 005 006 // Dibujamos el arco 007 imagearc($im, 50, 50, 100, 100, 90, 180, $linea); 008 009 header("Content-type: image/png"); 010 imagepng($im); 011 imagedestroy($im); 012 ?> Maximizar Seleccionar PHP Y este ser el resultado (que sera relleno de color negro de haber usado imagefilledarc):