You are on page 1of 50

CURSO PHP

Inicindose con php

Hernndez Velazco Boris Alberth Yoel Agosto 2009

Inicindose con php

CURSO PHP
Inicindose con php

Instalacin de la base de datos: MySQL Instalacin del servidor Web: Apache Instalacin de PHP Html (lo basico). El lenguaje PHP Extensin de los archivos Delimitadores Fin de lnea Comentarios Variables Tipos de datos Constantes Maysculas y minsculas Operadores Estructuras de control Evaluaciones a cierto o falso Funciones Cadenas de caracteres y expresiones regulares Conjunto de datos del tipo Array Paso de informacin entre formularios Ficheros y almacenamiento de datos Sesiones y cookies. Acceso a la base de datos (conocer las funciones. bsico).

Inicindose con php

Esquema de peticin web usando php

Inicindose con php

INSTALACIN DEL SERVDOR WEB APACHE


Lo primero que se debe hacer es, descargar el instalador de la web oficial de apache http://www.apache.org/, para este curso se usara la versin siguiente: apache_2.2.11-win32-x86-no_ssl
Despus de descargar el instalador procedemos a hacer uso del mismo tal como se observa en las siguientes imgenes. Esta es la pantalla de bienvenida procedemos a dar click en el botn next.

Aparecer la siguiente ventana indicando si acepta o no los trminos de la licencia, como es lgico la aceptamos.

Despus de aceptar aparece la siguiente ventana con informacin del servidor web apache.

Inicindose con php

Ahora comienza lo interesante, debemos decirle al instalador cual es la direccin que va a tener nuestro servidor, para ello le indicamos en el Network Domain y en el Server Name de la siguiente ventana, que ser 127.0.0.1 o en su defecto localhost, ya que esta instalacin la haremos en local.

Nota: el valor 127.0.0.1 ser suplantado por el dominio y el nombre del servidor siempre y cuando poseamos uno. Ejemplo http://www.cursos.php

Procedemos a realizar la instalacin, tomando en cuenta que vamos a realizar la tpica, porque? Porque es la que se adapta al presente curso.

Inicindose con php

En las siguientes ventanas, indicaremos la carpeta o el destino donde residirn los archivos que permiten el funcionamiento del servidor web apache. En la primera imagen el instalador nos indica una ruta por defecto, esta ruta podemos dejarla as o cambiarla, como se observa en la segunda imagen, y cuya ruta es C:\servidorweb\ a mi parecer es mas ordenado y no tenemos que estar navegando por carpetas para hacer algn cambio. Despus de haber seleccionado la carpeta nos aparece una tercera ventana, que como pueden ver es la de la tercera imagen indicndonos la Destination Folder o carpeta de destino la cual es servidorweb. Le damos click al botn next

Inicindose con php

Y por fin comenzamos a instalar el servidor, bueno comienza a instalarse el servidor web, como puede apreciarse en las imgenes a la derecha.

Fcil verdad!

Inicindose con php

INSTALACIN DE PHP
Ahora le toca el turno a php, para este curso usaremos php5, para descargarlo ingresamos a la web oficial de php http://www.php.net y descargamos el instalador para windows el cual es php-5.2.10-win32-VC6-x86

Como puede observarse en las imgenes, las primeras tres ventanas, indican la versin de php que se instalara, el acuerdo de licencia el cual debe aceptarse para proceder con la instalacin, y la solicitud de cual ser la carpeta destino para la instalacin de php. Simple verdad, al igual que hicimos en la instalacin de apache procedemos a darle click en next a las dos primeras ventanas, exceptuando la tercera en la que debemos seleccionar otra carpeta para instalar php y no la que indica por defecto el instalador.

Inicindose con php

En las siguientes imgenes se puede observar la informacin que le suministramos al instalador de php, primero creamos una carpeta en C:\ con el nombre PHP (era lgico), en la cual se instalara php, despus aparece otra ventana mostrando la ruta que hemos seleccionado para instalar php. La ruta seleccionada es a conveniencia y gusto de cada quien, en este caso se hizo as porque a mi me pareci bien al igual que con la instalacin de apache. La tercera imagen muestra una ventana que nos pide que seleccionemos el tipo de servidor en el que va a correr php como modulo, como se puede observar seleccionamos el tercer circulo bajando. Despus de seleccionar el servidor aparece una ventana solicitndonos la ubiacion del archivo de configuracin de apache, el cual es httpd.conf.

Inicindose con php

Bueno el archivo httpd.conf se encuentra en la carpeta conf, la cual esta dentro de la carpeta donde hicimos la instalacin de apache, en este caso servidorweb, osea que tenemos que buscarla y seleccionarla tal como se muestra en la primera imagen. Despus de ubicar la carpeta conf aparece una ventana como la segunda imagen, en la cual debe aparecer la ruta que seleccionamos como ubicacin del archivo de configuracin de apache. En la tercera imagen se observa que comienza la seleccin de opciones y alternativas para nuestra instalacin de php5, bueno aqu seleccionamos todas y a continuacin aparece una ventana indicando que se puede proceder con la instalacin.

Inicindose con php

HTML
El HTML es un lenguaje descriptivo que se basa en etiquetas, este se encuentra o se interpreta del lado del cliente por medio de los navegadores y permite darle forma a las pginas web, adems funciona muy bien con php el cual puede ser embebido en HTML para que las paginas web sean dinmicas. Una etiqueta presenta la estructura siguiente <ETIQUETA></ETIQUETA> donde se esta indicando una apertura y un cierre, el cierre de la etiqueta va precedido del / , asi mismo una etiqueta esta compuesta de un conjunto de atributos, ejemplo el atributo title de la etiqueta <img> el cual indica un titulo. Un documento en HTML puede ser reconocido por las siguientes extensiones .html o tambin .htm, la estructura de un documento HTML es la siguiente:
Hola a todos <html> <head> <title>Mi primera pgina WEB</title> </head> <body> Hola a todos <br> </body> </html>

Dentro del bloque formado por la etiqueta <body></body> se encontrara todo el contenido que el usuario podr ver en su navegador. Algunas etiquetas de HTML necesarias y que usaremos en el curso: <html> indica la definicin del documento <head> cabecera es donde se define el titulo del documento y se incluyen algunas variantes como cdigo javascript. <body> que define el cuerpo del documento. <a></a> permite la creacin de enlaces o vnculos, y anclas. <img> permite visualizar una imagen. <form> permite crear un formulario para solicitar datos al usuario. <input> permite recibir informacin y enviarla segn sean sus atributos. <table> permite crear tablas para maquetar alguna salida de informacin, ejemplo un reporte <select> permite crear una lista desplegable. Aparte de las etiquetas mencionadas anteriormente, HTML cuenta con un conjunto de etiquetas ampliamente usadas para el formato de texto y maquetacin de una pagina web, pero que requieren de un curso aparte para su estudio.
10

Inicindose con php

EL LENGUAJE PHP
PHP, acrnimo de "PHP: Hypertext Preprocessor", es un lenguaje "Open Source" interpretado de alto nivel, especialmente pensado para desarrollos web y el cual puede ser embebido en pginas HTML. La mayora de su sintaxis es similar a C, Java y Perl. Es usado principalmente en interpretacin del lado del servidor (server-side scripting) pero actualmente puede ser utilizado desde una interfaz de lnea de comandos o en la creacin de otros tipos de programas incluyendo aplicaciones con interfaz grfica usando las bibliotecas Qt o GTK+. Fue creado originalmente por Rasmus Lerdorf en 1994; sin embargo la implementacin principal de PHP es producida ahora por The PHP Group y sirve como el estndar de facto para PHP al no haber una especificacin formal. Publicado bajo la PHP License, la Free Software Foundation considera esta licencia como software libre.

VISIN GENERAL
PHP es un lenguaje interpretado de propsito general ampliamente usado y que est diseado especialmente para desarrollo web y puede ser incrustado dentro de cdigo HTML. Generalmente se ejecuta en un servidor web, tomando el cdigo en PHP como su entrada y creando pginas web como salida. Puede ser desplegado en la mayora de los servidores web y en casi todos los sistemas operativos y plataformas sin costo alguno. El gran parecido que posee PHP con los lenguajes ms comunes de programacin estructurada, como C y Perl, permiten a la mayora de los programadores crear aplicaciones complejas con una curva de aprendizaje muy corta. Tambin les permite involucrarse con aplicaciones de contenido dinmico sin tener que aprender todo un nuevo grupo de funciones. Aunque todo en su diseo est orientado a facilitar la creacin de pgina web, es posible crear aplicaciones con una interfaz grfica para el usuario, utilizando la extensin PHP-Qt o PHP-GTK. Tambin puede ser usado desde la lnea de rdenes, de la misma manera como Perl o Python pueden hacerlo, a esta versin de PHP se la llama PHP CLI (Command Line Interface). Permite la conexin a diferentes tipos de servidores de bases de datos tales como MySQL, Postgres, Oracle, ODBC, DB2, Microsoft SQL Server, Firebird y SQLite. PHP tambin tiene la capacidad de ser ejecutado en la mayora de los sistemas operativos, tales como UNIX (y de ese tipo, como Linux o Mac OS X)

11

Inicindose con php

y Windows, y puede interactuar con los servidores de web ms populares ya que existe en versin CGI, mdulo para Apache, e ISAPI.

HISTORIA
Fue originalmente diseado en Perl, en base a la escritura de un grupo de CGI binarios escritos en el lenguaje C por el programador danscanadiense Rasmus Lerdorf en el ao 1994 para mostrar su currculum vitae y guardar ciertos datos, como la cantidad de trfico que su pgina web reciba. El 8 de junio de 1995 fue publicado "Personal Home Page Tools" despus de que Lerdorf lo combinara con su propio Form Interpreter para crear PHP/FI.

PHP 3
Dos programadores israeles del Technion, Zeev Suraski y Andi Gutmans, reescribieron el analizador sintctico (parser en ingls) en el ao 1997 y crearon la base del PHP3, cambiando el nombre del lenguaje a la forma actual. Inmediatamente comenzaron experimentaciones pblicas de PHP3 y fue publicado oficialmente en junio del 1998. Para 1999, Suraski y Gutmans reescribieron el cdigo de PHP, produciendo lo que hoy se conoce como motor Zend. Tambin fundaron Zend Technologies en Ramat Gan, Israel.

PHP 4
En mayo de 2000 PHP 4 fue lanzado bajo el poder del motor Zend Engine 1.0. El da 13 de julio de 2007 se anunci la suspensin del soporte y desarrollo de la versin 4 de PHP,[1] a pesar de lo anunciado se ha liberado una nueva versin con mejoras de seguridad,la 4.4.8 publicada el 13 de enero del 2008 y posteriormente la versin 4.4.9 publicada el 7 de agosto de 2008.[2] Segn esta noticia [1] se dar soporte a fallos crticos hasta el 2008-08-08...

PHP 5
El 13 de julio de 2004, fue lanzado PHP 5, utilizando el motor Zend Engine 2.0 (o Zend Engine 2). La versin ms reciente de PHP es la 5.3.0 (30 de junio de 2009), que incluye todas las ventajas que provee el nuevo Zend Engine 2 como: Mejor soporte para la Programacin Orientada a Objetos, que en

versiones anteriores era extremadamente rudimentario, con PHP Data Objects. Mejoras de rendimiento. Mejor soporte para MySQL con extensin completamente reescrita. Mejor soporte a XML ( XPath, DOM, etc. ). Soporte nativo para SQLite. Soporte integrado para SOAP.
12

Inicindose con php

Iteradores de datos. Manejo de excepciones.

PHP 6
Est previsto el lanzamiento en breve de la rama 6 de PHP. Cuando se lance esta nueva versin quedarn solo dos ramas activas en desarrollo (PHP 5 y 6), pues se abandon el desarrollo y soporte de PHP 4 el 13 de julio de 2007. Las diferencias que encontraremos frente a PHP 5.* son: soportar Unicode; limpieza de funcionalidades obsoletas como register_globals, safe_mode, etc.; PECL; mejoras en orientacin a objetos; etc.

CARACTERSTICAS DE PHP
Ventajas
Es un lenguaje multiplataforma. Completamente orientado a la web. Capacidad de conexin con la mayora de los motores de base de datos que se utilizan en la actualidad, destaca su conectividad con MySQL y PostgreSQL. Capacidad de expandir su potencial utilizando la enorme cantidad de mdulos (llamados ext's o extensiones). Posee una amplia documentacin en su pgina oficial ([2]), entre la cual se destaca que todas las funciones del sistema estn explicadas y ejemplificadas en un nico archivo de ayuda. Es libre, por lo que se presenta como una alternativa de fcil acceso para todos. Permite las tcnicas de Programacin Orientada a Objetos. Biblioteca nativa de funciones sumamente amplia e incluida. No requiere definicin de tipos de variables aunque sus variables se pueden evaluar tambin por el tipo que estn manejando en tiempo de ejecucin. Tiene manejo de excepciones (desde PHP5). Si bien PHP no obliga a quien lo usa a seguir una determinada metodologa a la hora de programar (muchos otros lenguajes tampoco lo hacen), aun estando dirigido a alguna en particular, el programador puede aplicar en su trabajo cualquier tcnica de programacin y/o desarrollo que le permita escribir cdigo ordenado, estructurado y manejable. Un ejemplo de esto son los desarrollos que en PHP se han hecho del patrn de diseo Modelo Vista Controlador (o MVC), que permiten separar el tratamiento y acceso a los datos, la lgica de control y la interfaz

13

Inicindose con php

de usuario en tres componentes independientes (ver ms abajo Frameworks en PHP).

Desventajas
La ofuscacin de cdigo es la nica forma de ocultar los fuentes.

MYSQL
MySQL es un sistema de gestin de base de datos relacional, multihilo y multiusuario con ms de seis millones de instalaciones.[1] MySQL AB desde enero de 2008 una subsidiaria de Sun Microsystems y sta a su vez de Oracle Corporation desde abril de 2009 desarrolla MySQL como software libre en un esquema de licenciamiento dual. Por un lado se ofrece bajo la GNU GPL para cualquier uso compatible con esta licencia, pero para aquellas empresas que quieran incorporarlo en productos privativos deben comprar a la empresa una licencia especfica que les permita este uso. Est desarrollado en su mayor parte en ANSI C. Al contrario de proyectos como Apache, donde el software es desarrollado por una comunidad pblica y el copyright del cdigo est en poder del autor individual, MySQL es propietario y est patrocinado por una empresa privada, que posee el copyright de la mayor parte del cdigo. Esto es lo que posibilita el esquema de licenciamiento anteriormente mencionado. Adems de la venta de licencias privativas, la compaa ofrece soporte y servicios. Para sus operaciones contratan trabajadores alrededor del mundo que colaboran va Internet. MySQL AB fue fundado por David Axmark, Allan Larsson y Michael Widenius.

HISTORIA DEL PROYECTO


SQL (Lenguaje de Consulta Estructurado) fue comercializado por primera vez en 1981 por IBM, el cual fue presentado a ANSI y desde entonces ha sido considerado como un estndar para las bases de datos relacionales. Desde 1986, el estndar SQL ha aparecido en diferentes versiones como por ejemplo: SQL:92, SQL:99, SQL:2003. MySQL es una idea originaria de la empresa opensource MySQL AB establecida inicialmente en Suecia en 1995 y cuyos fundadores son David Axmark, Allan Larsson, y Michael "Monty" Widenius. El objetivo que persigue esta empresa consiste en que MySQL cumpla el estndar SQL, pero sin sacrificar velocidad, fiabilidad o usabilidad. Michael Widenius en la dcada de los 90 trat de usar mSQL para conectar las tablas usando rutinas de bajo nivel ISAM, sin embargo, mSQL no era rpido y flexible para sus necesidades. Esto lo llev a crear una API SQL denominada MySQL para bases de datos muy similar a la de mSQL pero ms portable.

14

Inicindose con php

La procedencia del nombre de MySQL no es clara. Desde hace ms de 10 aos, las herramientas han mantenido el prefijo My. Tambin, se cree que tiene relacin con el nombre de la hija del cofundador Monty Widenius quien se llama My. Por otro lado, el nombre del delfn de MySQL es Sakila y fue seleccionado por los fundadores de MySQL AB en el concurso Name the Dolphin. Este nombre fue enviado por Ambrose Twebaze, un desarrollador de Open source Africano, derivado del idioma SiSwate, el idioma local de Swazilandia y corresponde al nombre de una ciudad en Arusha, Tanzania, cerca de Uganda la ciudad origen de Ambrose.

LENGUAJES DE PROGRAMACIN
Existen varias APIs que permiten, a aplicaciones escritas en diversos lenguajes de programacin, acceder a las bases de datos MySQL, incluyendo C, C++, C#, Pascal, Delphi (via dbExpress), Eiffel, Smalltalk, Java (con una implementacin nativa del driver de Java), Lisp, Perl, PHP, Python, Ruby,Gambas, REALbasic (Mac), (x)Harbour (Eagle1), FreeBASIC, y Tcl; cada uno de estos utiliza una API especfica. Tambin existe un interfaz ODBC, llamado MyODBC que permite a cualquier lenguaje de programacin que soporte ODBC comunicarse con las bases de datos MySQL. Tambin se puede acceder desde el sistema SAP, lenguaje ABAP.

APLICACIONES
MySQL es muy utilizado en aplicaciones web, como Drupal o phpBB, en plataformas (Linux/Windows-Apache-MySQL-PHP/Perl/Python), y por herramientas de seguimiento de errores como Bugzilla. Su popularidad como aplicacin web est muy ligada a PHP, que a menudo aparece en combinacin con MySQL. MySQL es una base de datos muy rpida en la lectura cuando utiliza el motor no transaccional MyISAM, pero puede provocar problemas de integridad en entornos de alta concurrencia en la modificacin. En aplicaciones web hay baja concurrencia en la modificacin de datos y en cambio el entorno es intensivo en lectura de datos, lo que hace a MySQL ideal para este tipo de aplicaciones.

EXTENSIN DE LOS ARCHIVOS


Las extensiones que indican al servidor HTTP que el archivo contiene cdigo PHP que debe ser procesado son: php3 Indica cdigo PHP 3.x. php4 Indica cdigo PHP 4.x. php5 Indica cdigo PHP 5.x. php Indica cdigo PHP.

15

Inicindose con php

phtml Actualmente en desuso.

Normalmente solo se usa la extensin .php y el servidor la interpreta segn la configuracin que posee.

DELIMITADORES
Como ya se indico al comienzo php acta o trabaja embebido en el cdigo html, para que funcione de esta forma es necesario indicar donde comienza y donde termina el cdigo php, es por ello que se usan los delimitadores, los cuales son: <?php. ?> <?.................. ?> <script lenguage=php></script> <% %>

FIN DE LINEA
El fin de lnea en el cdigo php es muy importante, porque es donde se cierra o finaliza una instruccin. El delimitador o indicador de fin de lnea es el punto y coma ;. Si este no es indicado el interprete arrojara un error en tiempo de ejecucin.

COMENTARIOS
Los comentarios se usan para agregar informacin a nuestro cdigo, para indicar o describir alguna rutina en fin el uso es muy amplio y variado, todo depender del programador y sus necesidades. En php los comentarios se indican de la siguiente forma: /* */ todo lo que este contenido en el bloque formado por los caracteres anteriores ser tomado como un comentario. // ser un comentario lo que este hasta el final de la lnea y este precedido por el doble /
// este es un comentario. solo sirve para una linea /* as tambin se comentan bloques, pueden aparecer mas de una linea */

16

Inicindose con php

VARIABLES
Las variables son las zonas de memoria reservada, y pueden ser tratadas de diferentes formas dependiendo del valor que guarden. En php las variables no son declaradas como en los dems lenguajes de programacin, estas solo se comienzan a usar y de ahi en adelante seran declaradas, van precedidas por el signo del dolar $, no pueden comenzar por un nmero, una variable es diferente si esta en mayuscula y minuscula a la vez. Los tipos de variables que se pueden usar en php son variados, no es necesario indicar el tipo como en C, en php una variable asume su tipo segn la informacin que le es asignada. Se puede destacar los siguientes tipos: Entero (integer): Almacena nmeros sin decimales. Se puede utilizar la notacin decimal (83), octal (0123) o hexadecimal (0x12). Coma Flotante (double): Nmeros con decimales. Carcter (string): Texto o informacin numrica escrita entre comillas dobles ("") o simples (''). Boolean: Slo tiene dos posibles valores: Verdadero o Falso. Nulo {NULL): Es un tipo especial que solo contiene un valor: NULL. Vectores (array): Colecciones de datos. Objetos (object): Conjunto de datos y funciones independientes.

ASIGNACIN DE VARIABLES
La asignacin es simplemente dar un valor a la variable. Esto se hace poniendo un smbolo = entre la variable y el dato que queremos asignar.

VARIABLES DE VARIABLES
Estn las variables variables, esto quiere decir que la informacin contenida en una variable puede ser otra variable, esto se hace de la siguiente forma:
<? $variable = 'nada'; $$variable = 3; echo $variable.' '.$$variable; /*la salida seria la siguiente:nada 3*/ /*tambin se les puede acceder de la siguiente forma:*/ echo $variable.' '.$nada; /*la salida seria la siguiente:nada 3*/ ?>

17

Inicindose con php

MBITO
El mbito de una variable hace referencia a dnde est disponible esa variable y dnde no, y depende del contexto en el que haya sido definida la variable: En el cuerpo de un archivo, las variables son GLOBALES al archivo y a cualquier cdigo que se haya incluido con los comandos include o require En una funcin, son LOCALES a esa funcin y no pueden ser accedidas desde fuera. Dentro de una clase, slo pueden ser accedidas a travs del operador -> sobre el nombre del objeto. Para acceder a las variables globales desde una funcin, hay que utilizar la palabra reservada global.
<?php $a = 1; $b = 2; function Sum() { global $a, $b; $b = $a + $b; } Sum(); echo $b; ?>

REFERENCIAS
En PHP se puede definir alias para las variables, es decir, tener dos (o ms) nombres distintos para un mismo dato. Se puede ver de forma similar a tener dos punteros en C haciendo referencia a la misma zona de memoria. Para realizar la referencia se usa el siguiente signo & el cual debe ir delante de la definicin de la variable. Par eliminar las referencias se usa la funcin unset().
<?php $a = 1; $b =&$a; echo "el valor de \$a es ".$a; echo "<br> el valor de \$b es ".$b; ?> Salida en el navegador seria: el valor de $a es 1DE PHP V ARIABLES el valor de $b es 1 ?>

Estas variables son creadas por el propio PHP.

18

Inicindose con php

Argv Array de argumentos pasados al script. Cuando el script se ejecuta desde la lnea de comandos, esto da un acceso, al estilo de C, a los parmetros pasados en lnea de comandos. Cuando se le llama mediante el mtodo GET, contendr la cadena de la peticin. Argc Contiene el nmero de parmetros de la lnea de comandos pasados al script (si se ejecuta desde lalnea de comandos). PHP_SELF El nombre del fichero que contiene el script que se esta ejecutando, relativo al directorio raz de los documentos. Si PHP se est ejecutando como intrprete de lnea de comandos, esta variable no est disponible. HTTP_COOKIE_VARS Un array asociativo de variables pasadas al script actual mediante cookies HTTP. HTTP_GET_VARS Un array asociativo de variables pasadas al script actual mediante el mtodo HTTP GET. HTTP_POST_VARS Un array asociativo de variables pasadas al script actual mediante el mtodo HTTP POST

FUNCIONES RELACIONADAS CON VARIABLES


isset(): Con esta funcin podemos averiguar si una variable existe dentro del programa. unset(): Libera la memoria ocupada por una variable, destruyendo su nombre y su contenido. gettype(): Con esta funcin se puede averiguar el tipo de dato almacenado en la variable. Puede devolver uno de los siguientes valores: integer double string array object class unknown type settype(): Convierte el tipo de la variable al especificado en la funcin. El tipo debe especificarse eligiendo uno de los siguientes: array, double, integer, object o string. Si la funcin no es capaz de convertir el tipo de la variable devuelve el valor false. empty(): Comprueba si una variable est vaca, no existe, o su valor es 0. Isinteger(), is_double(), is_string(): Estas funciones devuelven true si la variable pasada coincide con el tipo que indica la funcin. intval(), doublevalQ, strval(): Convierte el valor de una variable al tipo indicado en la funcin. Esta funcin no permite la conversin a tipos object o array.

19

Inicindose con php

TIPOS DE DATOS
En php los tipos de datos son los siguientes: Enteros (int, integer) Nmeros en punto flotante (float, double, real) Arrays (array) Cadenas de texto (string) Objetos (object)

ENTEROS
Corresponde a un numero entero sin decimales pudiendo ser negativo o el numero cero. El formato en el que pueden ser almacenados es octal, decimal y hexadecimal, anteponindole al nmero un cero en caso de ser octal un 0x en caso de ser hexadecimal, por defecto el numero toma como formato el decimal.

NMEROS EN PUNTO FLOTANTE:


Corresponden a un nmero que admite enteros y decimales y el rango de valores es mayor que el de los numeros enteros. Existen dos formas de representarlos, una es en notacion decimal y la otra en notacin cientfica

ARRAY O VECTORES:
Los arrays representan vectores unidimensionales o multidimensionales. Se definen y acceden como en C, mediante el nombre de la variable que los contiene e indicando el ndice (que comienza en el 0) entre corchetes. Los elementos de un mismo array pueden ser de tipos distintos

CADENAS DE TEXTO:
En PHP los strings tienen un manejo similar al utilizado en C o C++, estn predefinidos los siguientes caracteres especiales: \n Nueva lnea \r Salto de carro (carring return) \t Tabulacin \\ Barra invertida \$ Signo pesos \ Comillas doble Un string puede inicializarse usando comillas dobles o comillas simples. Cuando se utilizan comillas dobles el interprete de php parsea previamente el string, es decir que reemplaza los nombres de variables que encuentra en el string por el contenido de la variable. Cuando se usan comillas simples el string se imprime tal y como figura sin ser parseado.

20

Inicindose con php

Las cadenas en PHP se pueden definir de tres formas: Si se delimitan entre comillas dobles (), se expandir cualquier variable que haya dentro de la cadena. Adems, se pueden incluir ciertas secuencias de escape, al igual que en C. Si se delimitan entre comillas simples (), las variables no se expanden y adems las nicas secuencias de escape que se reconocen son \\ y \' (barra invertida y comillas simples.) Debido a estas limitaciones, este segundo mtodo es bastante ms rpido que el primero a la hora de manipular o imprimir cadenas, ya que el anlisis y proceso al que son sometidas las es menor. Utilizando la sintaxis here doc de Perl, cuya estructura es: Despus del operador <<< especificamos un delimitador que marcar el final del texto. Se debe tener cuidado al elegir este delimitador, ya si aparece en algn lugar del texto, podra acabar con un resultado incorrecto. Tras la lnea con el <<< y el delimitador, escribimos la cadena de texto, que puede expandirse por tantas lneas como queramos. Las variables dentro del texto se expanden y no hace falta escapar las comillas. Para finalizar la cadena, debe aparecer una lnea que contenga nicamente el delimitador.

OBJETOS (OBJECT)
Php no es un lenguaje orientado a objetos puro, pero presenta herramientas y el soporte para su trataminento, Las clases y objetos en PHP se definen y usan de forma similar a C++ o Java.
<?php class foo { function hacer_foo() { echo "Haciendo foo."; } } $bar = new foo; $bar->hacer_foo(); ?>

21

Inicindose con php

CONSTANTES:
Las constantes son tipos de datos que no varan en el desarrollo de un programa. En la vida real existen muchos tipos de constantes, el nmero pi, el logaritmo natural e, entre otros. Solo pueden definirse constantes que contengan datos del tipo entero, flotante, string y booleans. Para definir una constante se utiliza la instruccin define de la forma: define(PI,3.14151692); Tambin pueden ser definidas con la palabra reservada const pero a partir de la versin 5.3. Luego las constantes pueden usarse como variables tradicionales ($PI) con la salvedad de que no se les puede asignar un valor. Estas son las diferencias entre constantes y variables: Las constantes no son precedidas por un smbolo de dolar ($) Las contantes solo pueden ser definidas usando la funcin() define , nunca por simple asignacin Las constantes pueden ser definidas y accedidas sin tener en cuenta las reglas de alcance del mbito. Las constantes no pueden ser redefinidas o eliminadas despus de establecerse; y Las constantes solo puede albergar valores escalares Puede utilizar defined() para averiguar si una constante ya se ha creado.

CONSTANTES PREDEFINIDAS
PHP ofrece un largo nmero de constantes predefinidas a cualquier script en ejecucin. Muchas de estas constantes, sin embargo, son creadas por diferentes extensiones, y solo estarn presentes si dichas extensiones estn disponibles, bien por carga dinmica o porque has sido compiladas. Se puede encontrar una lista de constantes predefinidas en la seccion Constantes predefinidas del manual de php.
ALGUNAS CONSTANTES PREDEFINIDAS PHP_VERSION VERSION DEL PHP QUE SE ESTA USANDO PHP_OS SISTEMA OPERATIVO DEL SERVIDOR DE PHP PEAR_EXTENSION_DIR RUTA DONDE ESTA INSTALADA LA EXTENSION PEAR PHP_LIBDIR RUTA DONDE ESTAN INSTALADAS LAS LIBRERIAS DE PHP5

22

Inicindose con php

__LINE__ __FUNCTION__ __CLASS__ __METHOD__

CONSTANTES MAGICAS NUMERO DE LINEA DESDE DONDE SE ESTA USANDO. NOMBRE DE LA FUNCION QUE LA CONTIENE NOMBRE DE LA CLASE NOMBRE DEL METODO

MAYSCULAS Y MINSCULAS
Esta puede ser una causa de problemas. En PHP tenemos un comportamiento mixto: En las variables, las maysculas y minsculas IMPORTAN. As, la variable $MiVar es distinta de $mivar. En los nombres de funciones y palabras reservadas, las maysculas NO IMPORTAN. La funcin PRINT() hace referencia a print(). Para evitar errores y confusiones, siempre se de escribir los nombres de funciones del sistema en minscula, y las funciones propias siempre tal y como se escribieran en la declaracin.

OPERADORES
Son los simbolos de uso comun en las matematicas e informatica y que nos sirven para realizar, calculos, comparciones entre otras funciones especificas. Entre los operadores PHP cuenta con: De asignacin. Unario. Aritmticos. De comparacin. Lgicos. Bit a bit. Asignacin combinados. Supresin de errores.

23

Inicindose con php

OPERADOR DE ASIGNACION:
El operador bsico de asignacin es "=". A primera vista podras pensar que es el operador de comparacin "igual que". Pero no. Realmente significa que el operando de la izquierda toma el valor de la expresin a la derecha, (esto es, "toma el valor de").
<? $a = 1; // asignar el valor 1 a la variable $a ?>

OPERADOR UNARIO:
El signo menos (-) se utiliza delante de un nmero o variable numrica. Este operador tiene la propiedad de hacer a los nmeros, negativos o positivos, dependiendo del signo actual.
<? $entero = 23; $entero_negativo = -$entero; // El valor es ahora -23 $entero2 = -$entero__negativo; // El valor cambia ahora a 23 ?>

OPERADORES ARITMTICOS:
$a + $b $a - $b $a * $b $a / $b $a % $b OPERADORES ARITMETICOS Adicin Substraccin o resta Multiplicacin Divisin Modulo Suma entre $a y $b Diferencia entre $a y $b Producto de $a y $b Cociente de $a entre $b Resto de $a dividido entre $b

OPERADORES DE COMPARACIN
$a == $b $a != $b $a === $b $a !== $b $a > $b $a < $b OPERADORES DE COMPARACION Igual Verdadero si el valor de $a es igual al de $b. Diferente Verdadero si el valor de $a no es igual al de $b. Idntico Verdadero si el valor de $a es igual al de $b, y si son del mismo tipo. No idntico Verdadero si el valor de $a no es igual al de $b, y si no son del mismo tipo. Mayor Verdadero si el valor de $a es mayor al de $b. Menor Verdadero si el valor de $a es menor al de $b.

24

Inicindose con php $a >= $b $a <= $b Mayor o igual Menor o igual Verdadero si el valor de $a es mayor o igual al de $b. Verdadero si el valor de $a es menor o igual al de $b.

El operador ternario o de comparacin ? Tambin entra en este grupo. (expr1) ? (expr2) : (expr3);
<? echo (true) ? "verdad" : "mentira"; ?> verdad

La expresin toma el valor expr2 si expr1 se evala a cierto, y expr3 si expr1 se evala a falso.

OPERADORES LGICOS
Estos operadores trabajan en funcin del valor booleano de los operandos.
$a and $b $a && $b $a or $b $a || $b $a xor $b !$a OPERADORES LOGICOS Y Verdadero si el valor de $a y $b es verdadero. Y Verdadero si el valor de $a y $b es verdadero. O Verdadero si el valor de $a o el valor de $b es verdadero. O Verdadero si el valor de $a o el valor de $b es verdadero. O exclusivo Verdadero si el valor de $a o el valor de $b es verdadero, pero no ambos. Negacin o No Verdadero si el valor de $a es falso.

OPERADORES BIT A BIT


Se utilizan en muy pocas ocasiones. Los operadores de bit utilizan las variables a nivel bajo, tal y como se almacenan en memoria fsica y comparan bit a bit los valores.
<? $a = $b = $c = echo ?> 4 4 ; // Valor binario 100 5; // Valor binario 101 $a & $b; $c; // El valor de c es 100

El operador binario Y (smbolo &) compara bit a bit las variables $a y $b. Si los bits de una misma posicin son true (tienen el valor 1), el bit resultado es 1. En este caso, slo existe una pareja de bits que es igual a true

25

Inicindose con php

(sus dos valores son 1), por lo tanto el valor de la variable $c es 4 (en binario 100).
$a & $b $a | $b $a ^ $b ~ $a $a << $b $a >> $b OPERADORES BIT A BIT Y Si las parejas de bits son verdaderas el resultado es verdadero. O Si algn bit de la pareja es verdadero el resultado es verdadero. O exclusivo Verdadero si el valor de $a o el valor de $b es verdadero. No Si un bit de la pareja es true y el otro false el resultado es verdadero. Desplazar a la Desplaza a la izquierda los bits de Izquierda la variable $a tantos bits como indique la variable $b. Desplazar a la derecha Desplaza a la derecha los bits de la variable $a tantos bits como indique la variable $b.

OPERADORES DE ASIGNACIN COMBINADOS .


$a++ $a~ ++$a ~$a $a += $b $a -= $b $a *= $b $a /= $b $a %= $b $a &= $b $a |= $b $a ^= $b $a .= $b $a >>= $b $a <<= $b OPERADORES DE ASIGNACION COMBINADOS Incremento $a = $a +1 Decremento $a = $a -1 Incremento $a = $a +1 Decremento $a = $a -1 Suma $a = $a + $b Resta $a = $a - $b Multiplicacin $a = $a * $b Divisin $a = $a / $b Mdulo $a = $a % $b Y $a = $a & $b O $a = $a | $b O exclusiva $a = $a ^ $b Concatenacin $a = $a . $b Desplazamiento a la derecha $a = $a >> $b Desplazamiento a la $a = $a << $b izquierda

OPERADORES DE SUPRESIN DE ERRORES


Debido a que las funciones en PHP muestran errores si algo falla, siempre y cuando este activada en el php.ini la opcin que lo permite, se usa el operador @ delante de cada funcin y as se evita que aparezcan los errores.

26

Inicindose con php

PRECEDENCIA DE OPERADORES
La precedencia de operadores especifica cmo se agrupan las expresiones. Por ejemplo, en la expresin 1 + 5 * 3, la respuesta es 16 y no 18 porque el operador de multiplicacin ("*") tiene una mayor precedencia que el de adicin ("+"). Los parntesis tienen la propiedad de dar preferencia en la evaluacin a todos los operadores que contiene.
PRECEDENCIA DE OPERADORES Parntesis de preferencia N/A Instancia de objeto N/A array Derecha No lgico Derecha Signo menos Derecha Incremento decremento Derecha Supresin de errores Derecha Multiplicacin, divisin y Izquierda modulo Suma, resta y concatenacin Izquierda Desplazamiento izquierda y Izquierda derecha Menor que, menor o igual, N/A mayor que, mayor o igual Igual no igual N/A Y Izquierda O exclusivo Izquierda O Izquierda Y lgico Izquierda O lgico Izquierda Condicional Derecha Asignacin Derecha Y lgico O exclusivo lgico O lgico Izquierda Izquierda Izquierda

() new [] ! ++ - @ */% +-. << >> <<= >>= == != & ^ | && || ?: = += .= *= /= = %= &= != - = <<= >>= and xor or

ESTRUCTURAS DE CONTROL
IF
Permite la ejecucin condicional de fragmentos de cdigo. Su sintaxis es: If (expresin) Instruccin; Dependiendo de la cantidad de instrucciones a ejecutar se usan las llaves { } para abrir y cerrar el bloque.

27

Inicindose con php

<? if(true) echo "verdad"; ?> verdad

ELSE
A menudo se desea ejecutar una sentencia si se cumple una cierta condicin, y una sentencia distinta si la condicin no se cumple. Esto es para lo que sirve else. else extiende una sentencia if para ejecutar una sentencia en caso de que la expresin en la sentencia if se evale como FALSE. Su sintaxis es la siguiente:
<? if(false) echo "verdad"; else echo"mentira"; ?> mentira

ELSEIF
elseif, como su nombre sugiere, es una combinacin de if y else. Como else, extiende una sentencia if para ejecutar una sentencia diferente en caso de que la expresin if original se evala como FALSE. Puede haber varios elseifs dentro de la misma sentencia if. La sentencia elseif se ejecuta slo si la expresin if precedente y cualquier expresin elseif precedente se evalan como FALSE, y la expresin elseif actual se evala como TRUE. Su sintaxis es:
<? $car = 2; if($car==0) echo "cero"; elseif($car==1) echo"uno"; elseif($car==2) echo "dos"; ?> dos

28

Inicindose con php

SWITCH
La construccin switch comprueba el valor de una expresin y permite elegir entre un conjunto de instrucciones. La expresin puede ser de cualquier tipo, siempre que devuelva un valor de tipo entero, de coma flotante o de cadena de caracteres. Una vez evaluada la expresin, se busca el valor en la instruccin case y, si coincide, se ejecutan todas las instrucciones hasta la palabra reservada break. Si no coincide ningn valor, se ejecutan las instrucciones por defecto.

<? $car = 5; switch ($car) { case 0: print "cero"; break; case 1: print "uno"; break; case 2: print "dos"; break; default: echo "no es ninguno"; break; } ?> no es ninguno

BUCLES
Los bucles son estructuras de control que permiten repetir varias veces las mismas instrucciones.
WHILE

El bucle while es el ms bsico de todos. La construccin bsica es la siguiente:

29

Inicindose con php <? highlight_file('pruebas.php'); /* ejemplo 1*/ $i = 1; while ($i <= 10) { print $i++; /* el valor impreso seria $i antes del incremento (post-incremento) */ } /* ejemplo 2 */ echo "<br>"; $i = 1; while ($i <= 10): print $i; $i++; endwhile; ?> 12345678910 12345678910

El significado de una sentencia while es simple. Le dice a PHP que ejecute la(s) sentencia(s) anidada(s) repetidamente, mientras la expresin while se evale como TRUE. El valor de la expresin es comprobado cada vez al principio del bucle, as que incluso si este valor cambia durante la ejecucin de la(s) sentencia(s) anidada(s), la ejecucin no parar hasta el fin de la iteracin (cada vez que PHP ejecuta las sentencias en el bucle es una iteracin). A veces, si la expresin while se evala como FALSE desde el principio de todo, la(s) sentencia(s) anidada(s) no se ejecutarn ni siquiera una vez.
DO..WHILE

Los bucles do..while son muy similares a los bucles while, excepto que las condiciones se comprueban al final de cada iteracin en vez de al principio. La principal diferencia frente a los bucles regulares while es que se garantiza la ejecucin de la primera iteracin de un bucle do..while (la condicin se comprueba slo al final de la iteracin), mientras que puede no ser necesariamente ejecutada con un bucle while regular (la condicin se comprueba al principio de cada iteracin, si esta se evala como FALSE desde el principio la ejecucin del bucle finalizar inmediatamente).
<? $i=2; do { echo $i; $i++; }while($i<=5); ?> 2345

30

Inicindose con php


FOR

Los bucles for son los bucles ms complejos en PHP. Se comportan como su contrapartida en C. La sintaxis de un bucle for es: for (expr1; expr2; expr3) sentencia Donde: expresin1 es la iniciacin del bucle. Generalmente da un valor inicial a una o varias variables (separadas por comas). Slo se ejecuta una vez, al principio, cuando el flujo del programa llega al bucle. expresin2 es la condicin. Mientras que expresin2 se evale a cierto, el bucle estar iterando. Se evala al inicio de cada iteracin, y si no se verifica la condicin la siguiente iteracin ya no se realiza y finaliza el bucle, continuando la ejecucin del programa con el resto del cdigo de despus del for. expresin3 es el paso de iteracin. Se ejecuta despus de cada iteracin, y generalmente modifica el valor de alguna variable (separadas por comas si hay ms de una). Cada una de las expresiones puede estar vaca. Que expr2 est vaca significa que el bucle debera correr indefinidamente (PHP implicitamente lo considera como TRUE, al igual que C). Esto puede que no sea tan intil como se podra pensar, puesto que a menudo se quiere salir de un bucle usando una sentencia break condicional en vez de usar la condicin de for. PHP tambin soporta la "sintaxis de dos puntos" alternativa para bucles for. for (expr1; expr2; expr3): sentencia; ...; endfor;
<? /* ejemplo 1 */ for ($i = 1; $i <= 10; $i++) { echo "EJ-1. ".$i; } /* ejemplo 2 */ for ($i = 1;;$i++) { if ($i > 10) { break; } echo "EJ-2. ".$i; } /* ejemplo 3 */ $i = 1; for (;;) { if ($i > 10) { break; } echo "EJ-3. ".$i; $i++; } /* ejemplo 4 */ for ($i = 1; $i <= 10; print"EJ-4. $i", $i++) ; ?> EJ-1. 1EJ-1. 2EJ-1. 3EJ-1. 4EJ-1. 5EJ-1. 6EJ-1. 7EJ-1. 8EJ-1. 9EJ-1. 10EJ-2. 1EJ-2. 2EJ2. 3EJ-2. 4EJ-2. 5EJ-2. 6EJ-2. 7EJ-2. 8EJ-2. 9EJ-2. 10EJ-3. 1EJ-3. 2EJ-3. 3EJ-3. 4EJ-3. 5EJ-3. 6EJ-3. 7EJ-3. 8EJ-3. 9EJ-3. 10EJ-4. 1EJ-4. 2EJ-4. 3EJ-4. 4EJ-4. 5EJ-4. 6EJ-4. 7EJ-4. 8EJ-4. 9EJ-4. 10

31

Inicindose con php


FOREACH

El bucle foreach es nuevo en PHP 4, y representa una estructura de control tpica de lenguajes interpretados como Perl y Bash, en la que a una variable se le van asignando todos los valores de una lista. Hay dos sintaxis; la segunda es una extensin menor, pero til de la primera:
<? /* foreach ejemplo 1: solo el valor*/ $a = array(1, 2, 3, 17); foreach($a as $v) { print "Valor actual de \$a: $v.\n";} /* foreach ejemplo 2: valor (con clave impresa para ilustrar) */ $a = array(1, 2, 3, 17); $i = 0; foreach($a as $v) { print "\$a[$i] => $v.\n"; $i++; } /* foreach ejemplo 3: clave y valor */ $a = array("uno" => 1,"dos" => 2,"tres" => 3,"diecisiete" => 17); foreach($a as $k => $v) { print "\$a[$k] => $v.\n"; } ?> Valor actual de $a: 1. Valor actual de $a: 2. Valor actual de $a: 3. Valor actual de $a: 17. $a[0] => 1. $a[1] => 2. $a[2] => 3. $a[3] => 17. $a[uno] => 1. $a[dos] => 2. $a[tres] => 3. $a[diecisiete] => 17.

La primera forma recorre el array dado por expresion_array. En cada iteracin, el valor del elemento actual se asigna a $value y el puntero interno del array se avanza en una unidad (as en el siguiente paso, se estar mirando el elemento siguiente). La segunda manera hace lo mismo, salvo que la clave del elemento actual ser asignada a la variable $key en cada iteracin.
BREAK Y CONTINU

El camino ordinario para salir de un bucle es que la condicin se evale afalse. Existe una forma especial de salir de un bucle, utilizando las palabras reservadas b r e a k y c o n t i n u . Su forma de actuar es la siguiente: break escapa de la estructuras de control iterante (bucle) actuales for, while, o switch. Break acepta un parmetro opcional, el cual determina cuantas estructuras de control hay que escapar. continue se usa dentro de la estructura del bucle para saltar el resto de la iteracin actual del bucle y continuar la ejecucin al comienzo de la siguiente iteracin. Continue acepta un parmetro opcional, el cual determina cuantos niveles (bluces) hay que saltar antes de continuar con la ejecucin. El cdigo siguiente muestra la forma de utilizar break:

32

Inicindose con php

<? for ($x = 1; $x < 20; $x++) { for($s=1;$s<30;$s++) { if ($s == 10) { break 2;} else { echo "$x<br>"; } } } ?>

El cdigo siguiente muestra la forma de utilizar continue:


<? $i = 0; while ($i++ < 5) { echo "primer bucle<br>"; while (1) { echo "segundo bucle<br>"; while (1) { echo "tercer bucle<br>"; continue 3; } echo "Esto nunca se imprime.<br>"; } echo "Y esto tampoco.<br>"; } ?>

FINALIZAR LA EJECUCIN DE UN PROGRAMA


La funcin para la ejecucin es e x i t () o d i e () . Estas dos funciones aceptan un parmetro que se imprime en pantalla. Por ejemplo, considere el siguiente cdigo que asume la conexin a una base de datos:
<? $conexion = @mysql_connect("localhost","s",123); if (!$conexion) { die ("Se ha producido algn error en la conexin"); } $conexion = @mysql_connect("localhost","s",123) or die ("Se ha produc ido algn error en la conexin"); ?> Se ha producido algn error en la conexin

33

Inicindose con php

EVALUACIONES A CIERTO O FALSO


La forma de realizar las comprobaciones booleanas sobre una variable (evaluar su valor a cierto o falso) en PHP puede resultar confusa, ya que antes de realizar la comprobacin PHP puede convertir el tipo de la variable. En PHP se puede evaluar de esta forma cualquier variable, contenga un valor del tipo que contenga, lo que lleva a varios tipos de conversin: Para los valores numricos, 0 es FALSO, cualquier otro valor CIERTO. Para cadenas de texto, una cadena vaca equivale a FALSO, una cadena no vaca a CIERTO. NOTA: $x = 0 es la nica excepcin, ya que primero se convierte la cadena 0 al decimal 0, que como ya hemos visto se evala a FALSO. Para arrays: un array vaco se evala a FALSO, mientras que si tiene algn elemento lo hacea CIERTO. Para objetos, el resultado de la evaluacin es FALSO si son objetos vacos (si clase no define ningn mtodo ni variable), y CIERTO en otro caso.

PHP tiene definidas dos constantes para los valores CIERTO y FALSO, respectivamente TRUE y FALSE. Estn definidas de esta forma: TRUE es el valor entero decimal 1. FALSE es la cadena vaca. Es indiferente si se escriben en maysculas o minsculas, es decir, true, True y tRuE hacen referencia a la misma constante TRUE.

FUNCIONES
Las funciones son grupos de instrucciones independientes que tienen un propsito determinado. Al igual que en C, en php las funciones se definen de igual modo. Existen las definidas por el usuario y las que provee el lenguaje. Tomando en cuenta que las funciones provistas por php son demasiadas y deben ser estudiadas por temas separados y con ms tiempo, solo se estudiaran las definidas por el usuario. La sintaxis bsica de una funcin es la siguiente:
<?php function foo ($arg_1, $arg_2, ..., $arg_n) { echo "Funci&oacute;n de ejemplo.\n"; return $retval; } ?>

34

Inicindose con php

Las funciones pueden ser llamadas con varios parmetros o con ninguno, dependiendo de su definicin. Cuando PHP encuentra en el cdigo la llamada a una funcin, primero, evala cada argumento y los utiliza como parmetro de entrada. Despus, ejecuta la funcin y devuelve el valor solicitado o realiza alguna accin sin enviar ningn valor de salida. El comando return es opcional, y sirve para que la funcin devuelva un valor de salida. Puede aparecer varias veces en el cdigo de la funcin, y siempre implica la final de la ejecucin de la funcin. En el cuerpo de la funcin puede haber cualquier combinacin de instrucciones vlidas en PHP, incluso otras definiciones de funciones y / o clases. PHP no soporta sobrecarga de funciones (tener varias funciones con el mismo nombre y distintos argumentos), ni tampoco se puede eliminar o modificar una funcin previamente definida. Lo que si se puede hacer es dar valores por defecto a algunos de los parmetros que reciba la funcin (comenzando siempre por la derecha) y hacerlos as optativos: estas son algunas de las funciones que permiten revisar la lista de parmetros que son pasados a una funcin.
func_num_args(), func_get_arg(), y func_get_args()

PARMETROS DE LAS FUNCIONES


La informacin puede suministrarse a las funciones mediante la lista de parmetros, una lista de variables y/o constantes separadas por comas. PHP soporta pasar parmetros por valor (el comportamiento por defecto), por referencia, y parmetros por defecto.

PASAR PARMETROS POR REFERENCIA


Por defecto, los parmetros de una funcin se pasan por valor (de manera que si se cambia el valor del argumento dentro de la funcin, no se ve modificado fuera de ella). Si se desea permitir a una funcin modificar sus parmetros, deben ser pasados por referencia. Esto se consigue anteponiendo a los parmetros un ampersand en la definicin de la funcin. Si se desea pasar una variable por referencia a una funcin que no toma el parmetro por referencia por defecto, se puede anteponer un ampersand al nombre del parmetro en la llamada a la funcin.

35

Inicindose con php <? function uno ($alm) { $alm .= " impresa en funcion uno "; } function dos(&$alm) { $alm = " recibo por referencia "; } $str = "Esto es una cadena, "; uno ($str); echo $str; // Saca 'Esto es una cadena, ' uno (&$str); echo $str; // Saca 'Esto es una cadena, impresa en funcion uno' dos ($str); echo $str;// Saca ' recibo por referencia' ?>

PASAR PARMETROS POR VALOR


Por defecto, las llamadas a funciones se hacen por valor. Esto quiere decir que las variables que se utilizan como parmetros se copian al entorno de la funcin. Todos los cambios de valor que sufra la variable en este entorno no afectarn al programa fuera de la funcin.

PASAR PARMETROS POR DEFECTO


Una funcin puede definir valores por defecto para los parmetros escalares estilo C++. El valor por defecto tiene que ser una expresin constante, y no una variable o miembro de una clase. El formato es el siguiente:
<? function uno ($alm =no recib nada) { echo $alm; } $str = "Esto es una cadena, "; uno ($str); // Saca 'Esto es una cadena, ' uno (); // Saca 'no recib nada, ' ?>

Si alguno de los parmetros es obviado, la variable tendr como valor, el valor por defecto de la definicin.

36

Inicindose con php

FUNCIONES VARIABLES
Uno de los trucos que se pueden hacer con PHP es utilizar variables para almacenar el nombre de funciones. Si una variable almacena el nombre de una funcin, simplemente tendr que aadir unos parntesis al final de la variable para hacer la llamada correctamente.
<? function uno ($alm) { $alm .= " impresa en funcion uno "; } function dos(&$alm) { $alm = " recibo por referencia "; } $str = "Esto es una cadena, "; $funcion = 'uno'; $funcion($str); echo $str; // Saca 'Esto es una cadena, ' uno (&$str); echo $str; // Saca 'Esto es una cadena, impresa en funcion uno' $funcion = 'dos'; $funcion($str); echo $str;// Saca ' recibo por referencia' ?>

INCLUDE Y REQUIRE
La utilidad de ambas clusulas es la misma, incluir cdigo que contiene funciones o clases o cualquier cosa que se ha estandarizado en el proyecto y no es necesario escribirlas en cada uno de los archivos que lo necesiten, sino que se hace uso de estas funciones. En PHP 5 no existen apenas diferencia entre ambas funciones, salvo que la funcin i n c l u d e () es ms tolerante a fallos que r e q u i r e () y permite continuar la ejecucin del programa aunque se haya encontrado un fallo, es decir si ocurre algn fallo la funcin include arroja un warning y continua la ejecucin del programa, ahora la funcin require arroja un error_fatal obligando al programa a detener su ejecucin. Tambin existen las funciones include_once y require_once, que nos aseguran que un determinado archivo slo ser procesado una vez, en caso de que en sucesivos includes vuelva a aparecer.

37

Inicindose con php

<? if( include("include.php")) echo " se incluyo correctamente"; else echo "ya fue incluido" ; ?> uno dos 3 se incluyo correctamente

RECURSIVIDAD
El paradigma de la programacin lleva a inventar frmulas que minimicen el esfuerzo en los programas pecando, algunas veces, de complejidad. Las funciones recursivas son aquellas capaces de llamarse a s mismas. Como nico requisito es que haya una forma de salir en la llamada recursiva.
<? function tabla($op=1) { $operador = $op; for($i=1;$i<=10;$i++) { echo $operador*$i."\t ";} $operador++ ; echo"<br>"; if($operador>9) echo"<br> termino"; else tabla($operador) ; } tabla(); ?>

CADENAS DE CARACTERES Y
EXPRESIONES REGULARES
Las cadenas de caracteres o string son secuencias de caracteres que pueden ser tratadas como una unidad, asignadas a variables, pasadas como parmetros a funciones o enviadas como salida al navegador. Un string se diferencia de otro tipo de dato en PHP 5, porque va encerrado entre comillas dobles ( ") o simples ( ' ) . PHP interpreta de distinta forma las cadenas que van entre comillas dobles y las que van entre comillas simples. Losstrings entre comillas dobles

38

Inicindose con php

pueden sustituir ciertos smbolos por acciones, como la inclusin del valor de una variable. Las comillas simples, simplemente muestran todo el contenido, sin atender a caracteres especiales.

PROPIEDADES DE LAS CADENAS


Tomando las cadenas como una sucesin de caracteres en un orden determinado, se puede llegar a acceder libremente a parte de los caracteres. Esto es posible gracias a los smbolos de llave ({ } ) y un ndice numrico que se corresponder con la posicin del carcter que se busca. Las cadenas pueden concatenarse a partir del operador antes mencionado, el cual es el punto ( . ) . Se puede asignar cadenas usando el delimitador (<<<) seguido de una etiqueta que indica el principio del texto, luego se escribe la cadena, que en estos casos son extremadamente largas, como por ejemplo un considerable conjunto de etiquetas HTML, ypaa finalizar se usa la etiqueta de fin.

FUNCIONES DE CADENAS
Estas funciones son provistas por php para el tratamiento de las cadenas y caracteres. Strlen($cad) : devuelve el tamao de la cadena pasada como parmetro. Strpos($cad,$caracter) : devuelve la primera posicin de una subcadena, si esta se encuentra en la cadena. Strrpos($cad,$caracter): hace lo mismo que la funcin anterior, solo que busca un carcter dentro de la cadena. Strcmp($cadena1,$cadena2): hace la comparacin de dos cadenas, si son iguales devuelve cero, si la primera es mayor que la segunda devuelve un valor positivo en caso contrario devuelve un valor negativo. la comparacin tambin puede hacerse con el operador (==). Strstr(): recibe como parmetro una cadena donde buscar y otra con un conjunto de caracteres que buscar, si se encuentra el resultado ser una cadena que comenzara justo en el patrn, hasta el final de la cadena donde se busca, de lo contrario devolver falso. Substr($cadena,$comienzo,$num_car_extr):permite seleccionar un conjunto de caracteres de una cadena, quedando intacta la cadena original. rtrim(): quita los espacios en blanco o caracteres especficos a partir del fin de la cadena. Ltrim():quita los espacios en blanco o caracteres especficos a partir del inicio de la cadena. Trim():quita los espacios en blanco o caracteres especficos desde el comienzo y el fin de la cadena.

39

Inicindose con php


<?

str_replace() toma como parmetros un conjunto de caracteres a buscar, un grupo que debe sustituirse por el anterior y una cadena de caracteres sobre la que actuar. strtolower () y strtoupper () devuelven la cadena que se pasa como argumento, completamente en minscula o mayscula respectivamente. Ucfirst(): hace que las letras inciales en cada frase de una cadena, sean convertidas en mayscula. Ucwords(): transforma la primera letra de una cadena a mayscula.

$cadena = " esta es una cadena para verificar las funciones de cadena "; $cadenas = "la segunda cadena "; echo"<br> la longitud es ".strlen($cadena); echo"<br> la frase funciones comienza en la posicion ".strpos($cadena,"f unciones"); echo"<br>el caracter comienza en la posicion ".strrpos($cadena,"l"); echo"<br> \$cadena es "; if(strcmp($cadena,$cadenas) ==0) echo " igual a cadena \$cadenas"; elseif(strcmp($cadena,$cadenas) > 0) echo " mayor que \$cadenas"; else echo " menor que \$cadenas"; echo "<br>" ; if(strstr($cadena,'para')) echo "encontramos lo que buscabamos <br>"; else echo "no encontramos lo que buscabamos <br>"; echo"extraemos los 3 primeros caracteres ".substr($cadena,0,3); echo"<br>extraemos los 3 ultimos caracteres ".substr($cadena,0,-3); echo"<br>quitamos espacios en blanco a la derecha ".rtrim($cadena).'A'; echo"<br>quitamos espacios en blanco a la izquierda ".ltrim($cadena).'A' ; echo"<br>quitamos espacios en blanco al principio y al final ".trim($cad ena).'A'; ?>

EXPRESIONES REGULARES
Las expresiones regulares son patrones de bsqueda dentro de cadenas. Estos patrones se construyen mediante caracteres especiales que cumplen unas reglas determinadas.
aabb ^ Los caracteres no especiales, como un grupo de letras, se escriben como de costumbre. Indica que hay que buscar el patrn desde el principio de la cadena.

40

Inicindose con php $ * + [ab] Este simbolo obliga al patrn a cumplirse hasta el final de la cadena. Indica que puede haber O o ms instancias de una expresin. Indica que puede haber 1 o ms instancias de una expresin. Indica que se puede encontrar el carcter a o el b y la expresin sera correcta. Lo podemos acompaar de [ab] * para evaluar si hay varias letras seguidas del tipo a o b. Indica que se puede elegir entre un rango de caracteres que va desde la a hasta la z. Si queremos utilizar cualquiera de los anteriores caracteres como parte del patrn tendremos que utilizar ste smbolo para indicarle a PHP que es un literal.

[a-z] \

Las expresiones regulares se evalan con las funciones ereg() y eregi() que son capaces de comprobar si una cadena se corresponde con el patrn que pasa como parmetro. Toma dos argumentos obligatorios, una expresin regular y una cadena de caracteres donde buscar el patrn. Las funciones anteriores se diferencia una de la otra en que eregi() no es sensible a maysculas.
<? $correo = "bay.hv@bayhv.com"; if (ereg( "[a-z|\.]+@[a-z|\.]+\.(org|com|net)$",$correo)) { echo "El correo $correo se acepta.<br>" ; } else { echo "El correo $correo no cumple el patrn.<br>"; } ?>

DATOS DEL TIPO ARRAY


Un array es una coleccin de valores con un nico nombre. Para acceder a los distintos valores de la variable se utiliza un ndice numrico o alfanumrico. En PHP los arrays no tienen que definirse de una forma concreta, sino que pueden tomar distintos tipos de valores: enteros, caracteres, objetos, etctera. En php no es necesario definir de antemano el nmero de valores mximo que tomara el array, estos se van creando a medida que los van necesitando. Los array se pueden crear de tres formas diferentes en php:

41

Inicindose con php

La primera es por medio de la asignacin directa ejemplo


<? $mi_array[l] = 23; // Asignacin directa echo $mi_array[1]; ?>

La segunda es usando la funcin array(), esta funcin crea un array con los valores que pase como datos de entrada. Los ndices sern aadidos automticamente empezando desde 0. Si no asigna parmetros a array( ) , la funcin le devolver un array vaco.
<? $mi_array = array(23,45,76,23,65); echo $mi_array[3]; $mis_array = array(0 => 23, 1 => 45, 2 => 76);?>

La funcin a r r a y () permite tambin aadir ndices a los valores que se introducen. Para ello se utiliza el operador => de esta forma: Y la tercera forma de crear un array es a partir de funciones que devuelven arrays, como por ejemplo las que devuelven informacin de las basa de datos.
$query = "SELECT $campos FROM $tabla $condicion $orden"; $resultado = @mysql_query($query); if($num_filas!=0) { $i = 0; while ($retorno[$i] = @mysql_fetch_array($resultado, MYSQL_NUM)) { $i++; }

FUNCIONES PARA RECORRER UN ARRAY


current(), next(), prev(),reset() y end(), que devuelven el elemento actual, siguiente, anterior, inicial o final del array, y a la vez actualizan el puntero a esa posicin. Tambin se dispone de las funciones key(), que devuelve el ndice (numrico o asociativo) del elemento actual; y each(), que devuelve un array con el ndice del elemento actual en las posiciones 0 y key, y su valor (lo mismo que devolvera current) en las posiciones 1 y value, y actualiza el puntero actual al siguiente (lo que hara next).

42

Inicindose con php

<? $transporte = array('alimentos', 'ropa', 'autos', 'libros'); $mode = current($transport); // 'alimentos'; $mode = next($transport); // 'ropa'; $mode = next($transport); // 'autos'; $mode = prev($transport); // 'ropa'; $mode = end($transport); // 'libros'; ?>

ORDENAR UN ARRAY
En PHP hay varias funciones para ordenar un array: sort(): Ordena el array por contenido en orden ascendente. rsort(): Ordena por contenido en orden descendente. ksort(): Ordena por el ndice en orden ascendente. rksort(): Ordena por el ndice en orden descendente. Para borrar un valor o el contenido del array se usa la funcin unset(). Para contar el numero de elementos de un array se usa la funcin count(), para buscar un valor dentro de un array se usa la funcin in_array().

FORMULARIOS , PASO DE INFORMACIN


ENTRE FORMULARIOS
Para trabajar con los formularios hay que tomar en cuenta dos atributos de dicha etiqueta en html, primero el mtodo a usar GET o POST y el atributo enctype el cual debe tener el valor multipart/form-data para el envi de mltiple informacin no solo texto.

VALORES SENCILLOS
Para los campos de un formulario en los que nicamente se puede elegir o introducir un valor (como campos de texto, desplegables y radio buttons) PHP crea en el archivo de destino tantas variables como campos haya en el formulario, con los nombres que se les haya dado en ste.

VALORES MLTIPLES
Para los campos de selecciones mltiples PHP tambin se encarga de almacenar los valores marcados por el usuario en una variable con el nombre del campo, pero en este caso se debe tener cuidado de dar a las variables nombres de arrays, ya que si no slo se tendr cceso al primer valor seleccionado.

43

Inicindose con php

Para el envi de informacin o intercambio de informacin con los formularios se deben conocer las siguientes variables que son llamadas sperglobales para almacenar los valores que pasan de unas pginas a otras, estas se almacenan en el ordenador del usuario o en el servidor. En PHP 5 el uso de estas variables se hace obligatorio para recuperar todos los valores. Las variables a utilizar son: $_GET: Almacena las variables que se pasan desde un formulario mediante el mtodo GET. $_POST: Almacena las variables pasadas por POST. $_COOKIE: Guarda los valores que estn almacenados en cookies. $_SESSlON: Guarda las variables que se pasan entre sesiones. $_SERVER: Contiene numerosos valores relativos al servidor. $_FILES : Los archivos que se envian a travs de un formulario sern recogidos en este array.

FICHERO Y ALMACENAMIENTO DE
DATOS
Php cuenta con un gran nmero de funciones para trabajar sobre fichero, pero lo bsico es realizar las siguientes operaciones: Abrir el fichero para leer o escribir informacin. Leer o escribir sobre el fichero Realizar las operaciones necesarias Cerrar el fichero Para abrir un fichero se usa la funcin fopen() la cual recibe como parmetros el nombre del fichero a abrir y el modo. El modo se puede observar en la siguiente tabla:
Solo lectura Lectura y escritura si existe el fichero Solo escritura Escritura y lectura Escritura al final Lectura y escritura al final MODOS DE APERTURA DE UN FICHERO r Solo permite leer el fichero si se intenta hacer otra accin dar error. r+ Permite leer y escribir un fichero que exista. El contenido del fichero no se borra, sino que se escribe a continuacin. w Solo se puede escribir. Sobrescribe cualquier fichero afectado. w+ Si el fichero no existe intenta crearlo. a Escribe siempre al final del fichero tanto si existe como si no. a+ Escribe al final del fichero y permite leer.

44

Inicindose con php <? $nombre_archivo = "fichero.txt"; $gestor = fopen($nombre_archivo, "r"); /* leyendolo linea a linea */ if ($gestor) { while (!feof($gestor)) { $bufer = fgets($gestor, 4096); echo $bufer." :) <br>"; } } fclose ($gestor); $gestor = fopen($nombre_archivo, "r"); /* leyendolo completo */ $contenido = fread($gestor, filesize($nombre_archivo)); echo $contenido; fclose ($gestor); $gestor = fopen($nombre_archivo, "r"); /* leyendolo caracter a caracter*/ if ($gestor) { while (!feof($gestor)) { $bufer = fgetc($gestor); echo $bufer." :/ <br>"; } } fclose ($gestor); ?>

Para leer un fichero se usa la funcin fread() la cual tiene como parmetro un descriptor de fichero devuelto por la funcin fopen() y el tamao del bloque de datos que se quiere leer. Para determinar el tamao de un fichero se usa la funcin filesize($fichero) la cual devuelve dicho tamao en bytes. Se puede leer el contenido de un fichero lnea a lnea usando la funcin fgets() la cual se ayuda de la funcin feof() la cual encuentra el final del fichero apuntado por el descriptor. La funcin fgetc() permite leer carcter a carcter un fichero. Existe la funcin fgetss() la cual lee una lnea de cualquier longitud eliminando las etiquetas html excepto las que se indican como segundo parmetro. Para escribir en un fichero se usa la funcin fwrite($fichero,$escritura,$longitud) la cual escribir tantos bytes como la longitud indicada por dicho parmetro o como la longitud de la variable.

45

Inicindose con php

Para cerrar un archivo se usa la funcin fclose($fichero).

file_exists(path) filesize(path) filetype(path) readfile($path) Copy($origen, $destino)

Unlink(fichero) Rename($fichero,$nuevo_nombre) File_exists() Opendir($dir) Readdir($dir) Closedir() Is_dir($dir) Is_file($fichero)

Devuelve true/false segn el path indicado exista o no. Devuelve el tamao de un archivo. Devuelve el tipo de un archivo. Lee todo el archivo y lo escribe al standard output. Copia un fichero tomando como parmetros el fichero que quiere copiar y el destino donde quiere guardar la copia. Toma como parmetro el nombre de un fichero y lo borra. Renombra un fichero al nuevo nombre. Comprueba si un fichero existe. Abre un directorio. Lee un directorio. Cierra un directorio. Comprueba si el parmetro es un directorio. Comprueba si es fichero.

Subir y descargar ficheros Para subir un fichero al servidor se hace uso de los formularios y de las funcines copy o move_uploaded_file() que provee php, y para descargarlos se hace uso de las cabeceras y de la funcin header().
<? $fichero = "ejemplo.zip"; $mimeType = "applcation/zip" ; //Si el navegador es Explorer u Opera cambiamos el tipo de cabecera if (strpos($_SERVER['HTTP_USER_AGENT'],'MSIE 5')|| strpos($_SERVER[ 'HTTP_USER_AGENT'],'Opera 7')) { $mimeType = "application/x-download"; } //Se genera la cabecera //header("contentdisposition: attachment; filename = ejemplo_personal.zip"); //header("content-type: " . $mimeType); header("content-length: " . filesize($fichero)); //Se enva el archivo al navegador readfile($fichero); ?>

SESIONES EN PHP 5
Las sesiones deben soportar: Detectar que durante el transcurso de la navegacin por varias pginas Web, la sesin permanece invariable.

46

Inicindose con php

Almacenar informacin que formar parte de una sesin en concreto. PHP trabaja con una combinacin de mtodos que son capaces de ocultar variables y cookies, de las que hablaremos en un apartado posterior. FUNCIONES PARA EL MANEJO DE SESIONES

sessin_start() session_destroy() session_name() session_id()

Inicia una sesin y permite almacenar variables en la estructura $_SESSION. Elimina todas las variables de sesin. Devuelve el nombre de la sesin, normalmente PHPSESSID. Devuelve los 32 caracteres que forman el identificador de sesin.

COOKIES
Para PHP las cookies son fciles de utilizar. Para esto se utiliza la funcin setcookie() y al igual que la funcin anterior, Header, tiene que ser invocada antes de producir ninguna salida. La funcin posee el siguiente prototipo:
int setcookie(string name, string value, int expire, string path, string domain, int secure);

Esta funcin define la cookie que se va a enviar y posee todos los argumentos opcionales a excepcin del nombre, aunque los no especificados deben ser indicados "", menos los parametros expire que es un entero regular que puede devolver la funcin mktime(), y secure, que indica si el cookie deberia ser utilizado slo sobre conexiones seguras, enteros que deben ser sustituidos por un 0. Un ejemplo sencillo podra ser:
setcookie ("TestCookie", "Valor de Test"); setcookie ("TestCookie", $value,time()+3600); /* expira en 1 hora*/ Para ver el valor de la cookie echo $TestCookie; echo $HTTP_COOKIE_VARS["TestCookie"]; Se pueden usar vectores setcookie ("cookie[three]", "cookiethree"); setcookie ("cookie[two]", "cookietwo"); setcookie ("cookie[one]", "cookieone"); if (isset ($cookie)) { while (list ($name, $value) = each ($cookie)) { echo "$name == $value\n"; } }

47

Inicindose con php

ACCESO A LA BASE DE DATOS


ABRIR Y CERRAR UNA CONEXIN
Para conectar a una BD tenemos la funcin mysql_connect con la siguiente definicin:
int mysql_connect ([string servidor [:puerto] [:/camino/al/socket][, string usuario [, string contrasea]]])

Todos los parmetros son opcionales. Si no se indican, se utiliza localhost como servidor por defecto, el nombre del usuario que est ejecutando PHP como usuario, y la cadena vaca como contrasea. La funcin devuelve un identificador de la conexin que necesitaremos ms tarde para hacer referencia a este enlace en concreto con la BD, o un error si algo ha ido mal. La conexin con la BD se cierra automticamente al finalizar la ejecucin del archivo actual. Tambin se puede cerrar explcitamente con mysql_close.
int mysql_close ([int identificador])

ELEGIR UNA BD
Para elegir la base de datos con la que queremos trabajar de entre todas las disponibles se utiliza la funcin mysql_select_db:
int mysql_select_db (string nombre_bd [, int identificador])

Aqu, nombre_bd especifica el nombre de la BD a la que queremos acceder, y el campo opcional identificador es el nmero de identificacin de enlace devuelto por mysql_connect. Si se omite este ltimo campo, se utiliza el ltimo enlace abierto, y si no existiera, se trata de crear uno con mysql_connect (sin parmetros). La funcin devuelve TRUE o FALSE, segn si todo ha ido bien o no.

INTERROGAR A LA BD
Para hacer querys a una BD se utiliza mysql_query:
int mysql_query (string query [, int identificador])

En query va la sentencia en SQL que queremos ejecutar. Al igual que con mysql_select_db, si se omite el identificador se usa el ltimo o se trata de

48

Inicindose con php

crear. Esta funcin devuelve FALSE si ha habido un error, o un valor no negativo (TRUE) que identifica el resultado y que ms tarde deber ser tratado para extraer la informacin necesaria.

EXTRAER INFORMACIN DEL RESULTADO DEL QUERY


Si la ltima operacin fue un INSERT, UPDATE o DELETE (operaciones que modifican algn registro), se puede utilizar esta funcin para ver el nmero de filas afectadas.
int mysql_affected_rows ([int identificador]) int mysql_num_rows (int resultado) array mysql_fetch_row (int resultado) array mysql_fetch_array(int resultado [, int tipo_resultado])

49