Php Mysql

296
  Exp erto en Desarrollo de Solu ci ones Corp orativas en Soft ware Libre 2010 / ??? Desarrollo de Aplicaciones We b avanzadas co n PHP y MySQL Copyright (c) 2010 (Daniel González Zaballos y David Vaquero Santiago) Financiado por: Impartido por: Espacio para el logotipo del centro de formación

Transcript of Php Mysql

2010 / ???

Experto en Desarrollo de Soluciones Corporativas en Software Libre

Desarrollo de Aplicaciones Web avanzadas con PHP y MySQLCopyright (c) 2010 (Daniel Gonzlez Zaballos y David Vaquero Santiago)

Financiado por:

Impartido por:

Espacio para el logotipo del centro de formacin

LICENCIA CREATIVE COMMONS

Reconocimiento-Compartir bajo la misma licencia 3.0 Espaa

Usted es libre de: copiar, distribuir y comunicar pblicamente la obra hacer obras derivadas Bajo las condiciones siguientes:

Reconocimiento Debe reconocer los crditos de la obra de la manera especificada por elautor o el licenciador (pero no de una manera que sugiera que tiene su apoyo o apoyan el uso que hace de su obra).

Compartir bajo la misma licencia Si transforma o modifica esta obra para crear una obraderivada, slo puede distribuir la obra resultante bajo la misma licencia, una de similar o una de compatible.

Entendiendo que:

Renuncia Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titularde los derechos de autor

Dominio Pblico Where the work or any of its elements is in the public domaine underapplicable law, that status is in no way affected by the license.

Otros derechos Los derechos siguientes no quedan afectados por la licencia de ningunamanera: Los derechos derivados de usos legtimos u otras limitaciones reconocidas por ley no se ven afectados por lo anterior.

Los derecho morales del auto; Rights other persons may have either in the work itself or in how the work is used, such as publicity or privacy rights.

Aviso Al reutilizar o distribuir la obra, tiene que dejar bien claro los trminos de la licencia deesta obra.

INDICE

EXPERTO EN DESARROLLO DE SOLUCIONES CORPORATIVAS EN SOFTWARE LIBRE

Contenido

Pg.

1. CUESTIONES PREVIAS ....................................................................... 1 2. DESCRIPCIN DE LA ARQUITECTURA APACHE, PHP Y MYSQL... 32.1. Introduccin a la plataforma LAMP..................................................................3 2.1.1. Principios de la arquitectura cliente servidor................................................3 2.1.2. Tipos de Arquitectura Cliente Servidor.........................................................4 2.2. La Arquitectura LAMP........................................................................................4 2.2.1. Introduccin a LAMP ....................................................................................4 2.2.2. Glosario de Trminos ...................................................................................4 2.2.3. Elementos de la Arquitectura LAMP ............................................................5 2.2.4. Proceso de una Peticin LAMP....................................................................6 2.3. Pasos de la Instalacin de un Entorno LAMP.................................................7 2.3.1. Instalacin y configuracin o acceso a un Servidor DNS ............................7 2.3.2. Instalacin y configuracin de un SGBD: Mysql ..........................................8 2.3.3. Instalacin y configuracin de una aplicacin LAMP ...................................8

3. INTRODUCCIN A LA INSTALACIN DE LAMP................................ 93.1. Introduccin........................................................................................................9 3.2. Configuracin de Servicios LAMP ...................................................................9 3.2.1. Configuracin de un Servidor DNS ..............................................................9 3.2.2. Configuracin de un dominio DNS ...............................................................9 3.3. Instalacin de LAMP ........................................................................................10 3.3.1. Instalacin de *AMP en Windows con XAMPP ..........................................10 3.3.2. El panel de Control de XAMPP ..................................................................10 3.3.3. Instalacin de una LAMP en OpenSuse 10.2 ............................................11

4. HERRAMIENTAS DE DESARROLLO DE PROYECTOS PARA PHP 154.1. Eclipse y extensiones ......................................................................................15IND-I

INDICE

4.1.1. Eclipse el IDE ............................................................................................. 15 4.1.2. Instalacin de Eclipse para PHP ................................................................ 15 4.1.3. Gestin de versiones: SVN ........................................................................ 16 4.2. Firefox y sus extensiones ............................................................................... 19 4.2.1. Referencias ................................................................................................ 19 4.2.2. Contenido ................................................................................................... 19 4.2.3. Mysql WorkBench....................................................................................... 21 4.2.4. Publicacin de Cdigo................................................................................ 22

5. PHP BSICO .......................................................................................255.1. Estructura bsica de un fichero PHP............................................................. 26 5.1.1. Inclusin de ficheros externos.................................................................... 27 5.2. Elementos del Lenguaje:................................................................................. 28 5.2.1. Variables..................................................................................................... 28 5.2.2. Constantes ................................................................................................. 29 5.2.3. Operadores................................................................................................. 30 5.3. Tipo de datos abstractos: ............................................................................... 32 5.3.1. Manejo de Cadenas de caracteres ............................................................ 32 5.3.2. Manejo de arrays de datos:........................................................................ 36 5.3.3. Variables predefinidas................................................................................ 37 5.4. Estructuras de control:.................................................................................... 38 5.4.1. Sentencias condicionales........................................................................... 38 5.4.2. Switch ......................................................................................................... 39 5.4.3. Bucles......................................................................................................... 40 5.4.4. Break y Continue ........................................................................................ 42 5.5. Funciones ......................................................................................................... 42 5.5.1. mbitos de Variables ................................................................................. 43 5.5.2. Paso de variables ....................................................................................... 45 5.5.3. Recursividad............................................................................................... 46 5.6. Salidas por pantalla ......................................................................................... 46 5.7. Actividades ....................................................................................................... 48IND-II

INDICE

5.7.1. Tipos de datos, cadenas y arrays. .............................................................48 5.7.2. Estructuras de control.................................................................................49 5.7.3. Funciones ...................................................................................................51

6. FORMULARIOS Y SUS MTODOS .................................................... 536.1. GET y POST ......................................................................................................56 6.2. Otros ..................................................................................................................58 6.3. Actividad ...........................................................................................................58

7.BASES DE DATOS RELACIONALES ................................................. 617.1. SQL: lenguaje de definicin y manejo de datos ...........................................61 7.1.1. Lenguaje de definicin de datos (LDD) ......................................................62 7.1.2. Lenguaje de manipulacin de datos (LMD)................................................63 7.1.3. Recuperacin de clave ...............................................................................65 7.1.4. Disparadores (Triggers)..............................................................................65 7.2. Integridad referencial.......................................................................................66 7.2.1. Ejemplo: Cmo funciona ............................................................................66

8. ADMINISTRACIN .............................................................................. 698.1. Manejo de usuarios..........................................................................................69 8.1.1. Usuarios por defecto ..................................................................................69 8.1.2. Conectarse al servidor MySQL...................................................................70 8.1.3. Privilegios de usuarios................................................................................71 8.2. Manejo de datos ...............................................................................................72 8.2.1. Copias de seguridad...................................................................................72

9.ACCESO A DATOS .............................................................................. 759.1. Introduccin......................................................................................................75 9.1.1. Tipos de datos ............................................................................................75 9.2. Acceso a datos .................................................................................................77 9.2.1. Creacin de una tabla ................................................................................77 9.2.2. Eliminar una tabla.......................................................................................78 9.2.3. Modificar la estructura de una tabla ...........................................................78

IND-III

INDICE

9.2.4. ndices de una tabla ................................................................................... 78 9.2.5. Manipulacin de datos ............................................................................... 78 9.2.6. Vistas.......................................................................................................... 80 9.2.7. Sentencias preparadas .............................................................................. 82 9.2.8. Exportacin e importacin de datos ........................................................... 83 9.2.9. Rutinas almacenadas y disparadores ........................................................ 85

10. EJEMPLO Y EJERCICIOS ................................................................9110.1. Introduccin ..................................................................................................... 91 10.2. Ejercicios .......................................................................................................... 91 10.2.1. Ejercicio 1 - Modelado de la base de datos ............................................... 91 10.2.2. Ejercicio 2 - Creacin de la base de datos en MySQL............................... 92 10.2.3. Ejercicio 3 - Poblar la base de datos en MySQL........................................ 97 10.2.4. Ejercicio 4 - Integridad referencial en MySQL............................................ 99 10.2.5. Ejercicio 5 - Acceso a Datos ...................................................................... 99 10.2.6. Ejercicio 6 - Manejo de vistas................................................................... 101 10.2.7. Ejercicio 7 - Disparadores ........................................................................ 102

11. GESTIN DE FICHEROS ................................................................10511.1. Recepcin y manejo de ficheros .................................................................. 105 11.1.2. Actividad ................................................................................................... 109 11.2. POO en PHP.................................................................................................... 109 11.2.1. Definicin de Clases, objetos, atributos y mtodos ................................. 109 11.2.2. Manejo de objetos .................................................................................... 111 11.2.3. Actividades ............................................................................................... 112 11.2.4. Uso de la Herencia ................................................................................... 112 11.2.5. Actividades ............................................................................................... 113 11.2.6. Manejo de excepciones............................................................................ 113 11.2.7. Actividades ............................................................................................... 114 11.2.8. Diferencias entre clases abstractas e interfaces...................................... 116

12. DESARROLLO MVC CON PHP ......................................................11912.1. Qu es MVC?................................................................................................ 119IND-IV

INDICE

12.2. Porqu utilizar el paradigma MVC?............................................................119 12.3. Empezando a separar nuestro cdigo .........................................................120 12.4. Abstrayndonos del gestor de base de datos ............................................121 12.5. Actividades .....................................................................................................122

13. GESTOR DE PLANTILLAS: SMARTY............................................ 12513.1.1. Instalacin.................................................................................................125 13.1.2. Bases de smarty.......................................................................................126 13.1.3. Modificadores, funciones, filtros, plugins, estructuras de control.............126 13.1.4. Como usar smarty ....................................................................................127 13.2. Generacin de CSS ........................................................................................129 13.3. Creando layouts .............................................................................................130 13.4. Creando formularios ......................................................................................131 13.4.1. Actividades ...............................................................................................131 13.5. Accesibilidad en Web ....................................................................................132

14. CAPA DE ACCESO A DATOS CON ADODB ................................. 13514.1. Conexiones a Bases de Datos ......................................................................135 14.2. Generacin de Consultas..............................................................................136 14.2.1. Actividad ...................................................................................................136 14.3. Acceso a los Metadatos ................................................................................137 14.3.1. MetaDatabases() ......................................................................................137 14.3.2. MetaTables($ttype = false, $showSchema = false, $mask=false)...........137 14.3.3. MetaColumns($table,$toupper=true)........................................................137 14.3.4. MetaColumnNames($table)......................................................................137 14.3.5. MetaPrimaryKeys($table, $owner=false) .................................................138 14.3.6. ServerInfo($table).....................................................................................138 14.3.7. MetaForeignKeys($table, $owner=false, $upper=false) ..........................138 14.3.8. FetchField($column_number)...................................................................139 14.4. Ejecucin de Consultas.................................................................................139 14.4.1. Actividad ...................................................................................................140

15. USO DE SERVICIOS DE INTERNET CON PHP ............................. 141IND-V

INDICE

15.1. Distintos modelos de Servicios Web ........................................................... 142 15.2. Algunos API's WEB accesibles a travs de Internet .................................. 142 15.3. Recursos......................................................................................................... 143 15.4. Actividades ..................................................................................................... 143 15.4.1. Actividad 1 ................................................................................................ 143 15.4.2. Actividad 2 ................................................................................................ 143 15.4.3. Actividad 3 ................................................................................................ 143 15.4.4. Actividad 4 ................................................................................................ 144

16. MANEJO DE USUARIOS/SEGURIDAD ..........................................14516.1. Autenticacin y Autorizacin ....................................................................... 145 16.1.1. Actividades ............................................................................................... 147 16.2. Manejo de Sesiones....................................................................................... 148 16.2.1. Actividades ............................................................................................... 149 16.3. Manejo de Cookies......................................................................................... 149 16.3.2. Actividades ............................................................................................... 151

17. CONSTRUIR APLICACIONES PHP SEGURAS .............................15317.1. Tratamiento de imgenes de manera dinmica.......................................... 153 17.1.1. Generacin de captcha para formularios ................................................. 153 17.1.2. Retoque de imgenes .............................................................................. 155 17.1.3. Actividades ............................................................................................... 155 17.2. Bibliotecas de seguridad: IDS ...................................................................... 156

18. OPTIMIZACIN EN PHP .................................................................15918.1. Procesos a Optimizar .................................................................................... 159 18.2. Buenas prcticas de codificacin ................................................................ 161 18.3. Actividades ..................................................................................................... 162 18.3.1. Actividad 1 ................................................................................................ 162 18.3.2. Actividad 2 ................................................................................................ 162 18.3.3. Actividad 3 ................................................................................................ 162 18.3.4. Actividad 4 ................................................................................................ 162

IND-VI

INDICE

19. FRAMEWORKS DE DESARROLLO EN PHP................................. 16319.1. Actividades .....................................................................................................164 19.1.1. Actividad 1 ................................................................................................164 19.1.2. Actividad 2 ................................................................................................164 19.1.3. Actividad 3 ................................................................................................164 19.1.4. Actividad 4 ................................................................................................164

20. JAVASCRIPT................................................................................... 16520.1. Conceptos bsicos ........................................................................................165 20.2. Sintaxis y clases bsicas ..............................................................................165 20.2.1. Incluir scripts en el cdigo HTML .............................................................165 20.3. Elementos del Lenguaje:...............................................................................166 20.3.1. Tipos de datos ..........................................................................................166 20.3.2. Las variables.............................................................................................166 20.3.3. Objetos, Arrays y Funciones ....................................................................167 20.4. Operadores .....................................................................................................167 20.4.1. Operadores Aritmticos............................................................................167 20.4.2. Operadores Binarios.................................................................................168 20.4.3. Operadores Lgicos .................................................................................169 20.4.4. Operadores Varios ...................................................................................171 20.4.5. Funciones Globales..................................................................................171 20.5. Estructuras de control...................................................................................173 20.5.1. Condiciones ..............................................................................................173 20.5.2. Switch .......................................................................................................174 20.5.3. Bucles .......................................................................................................174 20.6. Ruptura de Bucles..........................................................................................175 20.7. Los Objetos de Javascript ............................................................................176 20.7.1. Objeto Object............................................................................................176 20.7.2. Objeto Function ........................................................................................177 20.7.3. Objeto Array..............................................................................................178 20.7.4. Objeto window ..........................................................................................180IND-VII

INDICE

20.7.5. Objeto document ...................................................................................... 182 20.7.6. Objeto form............................................................................................... 184 20.7.7. Objeto Boolean......................................................................................... 185 20.7.8. Objeto Number ......................................................................................... 186 20.7.9. Objeto String............................................................................................. 186 20.7.10. 20.7.11. 20.7.12. Objeto Date ....................................................................................... 190 Objeto Math....................................................................................... 197 Objeto Regular Expession ................................................................ 199

20.8. Eventos ........................................................................................................... 203 20.8.1. Eventos en JavaScript.............................................................................. 203 20.8.2. Mtodos de evento disponibles en JavaScript......................................... 205 20.9. Actividades ..................................................................................................... 206 20.9.1. Actividad 1 ................................................................................................ 206 20.9.2. Actividad 2 ................................................................................................ 206 20.9.3. Actividad 3 ................................................................................................ 206 20.9.4. Actividad 4 ................................................................................................ 207 20.9.5. Actividad 5 ................................................................................................ 207 20.9.6. Actividad 6 ................................................................................................ 207 20.9.7. Actividad 7 ................................................................................................ 207 20.9.8. Actividad 8 ................................................................................................ 207 20.9.9. Actividad 9 ................................................................................................ 207 20.9.10. 20.9.11. 20.9.12. 20.9.13. 20.9.14. 20.9.15. 20.9.16. 20.9.17. 20.9.18. Actividad 10....................................................................................... 207 Actividad 11....................................................................................... 207 Actividad 12....................................................................................... 208 Actividad 13....................................................................................... 208 Actividad 14....................................................................................... 208 Actividad 15....................................................................................... 208 Actividad 16....................................................................................... 208 Actividad 17....................................................................................... 208 Actividad 18....................................................................................... 208

IND-VIII

INDICE

20.9.19.

Actividad 19.......................................................................................208

20.10.Introduccin a XML ........................................................................................209 20.10.1. 20.10.2. 20.10.3. 20.10.4. 20.10.5. 20.10.6. 20.10.7. 20.10.8. 20.10.9. 20.10.10. 20.10.11. 20.10.12. Historia ..............................................................................................209 Ventajas del XML ..............................................................................209 XHTML ..............................................................................................210 Estructura de un documento XML.....................................................210 Partes de un documento XML...........................................................212 Document Type Definition (DTD) ......................................................213 XML Schemas ...................................................................................215 Extended Style Language (XSL).......................................................217 Xlink, Xpath y Xpointer......................................................................220 SAX y DOM .......................................................................................222 Actividades ........................................................................................226 Referencias .......................................................................................227

21. JAVASCRIPT EN LOS DISTINTOS NAVEGADORES ................... 22921.1. La propiedad float de CSS.........................................................................229 21.2. Estilos computados de un elemento............................................................230 21.3. Accediendo al class de un elemento........................................................230 21.4. Accediendo al atributo for de las etiquetas .............................230 21.5. Obtener la posicin del puntero del ratn...................................................230 21.6. Obtener el tamao del navegador o del rea visible ..................................231 21.7. Transparencias...............................................................................................231

22. MANEJO DEL DOM......................................................................... 23322.1. Creando elementos y textos .........................................................................234 22.2. Usando innerHTML ........................................................................................236 22.3. Eliminando un elemento o nodo de texto....................................................236 22.4. Manipulando los estilos de los elementos ..................................................237 22.5. Actividades .....................................................................................................237 22.5.1. Actividad 1 ................................................................................................238 22.5.2. Actividad 2 ................................................................................................238IND-IX

INDICE

23.BIBLIOTECAS JAVASCRIPT BSICAS: JQUERY Y MOOTOOLS23923.2. Validaciones de formularios con JavaScript. ............................................. 240 23.2.1. Validacin con JQuery ............................................................................. 241 23.2.2. Validacin con MooTools ......................................................................... 242 23.3. Manejo dinmico de elementos HTML......................................................... 243 23.4. Actividades ..................................................................................................... 246

24.INTRODUCCIN A AJAX.................................................................24724.1. Tecnologas incluidas en Ajax...................................................................... 247 24.2. Problemas e Inconvenientes ........................................................................ 248 24.3. Mtodos HTTP ................................................................................................ 248 24.4. Objeto XMLHTTPRequest.............................................................................. 249 24.5. Formatos de intercambio de Informacin ................................................... 252

25. CONSTRUCCIN DE SERVICIOS WEB EN PHP. .........................25725.1. Introduccin a los servicios web ................................................................. 257 25.1.1. Soap ......................................................................................................... 257 25.1.2. REST ........................................................................................................ 258 25.1.3. En otras palabras ..................................................................................... 258 25.2. Actividad ......................................................................................................... 259 25.3. Desarrollo de servicios web ......................................................................... 259 25.4. Ejemplo de uso de un servicio REST: CRUDL............................................ 263 25.4.1. Listado ...................................................................................................... 273 25.4.2. Mostrado................................................................................................... 273 25.4.3. Insercin ................................................................................................... 274 25.4.4. Modificacin.............................................................................................. 274 25.4.5. Borrado..................................................................................................... 274 25.4.6. Bsqueda ................................................................................................. 275 25.5. Actividades ..................................................................................................... 275 25.5.1. Actividad 1 ................................................................................................ 275 25.5.2. Actividad 2 ................................................................................................ 275

IND-X

INDICE

26.CONSULTA DE SERVICIOS WEB EN JAVASCRIPT: JQUERY .... 27726.1. Manejo de consultas: uso del objeto XMLHTTPRequest...........................277 26.1.1. Mtodo Open ............................................................................................278 26.2. Importacin y exportacin de datos ............................................................280 26.3. Manejo de los datos y su uso en el DOM ....................................................281 26.4. Actividad .........................................................................................................281

IND-XI

Cuestiones Previas

Cuestiones PreviasEn este punto se ver desde la teora hasta la prctica de la puesta en marcha de la Arquitectura *AMP. Porqu llamarla *AMP? La A significa Apache, la M Mysql y la P PHP. Se puede encontrar definido tambin el sistema operativo substituyendo el * por una L (Linux), por una W (Windows) o por una M (Mac OS). Con las siglas completas *AMP, incluira LAMP, WAMP y MAMP. Este curso trata de explicar las cosas comunes y especficas de varias de estas arquitecturas.

1

Descripcin de la arquitectura Apache, PHP y MYSQL

Descripcin de la Arquitectura Apache, PHP y MYSQL

2.1. Introduccin a la plataforma LAMPBienvenidos a esta documentacin sobre La Teora de funcionamiento de la plataforma LAMP. Espero que os sea grata y que os ayude a entender mejor el desarrollo de aplicaciones mediante los ordenadores con GNU/Linux.

2.1.1. Principios de la arquitectura cliente servidorA fin de poder entender correctamente el comportamiento de la arquitectura LAMP es importante describir el funcionamiento de la arquitectura de aplicaciones ClienteServidor. En Dicha arquitectura disponemos de dos tipos de agentes: Cliente: Ordenador o programa informtico que solicita informacin.

3

EXPERTO EN DESARROLLO DE SOLUCIONES CORPORATIVAS EN SOFTWARE LIBRE

Servidor: Ordenador o programa informtico que dispone de informacin. Dentro de este tipo de arquitectura podemos definir distintos tipos de Agentes dependiendo del tratamiento que se realice con la informacin: Activo: El Agente realiza un procesado activo de la informacin. Calculo intensivo, clculo de la presentacin grfica de la informacin, acceso a datos son algunas de las tareas tpicas de un Agente Activo. Pasivo: El agente se limita a manejar informacin en bruto o preprocesada.

2.1.2. Tipos de Arquitectura Cliente ServidorA continuacin se detallan los distintos tipos de Arquitecturas de Cliente - Servidor: Cliente Activo, Servidor Pasivo: El cliente realiza la practica totalidad del trabajo de procesado de la informacin. Ejemplo: Google Earth. Cliente Pasivo, Servidor Pasivo: Tanto el cliente como el Servidor simplemente pasan informacin. Ejemplo: Gateways de comunicaciones VoIP. Cliente Pasivo, Servidor Activo: El Servidor realiza todo el trabajo de procesado y el cliente simplemente presenta los datos. Ejemplo: Servidores de terminales. Cliente Activo, Servidor Activo: Tanto el Servidor como el Cliente procesan la informacin. Ejemplo: Servicios de Correo Electrnico.

2.2. La Arquitectura LAMP2.2.1. Introduccin a LAMPDependiendo de la aplicacin LAMP que el tipo de arquitectura puede variar, pero por simplicidad en el presente manual slo va a tratarse del Tipo Cliente Activo - Servidor Activo.

2.2.2. Glosario de TrminosA continuacin se detallan un glosario de trminos que permiten entender mejor la arquitectura LAMP: HTML: Hyper Text Markup Language. Lenguaje que permite definir el contenido y su presentacin para que el cliente web permita visualizar la informacin que contiene. Dicho lenguaje permite la inclusin de medios (grficos, sonidos, vdeos, etc.). Etiqueta o TAG: Unidad mnima de representacin en el Lenguaje HTML. Permite definir: prrafos, tablas, enlaces, imgenes, etc... CSS: (Cascading Style Sheets) Hojas de Estilo en Cascada . Permiten generar clases de estilo que se pueden aplicar a etiquetas HTML. Dichas hojas de estilo se pueden definir dentro de los ficheros HTML o incluso referenciarlos. Los TAG permiten agrupar cambios en las propiedades de un determinando TAG. Java Script (JS): Lenguaje de programacin que permite en la parte cliente procesar y realizar cambios en la presentacin. Dichos Scripts suelen estar referenciados desde el fichero HTML.

4

Descripcin de la arquitectura Apache, PHP y MYSQL

Pgina Web: Unidad de contenido de un servidor web. Normalmente est compuesta de un fichero formateado en HTML y sus referencias. Sitio Web: Conjunto de reglas del Servidor Web y las pginas Web que lo componen. Servicio DNS: Servidor que entre otras funciones permite traducir nombres de mquinas en Internet a direcciones IP. Navegador Web: Cliente que permite consultar a Servidores Web y presentar la informacin HTML. Ejemplos: Firefox, Konqueror, Opera, Internet Explorer, etc. Plugin Web: Extensin de un navegador web que permite aadir una funcionalidad a un navegador web, por ejemplo la visualizacin de elementos no estndar. Ejemplos: Flash Player, JVM, etc. Apache: Servidor Web Libre. Dicho servidor es altamente flexible y actualmente el 60 % de los sitios web funcionan con Apache. Mdulo de Apache: Conjunto de funcionalidades agrupadas que permiten extender el tratamiento de la informacin por parte del servidor Web Apache. URL: Uniform Resource Locator. Definicin del acceso a un recurso. El concepto de URL ha sido incorporado dentro del ms general de URI (Uniform Resource Identifier - Identificador Uniforme de Recurso), pero el trmino URL an se utiliza ampliamente. La URL est dividida en tres partes: Nombre del Servidor Web, Recurso a acceder y Parmetros GET. Mtodo GET: Forma de paso de parmetros mediante URL. Mtodo POST: Forma de paso de parmetros mediante formulario (normalmente). PHP: PHP Hypertext Pre-processor. es un lenguaje de programacin usado generalmente para la creacin de contenido para sitios web. PHP est preparado para funcionar como un mdulo de Apache (y otros servidores Web). Direccin IP: Identificativo nico de un interfaz de red basado en el Protocolo IP. SGBD: Sistema de Gestin de Bases de Datos. Son un tipo de software muy especfico, dedicado a servir de interfaz entre la base de datos, el usuario y las aplicaciones que la utilizan. Se compone de un lenguaje de definicin de datos, de un lenguaje de manipulacin de datos y de un lenguaje de consulta. En los textos que tratan este tema, o temas relacionados, se mencionan los trminos SGBD y DBMS, siendo ambos equivalentes, y acrnimos, respectivamente, de Sistema Gestor de Bases de Datos y DataBase Management System -su expresin inglesa.SQL: Lenguaje de Consulta Estructurado (Structured Query Language). Es un lenguaje declarativo de acceso a bases de datos relacionales que permite especificar diversos tipos de operaciones sobre las mismas. Auna caractersticas del lgebra y el clculo relacional permitiendo lanzar consultas con el fin de recuperar informacin de inters de una base de datos, de una forma sencilla.

2.2.3. Elementos de la Arquitectura LAMPA continuacin se detallarn los elementos de una arquitectura LAMP: Cliente Web/DNS: Navegador Web. Por ejemplo: Firefox. Servidor DNS: Conversor de nombres a IPs. Por ejemplo: BIND. Servidor Web: Almacn y procesador de la Informacin Web. Apache en nuestro caso. Mdulo de PHP: Mdulo para apache que permite procesar ficheros escritos en el Lenguaje PHP. Por ejemplo: PHP5 Aplicacin LAMP: Conjunto de ficheros PHP que componen una Aplicacin Web. Por ejemplo: PhpMyAdmin5

EXPERTO EN DESARROLLO DE SOLUCIONES CORPORATIVAS EN SOFTWARE LIBRE

SGBD: Sistema de gestin de bases de datos que permitir almacenar la informacin dinmicamente. En nuestro caso Mysql.

2.2.4. Proceso de una Peticin LAMPA continuacin se detallarn los pasos que realizan el cliente y el servidor de una arquitectura LAMP 1. Cliente Web: Solicitud de conversin del nombre de una mquina al Servidor DNS. Por ejemplo: www.google.es 2. Servidor DNS: Recepcin y tratamiento de la solicitud. Una vez recibida la peticin realiza las consultas necesarias para resolver y obtener la direccin IP. 3. Servidor DNS: Devuelve la direccin IP que corresponde al Servidor Web al navegador Web. 4. Cliente Web: Realiza la solicitud de informacin mediante una URL(Mtodo GET) o un formulario (Mtodo POST). Dicha solicitud incluye: la direccin IP del servidor web, el puerto del servidor web, URL y parmetros POST(esta slo en el caso de formularios normalmente). 5. Servidor Web: Control de Acceso, Anlisis de la peticin y localizacin del recurso. 6. Servidor Web: Seleccin del mdulo de PHP para interpretar el fichero PHP elegido. 7. Mdulo de PHP: Ejecucin del programa PHP elegido. 8. Aplicacin PHP: Procesado de los parmetros GET o POST. 9. Aplicacin PHP: Realizacin de las llamadas SQL al Servidor de SGBD. 10. SGBD: Recogida y procesado de la peticin SQL. 11. SGBD: Retorno de los datos solicitados. 12. Aplicacin PHP: Procesado de los datos devueltos por el SGBD y Generacin del HTML resultante. 13. Modulo PHP: Paso del HTML resultante a Apache. 14. Apache: Devuelve el HTML al cliente Web. 15. Cliente Web: Presentacin del HTML resultante, CSS y elementos relacionados y ejecucin del Javascript. A continuacin se puede visualizar un grfico que resume dichos pasos:

6

Descripcin de la arquitectura Apache, PHP y MYSQL

2.3. Pasos de la Instalacin de un Entorno LAMP2.3.1. Instalacin y configuracin o acceso a un Servidor DNSDebido a que la instalacin y configuracin especficas dependen del sistema operativo y la versin escogida, se van a enumerar los pasos necesarios para su configuracin, que son los siguientes: 1. Alta de un dominio. Ejemplo: midominio.com 2. Alta de las mquinas que pertenecen al dominio. Ejemplo: servidor.midominio.com. en este paso se relaciona la direccin IP de la mquina con el nombre dentro del dominio. 3. Alta de los Alias necesarios: www, ftp, correo, etc. Se relacionan los nombre reales de las mquinas con un alias o apodo de la mquina. 4. Esperar de 24 a 48h a que se replique la informacin entre los Servidores DNS de todo el mundo. 5. Realizar una consulta de DNS para ver si ha funcionado correctamente la operacin para cada una de las mquinas y alias creados. 6. Instalacin y configuracin de Apache.

7

EXPERTO EN DESARROLLO DE SOLUCIONES CORPORATIVAS EN SOFTWARE LIBRE

Debido a que la instalacin y configuracin especficas dependen del sistema operativo y la versin escogida, se van a enumerar los pasos necesarios para su configuracin, que son los siguientes: 1. Configuracin de los parmetros bsicos: Directorio principal de directorio, reglas de acceso por defecto, numero de hijos, memoria ram, nmero mximo de peticiones, etc... 2. Alta y Configuracin de los mdulos bsicos necesarios: redireccin, proxy, configuracin, etc... 3. Prueba de funcionamiento del servidor web con un fichero HTML de ejemplo. 4. Instalacin y Configuracin del mdulo de PHP: inclusin del mdulo, asociacin del tipo de fichero al mdulo, configuracin de tamao mximo de upload, memoria por hilo php, acceso a datos, etc... 5. Alta de un sitio web virtual que permita manejar el sitio principal del dominio. Ejemplo: www.midominio.com relacionado con el directorio /var/www/midominio.com/ 6. Configuracin de las reglas especiales para el sitio principal del dominio: control de acceso, etc. 7. Prueba de funcionamiento de PHP con un fichero de ejemplo.

2.3.2. Instalacin y configuracin de un SGBD: MysqlDebido a que la instalacin y configuracin especficas dependen del sistema operativo y la versin escogida, se van a enumerar los pasos necesarios para su configuracin, que son los siguientes: 1. Configuracin bsica del servidor Mysql: memoria principal disponible, tipos de tabla disponibles, memoria destinada a cache, etc... 2. Insercin de usuarios bsicos. 3. Creacin de una base de datos de ejemplo. 4. Creacin de una tabla de ejemplo. 5. Modificacin de un usuario para tener acceso a la base de datos creada. 6. Prueba de funcionamiento con un cliente de Mysql.

2.3.3. Instalacin y configuracin de una aplicacin LAMPDebido a que la instalacin y configuracin especficas dependen del sistema operativo y la versin escogida, se van a enumerar los pasos necesarios para su configuracin, que son los siguientes: 1. Creacin de una base de datos en el servidor para la aplicacin. 2. Colocacin de las tablas principales necesarias para el funcionamiento de la aplicacin LAMP. 3. Instalacin de la aplicacin web en el sitio web principal. 4. Configuracin de la aplicacin web. 5. Prueba de la aplicacin web

8

INTRODUCCION A LA INSTALACIN DE LAMP

Introduccin a la Instalacin de LAMP

3.1. IntroduccinEn el presente manual se van a definir a fondo aquellas tareas necesarias para poner en funcionamiento una plataforma LAMP. Por simplicidad el manual est dedicado a su instalacin y configuracin en una OpenSuse 10.2.

3.2. Configuracin de Servicios LAMP3.2.1. Configuracin de un Servidor DNSDebido que las distintas posibilidades a la hora de gestionar un dominio son tan variadas, en el presente manual se va a suponer que se dispone de un dominio contratado y que se sabe la direccin ip de cada una de las mquinas que van a ir dentro del dominio.

3.2.2. Configuracin de un dominio DNS

9

EXPERTO EN DESARROLLO DE SOLUCIONES CORPORATIVAS EN SOFTWARE LIBRE

Una vez que hayamos accedido a la herramienta de configuracin dispondremos de un interfaz a travs del cual podremos modificar las entradas del dominio. Disponemos bsicamente de tres tipo de entradas: A o entradas de maquinas (relacionan una ip con un nombre dentro del dominio), CNAME relacionan mediante un alias un nombre de mquina con otro nombre y MX que relaciona el servidor por correo por defecto con un nombre de mquina. A continuacin de puede ver una figura en el que se ve cmo configurar dichas entradas: Una vez guardados los cambios espere entre 24 y 48h a que dichos cambios surtan efecto. Despus de que haya pasado dicho plazo, pruebe a entrar mediante el navegador web para ver si funciona correctamente.

3.3. Instalacin de LAMPA continuacin se detallarn los distintos tipos de instalaciones de un Entorno *AMP.

3.3.1. Instalacin de *AMP en Windows con XAMPPEn este punto detallaremos la instalacin de XAMPP para Windows. La versin de XAMPP para Windows est disponible en: http://www.apachefriends.org/en/xampp-windows.html Elija la versin en Formato EXE para su descarga, actualmente est disponible en: http://www.apachefriends.org/download.php?xampp-win321.7.3.exe Descargue el fichero en su ordenador y ejecute el instalador como administrador del sistema. Una vez en el instalador, seleccione el directorio de instalacin y pulse en instalar. Este proceso puede tardar unos minutos y depende de la potencia de su ordenador. Durante el proceso, tal vez le pregunte si desea activar los servicios relacionados con Apache, Mysql, etc... Inicialmente le diremos que no es necesario, ya que siempre podremos colocar los servidores como servicios en cualquier momento. Despus nos preguntar si deseamos arrancar el XAMPP Control Panel. No es necesario arrancarlo, pero aprovecharemos para hacerlo, para as explicar su funcionamiento.

3.3.2. El panel de Control de XAMPPHay varias maneras de arrancar y parar los servidores: Mediante los script de arranque y parada Mediante el panel de control de XAMPP

Lance el Panel de Control de XAMPP (si no lo ha hecho todava) mediante el icono en su escritorio. Cuando haya arrancado, pulse en el botn Start de Apache y Mysql. Si, por lo que sea, el arranque de apache falla, el texto Running al lado de la fila de Apache desaparecer. Esto puede ser debido a que algn programa est haciendo uso del puerto 80 de su mquina.

10

INTRODUCCION A LA INSTALACIN DE LAMP

3.3.2.1. Cree Una base de datos de prueba en MysqlPara crear dicha base de datos puede utilizar el phpmyadmin instalado con XAMPP. Para ello siga lo siguientes pasos: Vaya desde su navegador web a la siguiente direccin: http://localhost Podr ver La pantalla principal de XAMPP, donde puede seleccionar su idioma. En el men de la derecha seleccione PhpMyAdmin Una vez que PhpMyAdmin se haya abierto en su navegador, seleccione su idioma. Introduzca los datos de acceso. Si no se han configurado usuarios, slo existir el usuario root. As que ponga en Nombre de usuario root y la contrasea djela vaca. Pulse en continuar. Una vez est dentro (logueado) en PhpMyAdmin, encontrar un formulario para crear una nueva base de datos. Introduzca el nombre de la base de datos. En el campo Collation seleccione utf8_unicode_ci. Haga clic en el botn Crear Debera ver la base de datos a su izquierda. Seleccione la nueva base de datos. Trabaje con ella :)

3.3.3. Instalacin de una LAMP en OpenSuse 10.2En OpenSuse 10.2 esta tarea es muy sencilla, describimos ahora todos los pasos: 1. Entre en el Men de Acciones (KickOff) en el apartado de PC y pulse en el Configurador de administracin YAST. 2. Valdese como Superusuario. En cuanto intente entrar en YAST deber introducir la contrasea del SuperAdministrador (root) y pulsar en el botn Aceptar. 3. En la pestaa de Software pulse en el icono de Instalar/desinstalar Software. 4. En la pestaa de Software pulse en el icono de Instalar/desinstalar Software. 5. Una vez haya entrado en la herramienta se actualizarn los listado de Software disponibles para su manejo. 6. Cuando haya terminado de gestionar los listados, aparecer una nueva pantalla. En la parte superior derecha de la pantalla aparece una etiqueta llamada filtro y una lista desplegable. pulse en ella y seleccione Patrones. Aparecer un listado en la parte de la izquierda. 7. En dicho listado aparecen grupos de paquetes con funcionalidades acompaados de una caja de seleccin al lado izquierdo de cada uno de ellos. Para seleccionar alguno de ellos pulse con el botn izquierdo en cualquiera de las cajas de seleccin, esta caja aparecer marcada con un smbolo de visto bueno, tambin ver que en la parte de la derecha de la pantalla principal, los paquetes individuales aparecern todos seleccionados. Para de-seleccionar un patrn repita la misma operacin, ver que el smbolo de visto bueno desaparecer de la caja de seleccin. 8. Seleccione el patrn denominado Servidor Web y LAMP. 9. Pulse en el botn Aceptar. Aparecer la pantalla de descarga de paquetes desde los medios.

11

EXPERTO EN DESARROLLO DE SOLUCIONES CORPORATIVAS EN SOFTWARE LIBRE

10. Introduzca el CD o DVD de instalacin de OpenSuse 10.2. y pulse en el botn Ok. Se iniciar la descarga de paquetes individuales. 11. A continuacin se configurarn los paquetes y servicios con YAST. 12. A continuacin pulse en el botn No en el cuadro de dilogo. 13. Se cerrar la venta de instalar y Desinstalar paquetes. 14. A continuacin pulse en el botn No en el cuadro de dilogo. 15. Se cerrar la venta de instalar y Desinstalar paquetes. 16. A continuacin necesita activar el servidor Apache y el PHP. Para lo cual debe entrar en YAST en la pestaa Servicios de red en el icono Servidor HTTP. 17. Despus aparecer la primera pantalla de configuracin de Apache. En ella debern aparecer: el puerto por el que escuchar las peticiones web (por defecto 80) y las direcciones ip por las que se permite que escuche el servidor web (127.0.0.1 por defecto). 18. Pulse en el botn Siguiente. 19. A continuacin deber marcar (si no lo est hecho ya) el cuadro de seleccin al lado de Habilitar lenguaje de guiones PHP5. 20. Pulse en Siguiente. 21. A continuacin puede ser los parmetros bsicos del servidor, tales como directorio principal, direccin de correo del administrador, etc. Pulse en Siguiente. 22. Despus podr ver los Sitios Web Virtuales que maneja el servidor, si no desea manejar ninguno ms pulse en Siguiente. Si desea configurar un nuevo Sitio Web Virtual pulse en aadir y siga los siguientes pasos. 23. A continuacin introduzca los parmetros de configuracin del nuevo servidor virtual: nombre del servidor, directorio principal del Sitio Web Virtual y el correo del administrador del sitio web virtual. Pulse en el botn Siguiente. 24. A continuacin introduzca otros parmetros de configuracin del nuevo servidor virtual: acceso a CGI, HTML pblico, etc.. 25. Pulse el botn Siguiente. 26. Despus de aadir el nuevo sitio Web Virtual. Pulse en Siguiente. 27. Despus de configurar los Sitios Web Virtuales, marque la opcin Iniciar el servidor web en el arranque. Pulse en Siguiente. 28. A continuacin se configurar el servidor web y se rearrancar si es necesario. Pulse en Finalizar. 29. A continuacin introduzca la url en el navegador web y compruebe que se visualiza correctamente. 30. Ahora es necesario comprobar si el mdulo de php funciona correctamente, para lo cual es necesario crear un fichero index.php en el directorio principal del dominio del Sitio Web Virtual. Para ello necesita abrir una terminal con permisos de sper-administrador, esto se puede conseguir si va al Men de Acciones, pestaa Aplicaciones, submen Sistema, submen Terminal, icono Programa de terminal - modo de superusuario. Le solicitar la contrasea del administratorio (root), introduzcala y pulse en el botn OK. 31. Una vez abierta la terminal ejecute los siguientes comandos:echo "" >/srv/www/htdocs/index.php chmod 777 /srv/www/htdocs/index.php

32. Evidentemente la ruta debe coincidir con la localizacin del directorio raz del Sitio Web Virtual

12

INTRODUCCION A LA INSTALACIN DE LAMP

33. Despus abra su navegador e introduzca la url seguido de /index.php En nuestro ejemplo www.midominio.com/index.php Si se abre correctamente podr ver la informacin del mdulo php instalado en su Apache.

3.3.3.1.

Configuracin de Mysql

A fin de poder arrancar automticamente en el arranque el servidor Mysql es necesario modificar los niveles de arranque. Para lo cual entre en YAST y vaya a la pestaa Sistema y entre en el editor de niveles de ejecucin. Los pasos a seguir son los siguientes: 1. A continuacin selecciones el servicio Mysql con el botn derecho del ratn y pulse el botn Activar situado abajo a la izquierda de la pantalla. 2. Una vez activado el servicio saldr una pantalla con el resultado (debera marcar un xito en el proceso de activacin). Pulse en el botn Ok. Despus pulse en el botn finalizar. 3. Despus pulse el botn Finalizar para que se apliquen los cambios. Cuando salga la pantalla de validacin pulse en Si.

Sera conveniente recordar que el usuario por defecto de Mysql tras la instalacin es root y no dispone de una contrasea asignada. A fin de poder gestionar correctamente Mysql pasaremos al siguiente paso, Instalar la aplicacin Web PhpMyAdmin

3.3.3.2. Instalacin PhpMyAdmin

y

configuracin

de

Para poder gestionar de una manera sencilla Mysql, instalaremos PhpMyAdmin, una herramienta de gestin de Mysql va web. As mataremos dos pjaros de un tiro. Los pasos a seguir son los siguientes: 1. Descargarse la ltima versin de PhpMyAdmin, cuando nos pregunte el navegador qu hacer con el le diremos que queremos guardarlo en el disco duro, en el escritorio por ejemplo. 2. Una vez descargado el fichero deberemos descomprimirlo, para lo cual pulsamos sobre l para abrirlo y descomprimirlo tambin en el escritorio 3. Despus debe copiar el contenido de la carpeta que incluya el index.php al directorio /srv/www/phpmyadmin 4. Debe recordar que para hacer esto es necesario realizar esta operacin como SuperAdministrador del sistema. 5. Despus debe modificar los permisos de la carpeta para que el usuario root tenga permisos de acceso a los ficheros. 6. Despus debe comprobar mediante el navegador que tiene acceso a la url http://localhost/phpmyadmin.index.php. En nuestro ejemplo: http://www.midominio.com/phpmyadmin/index.php

13

HERRAMIENTAS DE DESARROLLO DE PROYECTOS PARA PHP

Herramientas de Desarrollo de proyectos para PHP

4.1. Eclipse y extensiones4.1.1. Eclipse el IDEEclipse es una de las mejores y ms extensibles herramientas se desarrollo disponibles actualmente. Debido a a facilidad para poder generar extensiones de funcionalidad y visualizadores, dispone de distintas distribuciones adaptadas a las distintas necesidades del proceso de generacin de un proyecto. En el caso que nos ocupa, hablaremos principalmente de la distribucin especfica de J2EE.

4.1.2. Instalacin de Eclipse para PHPDescargar e instalar el JRE para http://www.java.com/es/download/manual.jsp nuestro sistema operativo:

15

EXPERTO EN DESARROLLO DE SOLUCIONES CORPORATIVAS EN SOFTWARE LIBRE

Descargar e instalar la versin de Eclipse para desarrolladores PHP desde: http://www.eclipse.org/downloads/

4.1.3. Gestin de versiones: SVNEn la comunidad de software libre colaboran en la construccin de cdigo y documentos muchas personas. El trabajo de construccin de cdigo de manera colaborativa se puede realizar gracias a un eficiente uso de sistemas de control de versiones. Un sistema de control de versiones es fundamentalmente un software con una metodologa que permite almacenar los elementos que se vayan a gestionar (texto, imgenes) en un depsito comn y poder hacer cambios sobre los mismos. saber qu cambios se han realizado en los elementos y quin los ha realizado. Si adems son ficheros de texto podemos saber que se ha cambiado con exactitud. volver en algn punto hacia atrs el cdigo, retornar a un estado anterior. Adems se pueden gestionar ramificaciones en el cdigo para trabajar en funcionalidades nuevas sin romper la aplicacin que funciona, importar cdigo de depsitos independientes, hacer marcas de versiones que sean hitos importantes. Con todo ello podemos llegar a tener una lnea temporal (ms que una lnea es un rbol) donde podemos visualizar cual ha sido la evolucin de nuestro cdigo en cada momento. Existen muchos gestores de versiones de cdigo: Git, Mercurial, Bazaar, pero quizs uno de los ms utilizados sea Subversion http://subversion.tigris.org/. Subversion surge de replantear desde cero otro sistema ms antiguo llamado CVS de manera que el nuevo sistema no tuviera lo mismos fallos que el anterior pero si todo lo bueno que haba aportado. Tanto Subversion como CVS son sistema de control de versiones centralizados, donde hay un slo deposito que almacena el cdigo. En contra punto tenemos que Git y Mercurial son distribuidos y el depsito completo es la suma de todos los depsitos parciales de los participantes. Crear un depsito o repositorio es simplemente indicar al programa que determinado directorio va a ser el almacn de cdigo. El gestor de versiones almacenar meta-datos de cambios, fechas y autores en ficheros y carpetas no visibles dentro de este directorio. Si queremos que el repositorio sea pblico adems deberemos configurar Apache para que lo sirva mediante Webdav+svn. El depsito creado puede estar vaco, pero a partir de aqu nosotros trabajaremos en una copia desde la que nos bajaremos (update) y subiremos (commit) los cambios. Habitualmente se comienza un proyecto creando 3 directorios dentro del depsito: trunk/tronco, tags/etiquetas y branches/ramas. En trunk se almacenara el desarrollo principal del proyecto. En determinado momento puede que tengamos nuestra aplicacin funcionando como queremos (a falta de ms cosas quizs) pero nos interesa marcar que esta versin en concreto est funcionando. Estas marcas se guardan en tags/etiquetas. La mayora de los contribuidores a tu proyecto tendrn su propia carpeta en branches/ramas para hacer sus desarrollos. Cuando estn seguros de que todo va a ir bien es cuando se hace un merge/fusin con el trunk/tronco. Los branches tambin son muy utilizados para hacer experimentos o pruebas que pueden romperlo todo. En la mayora de los casos los commits, updates y merges mezclan correctamente el cdigo nuevo con el que exista, integrando solo los cambios (tambin se dice diff o delta). Pero se puede dar el caso de el sistema no pueda hacer la integracin y entonces es cuando se produce un conflicto que debe ser resuelto por el desarrollador a mano.

16

HERRAMIENTAS DE DESARROLLO DE PROYECTOS PARA PHP

4.1.3.1.

Primeros pasos con Subversion

La manera de ms rpida de ponerse a funcionar con Subversin es mediante la lnea de comandos. En todo caso existen muchos programas libres para la gestin mediante interfaz visual del repositorio y continuamente se estn lanzando plugins para programas tanto editores de cdigo como de otro mbito que permiten hacer commits, updates y diffs de esta tercera aplicacin. Puedes descargar Subversion para Ms Windows de aqu: http://www.collab.net/downloads/subversion/, pulsando en el primer botn de DOWNLOAD. Cuando termine la descarga instala la aplicacin. Si te pide reiniciar el sistema haz lo. Los usuarios de GNU/Linux, BSDs y MacOSX podrn instalar el software segn el mtodo habitual de su distribucin. Para verificar que la instalacin ha tenido xito abre la lnea de comandos y escribe svn luego pulsa intro. Si te aparece algo similar a lo siguiente es que todo ha ido bien. Type svn help for usage.

4.1.3.2.

Crear un repositorio

Vamos a crear nuestro primer repositorio. Para no complicar mucho las cosas en Ms Windows lo crearemos en la carpeta raz y en los UNIX en nuestro home: En Windows:cd c:\ svnadmin create reposvn

En UNIXcd svnadmin create reposvn

Ahora vamos a hacernos una copia del depsito vaco para continuar trabajando desde nuestra copia local. Lo primero es el lugar de origen y lo segundo es el destino.svn co file:///c:/reposvn/ copiasvn svn co file:///home/usuario/reposvn copiasvn

A partir de este momento trabajamos exclusivamente desde la copia. Crearemos la estructura inicial de carpetas recomendada: Creamos las carpetas trunk, branches y tags en la carpeta copiasvn con nuestro gestor de ficheros habitual. Estas carpetas todava no estn controladas por el sistema de gestin de versiones hasta que no hagamos el siguiente comando:cd copiasvn svn add trunk tags branches svn ci -m "subiendo estructura inicial"

Con el comando svn add estamos aadiendo estos tres directorios (podran ser ficheros de texto o imgenes o cualquier otro tipo de fichero) al control de versiones, pero todava se encuentran nicamente en nuestra copia local. Con svn ci subimos nuestros cambios de la copia local al depsito principal y mediante el parmetro -m mensaje estamos incluyendo un breve comentario entre las comillas para explicar porque hemos hecho esos cambios. Eso ayudara a otros desarrolladores, en un entorno colaborativo, a identificar tu contribucin. Para tener ms juego ahora nos haremos otra copia local: En Windows:svn co file:///c:/reposvn/ segundacopiasvn

En Unix:17

EXPERTO EN DESARROLLO DE SOLUCIONES CORPORATIVAS EN SOFTWARE LIBRE

svn co file:///home/usuario/reposvn segundacopiasvn

Como veremos ahora se nos bajan los directorios estructurales. Dentro de trunk creamos un fichero de texto que llamaremos LEEME. Si le pedimos a Subversin que nos diga el estado nos dir lo siguiente: Comando:svn status -u segundacopiasvn

Respuesta:? trunk/LEEME

La interrogacin ? indica los ficheros que no estn bajo el sistema de control. En lugar de la interrogacin tambin nos podra aparecer:M: el fichero o directorio ha sido modificado en local *: el fichero o directorio ha sido modificado en el depsito principal pero todava no nos hemos bajado los cambios. C: el fichero o directorio tiene un conflicto no resuelto. A: el fichero o directorio ha sido aadido pero todava no lo hemos subido al depsito principal D: el fichero o directorio va a ser borrado. I: el fichero o directorio es ignorado. !: un fichero o directorio que estaba siendo gestionado por el control de versiones a desaparecido. Si hacemos svn update se restablecer con la versin del depsito principal.

Vamos a aadir el fichero LEEME y subirlo al repositorio:svn add LEEME svn ci -m "necesitaba un fichero para escribir la ayuda" LEEME

Ahora vamos a la primera copia local que hicimos:svn status -u copiasvn

Veremos que est pendiente de ser actualizada.svn update copiasvn

y ahora en copiasvn/trunk aparecer el fichero LEEME que creamos como si furamos otro usuario en otra copia. En un entorno remoto con un depsito compartido es donde todo esto cobra sentido. Subversin permite operar de la misma manera accediendo mediante URLs http://example.com/reposvn/trunk en lugar de rutas a directorios y ficheros locales. Esto es lo bsico para comprender y empezar a trabajar con Subversion, segn la metodologa elegida o nuestra forma personal de trabajo se pueden hacer muchas cosas ms y es muy recomendable leer el manual oficial del equipo de desarrollo de Subversin ya que, como decamos, no solo se ofrece una herramienta con unas funcionalidades sino tambin una metodologa de trabajo. http://svnbook.red-bean.com/

18

HERRAMIENTAS DE DESARROLLO DE PROYECTOS PARA PHP

4.1.3.3. Instalacin de la extensin de SVN para Eclipse Comience la instalacin desde el men ayuda de eclipse, Ayuda/instalar actualizaciones/encontrar e instalar. Seleccione que quiere buscar nuevas funcionalidades para instalar. Seleccione nuevo sitio de actualizaciones e introduzca la siguiente URL: http://subclipse.tigris.org/update_1.6.x Seleccione el nuevo sitio introducido. Seleccione el meta-paquete subeclipse. Acepte la licencia. Instale. Espere a que termine de descargar e instalar la extensin. Seguramente le pida reiniciar eclipse.

4.2. Firefox y sus extensiones4.2.1. Referencias Web developer: tutorial Yslow Firebug

4.2.2. ContenidoDe cara a poder presentar Firefox como una herramienta til para desarrolladores web. Indicaremos la principales extensiones disponibles que permiten mejorar incluso depurar aplicaciones web, tanto a nivel de funcionalidad como a nivel de estndares de calidad y accesibilidad. En esta parte del tema presentaremos 3 extensiones: Web Developer, Yslow y Firebug.

4.2.2.1.

Web Developer

Link de Descarga: https://addons.mozilla.org/es-ES/firefox/addon/60 Una de las herramientas mas potente que puede ofrecer Firefox es Web Developer. Este agregado pone a disposicin una serie de herramientas fundamentales para cualquier diseador/desarrollador web. En este tutorial vamos a desglosar generalmente todas las funciones que nos ofrece web developer, quien puede convertirse en un gran compaero de trabajo.

19

EXPERTO EN DESARROLLO DE SOLUCIONES CORPORATIVAS EN SOFTWARE LIBRE

La primer herramienta que nos ofrece es Disable, esta permite activar y desactivar funciones dinmicas de los sitios webs como puede ser Java, Javascript en su totalidad o solo alarmas estrictas y la cache. tambin te permite desactivar el color de una pagina, pop-ups, fuentes mnimas entre otras cosas, esto vendra a ser como un depurador para comprobar funcionalidades dinmicas. Continuando con este apartado nos encontramos con Cookies, donde su palabra lo dice todo. Podemos gestionar todo tipo de pruebas, como desactivarlas, borrarlas, ver su informacin y mas. Una vez que comprobamos esto entramos en el apartado de diseo con la opcin CSS. Aqu tenis la posibilidad de desactivar las hojas de estilos por partes, ver su informacin, editar, ver por tipo de medio. Forms comprueba tus formularios mostrndote sus elementos ocultos, sus etiquetas Con Images podes deshabilitar las mismas, mostrar sus atributos ALT, ver sus dimensiones, rutas, esconderlas y mas Information te permite ver informacin especifica sobre las diferentes etiquetas en si es lo que hace. Miscellaneus te permite ver y mover lineas guas, medir zonas o imgenes con una regla, mostrar elementos ocultos, editar HTML, marcar los links como visitados y mas Outline es una de las herramientas esenciales, con este men podes ver el tamao de los diferentes elementos en tu pagina a travs de una linea. Podes ver lo que ocupa tus cabeceras, frames, elementos de bloques y mas. Resize su nombre lo dice todo, con esta opcin podes ver tus paginas en diferentes resoluciones y realizar Zoom. En Tools se encuentran Validadores, a travs de este men podes validar tus paginas en la W3C, WAI, buscar errores java y tambin validar css y html de forma local entre mas opciones. View Source te permite ver el cdigo puro y duro de la pagina en visualizacin, ver cdigo generado, de frames y mas. Por ultimo tenemos el botn Options, el cual te permite modificar muchos parmetros de este fabuloso agregado que es una herramienta fundamental para cualquier webmaster. debug Al lado derecho de Options est disponible este debugger que te avisa sobre los errores de Javascript y CSS, as como tambin el modo actual del navegador. Simplemente funcional y perfecta en su desempeo, Web Developer recorre cada rincn de tu pagina web haciendo que el anlisis y la bsqueda de errores no sea para nada estresante.

4.2.2.2.

Yslow

Link de Descarga: https://addons.mozilla.org/es-ES/firefox/addon/5369 Las opciones de Yslow son variadas pero cabe destacar las siguientes: Valoracin del grado de accesibilidad Descripcin de los elementos mostrados

20

HERRAMIENTAS DE DESARROLLO DE PROYECTOS PARA PHP

JS CSS Imgenes DOM Tiempos de carga

4.2.2.3. 4.2.2.4. Firebug

Link de Descarga: https://addons.mozilla.org/es-ES/firefox/addon/1843 Nos Permite: Inspeccionar y editar el HTML, JS y CSS Visualizacin del DOM Ver los recursos cargados Depuracin de AJAX.

4.2.3. Mysql WorkBench4.2.3.1. Uso de Mysql WorkBench

La compra de MySQL AB por parte de Sun Microsystems y posteriormente por parte de Oracle, es sin lugar a dudas un reconocimiento al buen trabajo hecho por la comunidad de MySQL, para llevar a esta base de datos a ser una de las mejores bases de datos open source que se encuentre en el mercado, y que hoy por hoy es la base de datos predilecta por los desarrolladores, e incluso grandes empresas como Suzuki, Sagem, o la misma Adobe o sitios como Yahoo! Finance, para bases de datos transaccionales o bodegas de datos (Data Warehousing).MySQL provee entre sus herramientas, una denominada MySQL WorkBench la cual nos permite desde una ambiente grfico, disear un modelo E-R de una base de datos y luego crear la base de datos, como tal en una base de datos MySQL. Para este tutorial es necesario tener instalado: MySQL 5.x o superior MySQL WorkBench 5.x.x NOTA: En esta demo, solo se mostrar el funcionamiento de MySQL Workbench, pero no la instalacin de ste ni la de MySQL Server. El servidor Mysql puede estar instalado en cualquier equipo y/o sistema operativo soportado (Windows, Linux, Aix, etc). MySQL Workbench solo se encuentra disponible para Windows. En el ejemplo crearemos una base de datos muy sencilla, la cual no representa un ejemplo real. Simplemente es para probar las caractersticas. Primero creemos el esquema test, haciendo clic en el smbolo +. Abajo se abre una pestaa en que nos pregunta el nombre del esquema (test) y el idioma del esquema, el cual se recomienda dejar por default como se muestra

21

EXPERTO EN DESARROLLO DE SOLUCIONES CORPORATIVAS EN SOFTWARE LIBRE

en la figura. Si la aplicacin pregunta si desean renombrar todos los objetos, seleccionen Si. Ya creado el esquema, procedemos a crear las tablas. Existen dos formas, aunque muy similares de crearlas. La primera es desde la pantalla en la que estamos, la otra es mediante la ventana visual, en la cual podremos adems, realizar las relaciones entre las tablas. Pero primero lo primero; las tablas. Verifica que ests en el esquema test y luego haz doble clic en el icono de Add Table. Al hacer clic en esta opcin, se despliega al lado un icono representando la nueva tabla, mientras que debajo se abre una nueva pestaa, en la cual podemos editar todo al respecto de las tablas haciendo (Columnas, llaves, triggers, etc) clic en cada una de las pestaas ubicadas en la parte inferior de esta nueva pestaa. Nota: los triggers solo estn disponibles a partir de MySQL 5. Cualquier tabla con triggers generada en Workbench arrojar un error cuando se corra en una versin inferior a MySQL 5.0 Agregaremos un par de columnas a la tabla: Al hacer clic en la pestaa Columns, podemos editar todas las columnas de la tabla indicada. Podemos alterar el nombre, el tipo de dato, si es nulo o no (NN) y si es Auto incremental (AI), obviamente este ltimo es slo para datos de tipo numrico, De igual forma podemos especificar un valor por default para la columna. En la parte derecha, inmediatamente podemos indicar si la columna seleccionada hace parte de la llave primaria (PRIMARY KEY), si es UNSIGNED o ZEROFILL para las variables numricas y si la variable es de tipo carcter, podemos especificar si es BINARY. Ahora pasemos a crear una tabla por medio de un diagrama E-R. En la parte superior observamos la opcin Add Diagram. Hacemos doble clic sobre ella. Luego se abre una nueva pestaa en la cual encontramos un grid. A la izquierda, encontramos una barra de herramientas, desde la cual podremos crear tablas y vistas, adems de relaciones (1:1,1:n,n:m) y a la derecha un rbol con los objetos de nuestro esquema (tablas, vistas, etc). De esa ventana, seleccionamos la tabla que creamos y la arrastramos hasta el grid. Luego hacemos clic derecho y seleccionamos Edit table, abajo nos muestra la pestaa para editar la tabla y crear columnas, llaves, etc. Buscamos a la izquierda el icono que nos permite crear una nueva tabla. Hacemos un clic en el icono y luego un clic en el grid. Editamos las segunda tabla y ahora haremos una relacin muchos a uno. Seleccionamos el icono, y luego cada una de las tablas (primero la de muchos y luego la de uno). En mi caso, la tabla de muchos es table1. Quedara algo as: Como ven el Workbench se apega a la teora relacional, donde en este caso la llave de a relacin uno pasa a la tabla de muchos. Igualmente si creamos una relacin M.N (muchos a muchos) generar una relacin entre las dos tablas. A continuacin viene la mejor parte de esta herramienta: la generacin del script SQL. Como ven, podemos exportar el diseo, incluso como una imagen en pdf, o en png, entre otros. La primera pantalla, nos muestra las opciones con las que queremos que se genere el script DDL. Luego seleccionamos la ubicacin destino del archivo que se crear. Luego nos muestra un resumen de lo que crear; usuarios, tablas, vistas, rutinas y triggers. Incluso si seleccionamos el botn Detailed Selection de cada seccin, podemos especificar an ms, por ejemplo, qu tablas deseo realmente exportar. Luego finalizar, y en la ruta que le hallamos indicado estar un archivo .sql, con nuestro script. Como se podrn dar cuenta Workbench, resuelve algunas limitantes en la comunidad open source de un buen software front-end para MySQL, y sobre todo de una herramienta que provea Forward Engineering, de una manera tan sencilla y bien ilustrada. Digamos que la nica limitante de WorkBench es su ausencia en otras plataformas.

4.2.4. Publicacin de Cdigo

22

HERRAMIENTAS DE DESARROLLO DE PROYECTOS PARA PHP

Una vez realizada toda la instalacin del Entorno *AMP, si necesitamos colocar cdigo accesible desde el servidor web, ser necesario colocar los ficheros y carpetas en un directorio que depende de la instalacin. En Linux normalmente ser /var/www , en Windows ser C:\XAMPP\htdocs

23

PHP BASICO

PHP BsicoLo primero de todo, que significa PHP?. En un principio, significaba Personal Home Page Tools pero ms tarde - en la versin 3 de PHP - se decidi usar un acrnimo recursivo (donde una de las letras hace referencia al propio acrnimo) cambiando el nombre a PHP Hypertext Preprocessor. Es un lenguaje orientado a crear pginas web dinmicas en las que podemos acceder a una base de datos. Es multiplataforma, esto es, puede funcionar en varios sistemas operativos, como Linux, Windows, o Mac OS. Adems es libre, por lo que se presenta como una alternativa de fcil acceso para todos (si ests interesado en conocer algo acerca del Software Libre puedes visitar este enlace de la wikipedia http://es.wikipedia.org/wiki/Software_libre). A diferencia de otros lenguajes de programacin como C, PHP es un lenguaje interpretado. Es decir, a la hora de ejecutar nuestro programa, no hace falta traducir nuestro cdigo a un lenguaje que entienda el ordenador (a este proceso de traduccin se le llama compilar), si no que hay un intrprete que es el que le dice al ordenador que es lo que queremos que haga. Esto hace que el desarrollo de aplicaciones sea ms rpido ya que no hace falta compilar cada vez que hagamos el ms mnimo cambio en nuestro cdigo. En nuestro caso, al cdigo al ser interpretado, tambin se le llama script. Como funciona el proceso de ejecucin de una web en php? 1. Pepito accede desde su navegador a nuestro documento con cdigo PHP. 2. El servidor recibe la peticin y localiza el documento.

25

EXPERTO EN DESARROLLO DE SOLUCIONES CORPORATIVAS EN SOFTWARE LIBRE

3. El servidor arranca el interprete que traduce nuestro cdigo y lo ejecuta. 4. El interprete, tras ejecutarlo, se lo devuelve al servidor, ya traducido en html. 5. El servidor manda el cdigo html al navegador web de Pepito para que vea nuestra web. A modo de curiosidad: aunque PHP se concibi originalmente para la creacin de pginas web, existe la posibilidad de usarlo como cualquier otro lenguaje de programacin interpretado como Python o Perl, si se ejecuta con su interprete desde lnea de comandos con phpCLI (php Command Line Interpreter o Interprete en Linea de Comandos de php), esto es, sin que tenga que haber una interaccin entre el servidor y un navegador web.

5.1. Estructura bsica de un fichero PHPNuestro script PHP puede estar slo en un fichero, pero tambin puede estar incrustado en cdigo HTML. Para que nuestro interprete pueda diferenciar qu es cdigo PHP y cdigo HTML, usamos las etiquetas . Estas etiquetas indican donde empieza y donde acaba nuestro cdigo PHP. Tambin se puede usar exclusivamente siempre y cuando, en nuestro servidor la directiva short_open_tag est activada. Es mas podramos prescindir de la etiqueta ?> si en nuestro fichero slo vamos a usar cdigo php. Veamos un ejemplo. Tranquilo/a si no entiendes nada de lo que hay a continuacin, ya lo veremos ms tarde.

Como ves, se han colocado las etiquetas y dentro nuestro script. En este caso si ejecutamos este script, el resultado al acceder por nuestro navegador seria el siguiente:Hola mundo.

Mgicamente el texto en el que se explica donde empieza y donde termina el cdigo php no aparece. A esto se le llama comentarios (y los vas a ver mucho en este curso :D). En los lenguajes de programacin se puede (y se debe) colocar comentarios para explicar parte del cdigo, as cuando tengamos que retomar nuestro script o cuando otra persona tenga que retocar nuestro cdigo, podremos saber de forma ms rpida que es lo que estamos haciendo. Podemos poner comentarios en una sola linea o en bloque.

Casi siempre que escribamos una instruccin hay que terminar dicha instruccin con el carcter ; (hay algunas excepciones, como los comentarios, que ya las iremos viendo ms adelante)

26

PHP BASICO

Ah! Y un pequeo consejo, cuando programes, intenta indentar tu cdigo para una mayor legibilidad. En PHP se podra escribir todo un programa en una sola linea kilomtrica, pero es altamente aconsejable que separes cada cosa que hagas en lineas diferentes y con una identacin adecuada. El resto de programadores (y t mismo/a) te lo agradecern cuando tengan que revisar tu cdigo.

5.1.1. Inclusin de ficheros externosComo dijo Julio Csar, Divide y vencers. En la cultura popular, divide y vencers hace referencia a un refrn que implica resolver un problema difcil, dividindolo en partes ms simples tantas veces como sea necesario, hasta que la resolucin de las partes se torna obvia. La solucin del problema principal se construye con las soluciones encontradas. Dicha tcnica que veremos un poco ms adelante cuando entremos a hablar de funciones tambin nos sirve como excusa para explicar la inclusin de ficheros externos. Como se ha comentado anteriormente, se en php se podra escribir todo un programa en una sola lnea, pero no debemos hacerlo por tener una mejor lectura de nuestro cdigo. Asimismo podramos dividir nuestro cdigo en diferentes ficheros para que en cada fichero tengamos algo especfico y nos sea ms fcil encontrar un cdigo en concreto si estamos buscando algn error. Pongamos un sencillo ejemplo. Imaginemos que en nuestra aplicacin web queremos acceder a una base de datos (o bbdd) y hacer complicadas operaciones matemticas. Para ello podramos crear un fichero llamado index.php donde estuviese toda la lgica principal de nuestro programa, crear otro llamado basededatos.php y otro llamado matematicas.php donde tengamos los complicados clculos. As si tenemos un problema al acceder a la bbdd, solo tendramos que revisar el archivo basededatos.php y lo mismo con los clculos matemticos. PHP nos deja incluir ficheros externos mediante los mtodos include, require, include_once y require_once. As en nuestro programa principal en el fichero index.php tendramos:

Esto nos sirve no slo para tener funcionalidades especficas que creemos nosotros en ficheros a parte, si no que adems nos permite incluir libreras y funcionalidades creadas por otras personas, que nos pueden facilitar mucho la vida. Cuales son las diferencias entre require, require_once, include e include_once? Bien, entre require e include: require buscar el fichero, si este no existe, mostrara un Fatal Error, y parar la ejecucin de nuestra aplicacin. include buscar el fichero, si este no existe mostrar un Warning y dejar que nuestra aplicacin siga su curso.

27

EXPERTO EN DESARROLLO DE SOLUCIONES CORPORATIVAS EN SOFTWARE LIBRE

require_once e include_once siguen la misma norma que require e include acerca de los Fatal Error y de los Warning. La diferencia radica en que require_once e include_once, slo se ejecutarn una vez. Si por alguna razn el trozo de cdigo en el que estn require_once o include_once vuelve a ejecutarse, php lo ignorar.

5.2. Elementos del Lenguaje:A continuacin veremos algunos elementos que tendremos que usar a la hora de crear nuestros programas.

5.2.1. VariablesUna variable se puede definir como porcin de memoria que ha sido creada para el almacenamiento de algn valor. Valor que puede variar a lo largo de la ejecucin de nuestro script. Por ejemplo, en una ecuacin normal del tipo 2 + x = 4, x sera nuestra variable, y en este caso almacenara el nmero 2. A la hora de programar esto es ms o menos lo mismo, solo que las variables pueden almacenar algo ms que simples nmeros. En el caso de PHP se pueden almacenar los siguientes tipos de datos: Nmeros enteros, tambin llamado int (de integer) Nmeros de coma flotante, es decir nmeros decimales, tambin llamados float (de Floating Point number) Cadenas de texto, esto es, palabras, slabas, frases. Tambin conocidos como str (de String) Arrays tambin conocidos como matrices. contienen ms de un valor y de diferentes tipos. Puede contener por ejemplo, 2 enteros, 5 decimales, 10 cadenas de texto, 3 objetos e incluso ms arrays. Booleanos, sus nicos valores pueden ser true o false (Verdadero o falso) Objetos Un Objeto, es un contenedor de uno o ms datos (variables o propiedades miembro) junto a las operaciones de manipulacin de dichos datos (funciones/mtodos). Ya los veremos ms adelante. En php para identificar una variable, se le antepone el smbolo $. As pues en el primer ejemplo que pusimos en este temario $a = Hola mundo; vemos como $a es realmente una variable que est almacenando una cadena de texto con el valor Hola mundo. Veamos algunos ejemplos de como operar con variables.

En php el tipado de las variables es dinmico. En otros lenguajes de programacin antes de usar una variable hay que crearla y decir de que tipo es. Por ejemplo en C habra que hacerint a; a = 1;

Es ms, ni siquiera se podra asignar valores que no fuesen de ese mismo tipo. Es decir, a una variable de tipo int no se le puede asignar un valor decimal (ya que sera un tipo de dato float) En nuestro caso, en PHP, no hace falta crearla (o inicializarla), ya que se pueden hacer estas operaciones al vuelo. Adems se le puede cambiar el tipo de dato sin problemas asignndole un valor distinto. Veamos como se comportaran las variables en ficheros externos mediante el uso de require, include, require_once, e include_once. Imaginemos que tenemos 2 ficheros, fichero1.php y fichero 2.php fichero1.php:

fichero2.php:

Ahora modifiquemos fichero2.php:

5.2.2. ConstantesA diferencia de las variables, las constantes no varan su valor a lo largo de la ejecucin de nuestra aplicacin. Adems estas no llevan el smbolo $ precedindoles Se declaran de la siguiente forma

Al usar el comando echo nos saldra por pantalla lo siguiente (ntese que se ha puesto un salto de carro html en el segundo echo):valor 27

Es aconsejable utilizar maysculas para declarar el nombre de las constantes.

5.2.3. Operadores Operadores AritmticosSintaxis $a + $b $a - $b $a * $b $a / $b $a % $b Nombre Suma Resta Multiplicacin Divisin Mdulo Descripcin Suma de $a y $b. Diferencia entre $a y $b Producto de $a y $b Cociente de $a entre $b Resto de la divisin de $a entre $b

Operador de AsignacinEste operador ya lo hemos visto en la seccin de las variables el smbolo =. Bsicamente la variable de la izquierda toma el valor de la expresin que se encuentre despus del smbolo =. Se puede enrevesar un poco las asignaciones como veremos a continuacin.

Es posible combinar el operador de asignacin con operadores aritmticos.

Operadores de ComparacinLos operadores de comparacin, como su nombre indica, permiten comparar dos valores. Veremos su uso un poco ms adelante, en las estructuras de control. Sintaxis $a == $b $a === $b $a != $b $a < $b Nombre Igualdad Identidad Desigualdad Menor que Descripcin Cierto si $a es igual a $b. Cierto si $a es igual a $b y si son del mismo tipo (slo PHP4) Cierto si $a no es igual a $b. Cierto si $a es estrictamente

30

PHP BASICO

menor que $b. $a > $b $a = $b Mayor que Menor o igual que Mayor o igual que Cierto si $a es estrictamente mayor que $b. Cierto si $a es menor o igual que $b. Cierto si $a es mayor o igual que $b.

Ojo!, un error muy habitual es confundir = con ==. El primero es asignacin y el segundo comparacin.

Operadores de Incremento/DecrementoSintaxis ++$a $a++ $a $a Nombre Preincremento Postincremento Predecremento Postdecremento Descripcin Incrementa $a en uno y despus devuelve $a. Devuelve $a y despus incrementa $a en uno. Decrementa $a en uno y despus devuelve $a. Devuelve $a y despus decrementa $a en uno.

Esto puede ser un poco lo, veamos un ejemplo

valor es 1: " . $a++ . ". Despus de

valor es 2: " . ++$a . ". Despus de

valor es 2: " . $a-- . ". Despus de

valor es 1: " . --$a . ". Despus de

Esto nos devolvera lo siguiente:Postincremento Al usar el operador Preincremento Al usar el operador Postdecremento Al usar el operador Predecremento Al usar el operador el valor es 1: 1. Despus de usarlo es 2: 2 el valor es 2: 2. Despus de usarlo es 2: 2 el valor es 2: 2. Despus de usarlo es 1: 1 el valor es 1: 1. Despus de usarlo es 1: 1

Operadores LgicosSu uso ms habitual suele ser con tipos de datos booleanos. Los veremos tambin en ms adelante en las estructuras de control.

31

EXPERTO EN DESARROLLO DE SOLUCIONES CORPORATIVAS EN SOFTWARE LIBRE

Sintaxis $a and $b $a && $b $a or $b $a || $b $a xor $b ! $a

N