programación en lenguaje php nivel...

Post on 16-Oct-2018

222 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Programación en lenguaje PHPNivel Básico

1. Introducción a PHP

1. Introducción a PHPFuncionamiento de un servidor Web

En su versión más sencilla, un servidor Web responde a una petición de usuario enviando páginas HTML que tiene almacenadas por medio del protocolo HTTP.

CLIENTE SERVIDOR

Archivo HTML

Petición HTTP

1. Introducción a PHPFuncionamiento de un servidor Web

Si la página tiene varios elementos de imagen, se deberá establecer una conexión http para enviar cada imagen.Por ejemplo, una página con cinco imágenes precisará un total de 6 conexiones http.

CLIENTE SERVIDOR

Petición HTTP 1 imagen

Archivo imagen

5 vecesCLIENTE SERVIDOR

Petición HTTP

Archivo HTML

1. Introducción a PHPFuncionamiento de un servidor Web

Si la página es dinámica puede ocurrir que el dinamismo esté en la parte cliente. En este caso el funcionamiento no cambia mucho.Como un elemento más de la página se envía, por ejemplo, el applet Java, archivos Javascript.Luego el elemento dinámico se ejecuta en la máquina cliente, dotándola de dinamismo visual, pero no de contenido.

1. Introducción a PHPFuncionamiento de un servidor Web

Si, en cambio, optamos por dinamismo en la parte del servidor, la cosa cambia más.Aunque desde el punto de vista del usuario no cambia mucho, pues él solicita una página y recibe HTML como respuesta.La página que se envía al cliente, sin embargo, ya no se envía tal cual está almacenada en el servidor, sino que se construye en el momento de ser enviada.

1. Introducción a PHPFuncionamiento de un servidor Web

La construcción de esta página se hace ejecutando un script que la página tiene escrito en su interior.El servidor Web no ejecuta el script por si mismo, sino que se lo envía a un módulo que es capaz de interpretarlo.Este módulo a su vez puede usar otros recursos, como ficheros de datos, bases de datos, etc. en la configuración de la página.Ya compuesta sólo de html, la página es entregada de nuevo al servidor, quien la envía al cliente.

1. Introducción a PHPFuncionamiento de un servidor Web

El proceso en su conjunto quedaría representado por la siguiente figura.

CLIENTE SERVIDOR

Petición HTTP

Archivo HTML

SCRIPT RECURSOS

Ejecutar Script Obtener recurso

Devolver recursoDevolver resultado

1. Introducción a PHPHistoria de PHP

PHP/FI Fue creado por Rasmus Lerdorf en 1995 como un simple conjunto de scripts para acceder a su trabajo on line.A medida que fue necesitando más funcionalidad acabó por escribir una implementación en C, que finalmente liberó para que cualquiera pudiera utilizarla.

1. Introducción a PHPHistoria de PHP

PHP/FI 2.0 Apareción en 1997 como una segunda escritura de PHP.Esta versión contó ya con numerosas colaboraciones de otros programadores.Esta versión salió ya del ámbito personal y hasta 50.000 sitios de Internet llegaron a tenerlo instalado, a pesar de su corta vida.

1. Introducción a PHPHistoria de PHP

PHP 3.0 era la primera versión que se parecía fielmente al PHP tal y como lo conocemos hoy en día. Fue creado por Andi Gutmans y Zeev Zuraski en 1997 rescribiéndolo completamenteUna de las mejores características de PHP 3.0 era su gran extensibilidad. Además de proveer a los usuarios finales de una sólida infraestructura para muchísimas bases de datos, protocolos y APIs.Muchos desarrolladores se unieron y enviaron nuevos módulos de extensión.

1. Introducción a PHPHistoria de PHP

PHP 4 partió una reescritura del núcleo que buscaba mejorar la ejecución de funciones complejas y la modularidad del código base.El nuevo motor (llamado Zend) se introdujo a mediados de 1999 y fue liberado en Mayo de 2000.Además de las mejoras en la ejecución, PHP 4 proporciona soporte para numerosos servidores Web, sesiones HTTP, buffers de salida, y numerosas nuevas instrucciones.

1. Introducción a PHPHistoria de PHP

El 13 de julio de 2004, fue lanzado PHP 5Utilizando el motor Zend Engine II Incluye las ventajas que provee el nuevo Zend

Engine 2: Mejor soporte para la Programación Orientada a Objetos, mejoras de rendimiento, mejor soporte a XML, mejor soporte para MySQL, …

1. Introducción a PHPPHP frente a otros lenguajes

Velocidad: No solo la velocidad de ejecución, la cual es importante, sino además no crear demoras en la máquina. PHP se integra muy bien junto a otro software, especialmente bajo ambientes Unix, cuando se configura como módulo de Apache, está listo para ser utilizado.Estabilidad: PHP utiliza su propio sistema de administración de recursos y dispone de un sofisticado método de manejo de variables, conformando un sistema robusto y estable.

1. Introducción a PHPPHP frente a otros lenguajes

Seguridad: PHP provee diferentes niveles de seguridad, estos pueden ser configurados desde el archivo .iniSimplicidad: Los usuarios con experiencia en C y C++ podrán utilizar PHP rápidamente.

1. Introducción a PHPLa instalación de PHP

En términos generales la instalación de PHP va a constar de tres pasos:1. La instalación de un servidor Web (si no hay ya uno instalado), que en nuestro caso será Apache.2. El desempaquetado de la distribución PHP que vayamos a usar.3. La configuración del servidor Web para que pueda usar el intérprete PHP.Veremos a continuación estos tres pasos en detalle.

1. Introducción a PHPInstalación de Apache

Puedes obtener el programa en su sitio web, http://www.apache.org/.La versión binaria de Apache para Windows viene en formato msi, es un instalador de Microsoft que ya viene de serie con Windows 2000.Para comenzar la instalación de los archivos basta hacer doble click en el archivo .msi que hemos bajado.

1. Introducción a PHPInstalación de Apache

Como vamos a usar Apache como servidor de pruebas pondremos localhost en el nombre del servidor.El nombre del dominio y el correo electrónico no tienen importancia.Elegiremos a continuación la instalación personalizada.

1. Introducción a PHPInstalación de Apache

Lo siguiente es elegir el directorio de instalación. Para no tener que manejar una trayectoria tan larga, lo cambiamos por c:\wamp\apache22El instalador creará automáticamente una carpeta llamada Apache22. Una vez acabada la instalación el servidor webestará instalado y funcionando como un servicio de windows denominado Apache2.2

1. Introducción a PHPInstalación de PHP

Paso 1:Podemos obtener PHP desde la página www.php.net. Descomprimimos el fichero bajado (p.ej. php-5.2.6-Win32.zip), en un nuevo directorioPodemos colocar PHP como un subdirectorio de la instalación WAMP. Así que en el WinZip elegimos c:\wamp como destino.WinZip creará un directorio con un nombre largo que luego renombraremos php526.

1. Introducción a PHPInstalación de PHP

Paso 2:Renombramos el archivo php.ini-recommended como php.ini.

Copiamos c:\wamp\php526\php5ts.dll al directorio c:\windows.

1. Introducción a PHPPreparar Apache para PHP

Existen dos formas de instalar PHP para que funcione con Apache:Como CGI: En este caso Apache ejecuta PHP como un programa independiente cada vez que necesita interpretar una página PHP.Es menos eficiente, pero se considera más estable y seguro.Como módulo de Apache: Las rutinas de PHP pasan a ser un módulo más de Apache, al que este accede mediante llamadas a la correspondiente dll.

1. Introducción a PHPPreparar Apache para PHP

Instalación de PHP como CGI. Paso 1.Tenemos que editar el fichero httpd.conf de Apache, que se encuentra en el subdirectorio confde la instalación.Buscamos la sección alias_module.Introducimos la siguiente línea nueva:

ScriptAlias /php/ "C:/WAMP/php526/"

1. Introducción a PHPPreparar Apache para PHP

Instalación de PHP como cgi. Paso 2.A continuación buscamos la sección mime_module y escribimos:

AddType application/x-httpd-php .php

A continuación escribimos:Action application/x-httpd-php /php/php-cgi.exe

Dotamos a Apache de permisos en el directorio de PHP:

<Directory “C:/WAMP/PHP526”>Allow from all

</Directory>

1. Introducción a PHPPreparar Apache para PHP

Instalación de PHP como cgi. Paso 3.Para comprobar que funciona hacemos lo siguiente:Abrimos nuestro editor de texto y escribimos:

<?php phpinfo(); ?>

guardamos este archivo como prueba.php dentro del document root de la instalación de Apache que es donde se guardan los documentos a servir.A continuación arrancamos Apache y el navegador, donde pondremos la dirección

http://localhost/prueba.php

1. Introducción a PHPPreparar Apache para PHP

Instalación de PHP como módulo Apache. Paso 1.En lugar de las líneas que añadíamos a nuestro archivo .conf de apache, añadimos las siguientes:LoadModule php5_module c:/wamp/php526/php5apache2_2.dll

AddType application/x-httpd-php .phpPHPIniDir “c:/wamp/php526”

2. Características de PHP

2. Características de PHP

PHP se embebe en el código HTML, del que se separa mediante delimitadores, que pueden tomar cuatro formas.Algunas de estas formas están siempre disponibles, mientras que otras pueden habilitarse y deshabilitarse en el archivo php.ini

2. Características de PHPDelimitadores.

<? echo 'Etiquetas cortas, pueden deshabilitarse'; ?>

<?php echo 'Segundo método, siempre disponible'; ?>

<script language="php">echo 'Algunos editores (como el FrontPage) Sólo entienden este método, que siempre está habilitado';

</script>

<% echo 'Método de compatibilidad con ASP, puede estar habilitado o no'; %>

2. Características de PHPComentarios

Se permiten comentarios estilo C y C++, pero también estilo shell script de Unix:<?echo $variable; // Este es un comentario de una lineaecho $variable; /* usando este estilo se pueden

escribir varias lineas

de comentario */echo $variable; # otra forma de comentario de una linea?>

2. Características de PHPSentencias

Las sentencias se terminan con ';'.La última sentencia de un bloque no necesita ';'.Una serie de sentencias se pueden agrupar mediante llaves, formando una única sentencia compuesta.Veremos a continuación los elementos necesarios para escribir sentencias: variables, constantes, operadores y estructuras de control.

3. Variables y constantes

3. Variables y constantesVariables. Conceptos básicos

Son automáticas. No es preciso declararlas.Comienzan con el símbolo ‘$’ seguido del nombre de la variable.Se distingue entre minúsculas y mayúsculas.El nombre sólo puede empezar por una letra o '_'El resto de caracteres del nombre puede ser cualquier letra, número, el símbolo '_' o caracteres ASCII entre 128 y 255.

3. Variables y constantesAsignación por valor y por referencia

Normalmente se realiza una asignación por valor.Para realizar una asignación por referencia se antepone el símbolo '&'<?php$a=&$b;

?>

Despues de esto todo lo que se haga sobre $a se hará sobre $b y viceversa, pues hacen referencia al mismo valor.

3. Variables y constantes Variables predefinidas

Las principales variables predefinidas son:$GLOBALS$_SERVER$_GET$_POST$_COOKIE$_FILES$_SESSION

3. Variables y constantes Ámbito de las variables

Cada variable es visible en el ámbito simple en el que está definida.Para una variable global este ámbito es todo el código php de la página y los ficheros incluidos, pero NO el interior de las funciones que puedan estar definidas.

3. Variables y constantes Ámbito de las variables

Ejemplo de lo anterior, el siguiente programa nogenera como salida un 1, sino un warning.<?php

$a = 1; // ambito global

function Test(){

echo $a; // referencia a variable local

}

Test();

?>

3. Variables y constantes Ámbito de las variables

Una variable definida dentro de una función sólo será visible desde esa función.<?php

function Test(){

$a=2; // referencia a variable local

}

Test();

echo $a; // Se genera un warning, la variable // $a no está definida

?>

3. Variables y constantes Ámbito de las variables

Una variable global puede hacerse visible dentro de una función declarándola con la palabra reservada global.<?php

$a = 1;

$b = 2;function Sum() {

global $a, $b;

$b = $a + $b;} Sum();

echo $b;?>

3. Variables y constantes Ámbito de las variables

Las variables predefinidas que vimos antes están disponibles sin necesidad de declararlas global, por lo que se denominan superglobales.<?php

$a = 1;

$b = 2;function Sum(){

$GLOBALS["b"] = $GLOBALS["a"] + $GLOBALS["b"];} Sum();

echo $b;?>

3. Variables y constantes Variables variables

Una variable puede almacenar el nombre de otra y utilizarse para referirse a ésta última.<?php

$numero = 1; // esta linea podría no existir$x = "numero";

$$x=100;echo $numero; // la salida es 100

?>

3. Variables y constantesConstantes

Los identificadores de constantes siguen las mismas reglas que los de variables, pero no llevan el prefijo $.Distinguen mayúsculas y minúsculas. Por convención se suelen usar mayúsculas.El ámbito de las constantes es superglobal.Se definen con una llamada a la función define()<?php

define(EURO, 166.386);

?>

4. Tipos de datos

4. Tipos de datos

PHP soporta los siguientes tipos de datosBooleanosEnteros.Números en punto flotante.Cadenas.Matrices.Objetos.RecursosNULL

4. Tipos de datos

Habitualmente es PHP y no el programador quien decide el tipo de un dato.PHP realiza conversiones automáticas para adaptar el tipo de un dato al contexto.El programador puede usar la función gettype() para conocer el tipo de un dato y settype() para forzar un dato a un tipo concreto.

4. Tipos de datosBooleanos

Este es el tipo más simple. Un booleano expresa un valor de verdad. Puede ser TRUE o FALSE.

<?php$valor = TRUE;echo "Valor de \$valor: $valor"; // la salida es: Valor de $valor: TRUE

?>

4. Tipos de datosEnteros

Los enteros se pueden especificar usando una de las siguientes sintaxis:

<?php$a = 1234; # número decimal$a = -123; # un número negativo$a = 0123; # octal (equivale a 83 decimal)

$a = 0x12; # hexadecimal (equivale a 18 decimal)?>

4. Tipos de datosPunto Flotante

Los números en punto flotante (double) se pueden especificar utilizando cualquiera de las siguientes sintaxis:<?php$a = 1.234; $a = 1.2e3;$a = 7E-10;

?>

4. Tipos de datosCadenas

Se pueden especificar entre comillas dobles ("), en este caso todas las variables que estén dentro de la cadena se expandirán.Se puede usar la barra invertida para indicar caracteres especiales: \n, \t,... o para escapar las comillas o una variable: \", \$edad<?php

$edad = 25;echo "Valor de \$edad: $edad";

// la salida es: Valor de $edad: 25?>

4. Tipos de datosCadenas

Si se encierra una cadena de caracteres entre comillas simples ('), no se expanden las variables y los únicos caracteres especiales comprendidos son \\ y \'<?php

$edad = 25;

echo 'Edad: $edad'; //la salida es: Edad: $edad

?>

4. Tipos de datosConversión de cadenas

Si una cadena se usa en una operación aritmética, se convertirá al tipo numérico en el que mejor encaje, si esto es posible.<?php

$cad1 = "25";

$cad2 = "2e-3";$a = 7 + $cad1;$b = 50 * $cad2;

echo "$a, $b"; //la salida es: 32, 0.1?>

4. Tipos de datosArrays

En PHP los arrays pueden ser indexados (vectores) al estilo C:<?php

$vector[0] = 25;$vector[1] = 12;$suma=0;

for($i=0 ; i<2 ; $suma += $vector[i++]);

echo $suma; //la salida es: 37

?>

4. Tipos de datosArrays

Si dejamos en blanco el índice se van asignando automáticamente en orden.<?php

// Este ejemplo es equivalente al anterior$vector[0] = 25;$vector[] = 12;

$suma=0;for($i=0 ; i<2 ; $suma += $vector[i++]);

echo $suma; //la salida es: 37?>

4. Tipos de datosArrays

PHP también permite manejar los arrays como tablas asociativas, que pueden usar cualquier valor como índice:<?php

$salario ["María José"] = 1125.36;

$salario ["Jose Antonio"] = 1100.25;// .........$empleado="María José" ;

echo "$empleado\t".$salario [$empleado]."\n";//Salida: María José 1125.36

?>

4. Tipos de datosArrays

Los arrays también se pueden definir con el constructor array().<?php

// Este sería un vector de índices 0, 1, 2 y 3$otroArray = array(1, "Hola", 3.14,

"Mortadelo");

// Este otro sería una tabla asociativa $otroArrayMas = array ( "María" => 26,

"Pepe" => 34,

"Antonio" => 28);?>

4. Tipos de datosArrays y cadenas

Se puede acceder a los caracteres de una cadena como si fuera un array (como se hace en lenguaje C)<?php

$cadena="María";echo "$cadena[0] - $cadena[2] - $cadena[4]";// la salida sería: M - r - a

?>

4. Tipos de datosArrays multidimensionales

Simplemente se ponen las dimensiones que necesitemos.<?php

$a[1][0]= $f; // bidimensional$a["foo"][2] = $f; // se pueden mezclar $a[3]["bar"] = $f; // índices numéricos

// y asociativos)$a["foo"][4]["bar"][0]=$f; //4dimensiones

?>

4. Tipos de datosArrays multidimensionales

También podemos anidar llamadas a array().<?php

$matriz =array("manzana" => array("color" => "rojo",

"sabor" => "dulce","forma" => "redondeada"),

"naranja" =>array("color" => "naranja",

"sabor" => "ácido","forma" => "redondeada"),

);?>

4. Tipos de datosExpansión de arrays multidimensionales

Si situamos una referencia a un elemento de un arraymultidimensional dentro de una cadena, no se expandirá completamente.<?php

$a[0][1]= "Abracadabra"; echo "La palabra mágica es: $a[0][1]";

// Esto genera la salida:

// La palabra mágica es: Array[1]?>

4. Tipos de datosExpansión de arrays multidimensionales

A partir de PHP 4 esto se puede solucionar situando la referencia al array entre llaves:<?php

$a[0][1]= "Abracadabra"; echo "La palabra mágica es: {$a[0][1]}";

// Esto genera la salida:

// La palabra mágica es: Abracadabra?>

4. Tipos de datosObjetos

Para inicializar un objeto, se usa la sentencia newpara instanciar el objeto a una variable.<?php

class foo {function do_foo () {

echo "Doing foo."; }

}

$bar = new foo;$bar->do_foo();

?>

4. Tipos de datosForzado de tipos

PHP no soporta la declaración de tipos para las variables. Esto significa que una variable cambia su tipo según sea lo que en ella se introduce.<?php

$a = 4; // $a es de tipo entero$a = "Hola"; // $a es de tipo cadena$a = 2.45; // $a es de tipo double$a = "2.45"; // $a es de tipo cadena

?>

4. Tipos de datosForzado de tipos

PHP adapta los tipos de los valores según el contexto. Esto no siempre afecta a los tipos de las variables que los contienen.<?php

$a = "2.45"; // $a es de tipo cadena/* en la siguente sentencia el valor de $a se convierte a double para la operación, (pero $a sigue siendo de tipo cadena) y $b toma tipo double */

$b = 3 * $a;?>

4. Tipos de datosForzado de tipos

En cambio en este ejemplo el tipo de $a si se ve afectado<?php

$a = "2.45"; // $a es de tipo cadena/* en la siguente sentencia el valor de $a se

convierte a double para la operación, el tipode $a cambia a double para guardar elresultado */

$a = 3 * $a;?>

4. Tipos de datosForzado de tipos

Podemos forzar el tipo de un valor usando un cast, al estilo del lenguaje C.<?php

$a = "2.45"; // $a es de tipo cadena/* en la siguente sentencia el valor de $a se fuerza a int para la operación, el tipo del resultado es int y $a cambia a int para acomodar este resultado */

$a = 3 * (int) $a;?>

5. Operadores

5. OperadoresOperadores aritméticos

Disponemos de los clásicos operadores aritméticosSuma: +Resta: -Multiplicación: *División: /Módulo: %La división es siempre real.

5. OperadoresOperadores de asignación

Además del operador de asignación simple (=), disponemos de los operadores combiandos:+=, -=, *=, /=, *=, .=, etc.

Realizan la operación indicada entre la variable de la izquierda de la asignación y el resultado de la expresión de la derecha y guardan el resultado en la variable de la izquierda.

5. OperadoresOperadores de bits

Disponemos de los mismos operadores de bits que en C.Operadores lógicos bit a bit: &, |, ^ y ~. Operadores de desplazamiento: >> y <<.

5. OperadoresOperadores de comparación

Además de los mismos comparadores que en C:==, !=, <, >, <= y >=Disponemos de dos nuevos operadores, que comparan simultáneamente valor y tipo:Identidad: === 12 === 12.0 es falso pues no coinciden los tipos10 === 10 es verdaderoNo idénticos: !==12 !== 12.0 es verdadero10 !== 10 es falso pues son idénticos

5. OperadoresOperador de ejecución

PHP soporta un operador de ejecución el apóstrofe invertido ( ` ). La cadena contenida entre estos signos se intentará ejecutar como un comando del shell. El resultado del comando se devuelve como resultado de la expresión.<?php

$resultado=`ls -la`;echo $resultado;

?>

5. OperadoresOperadores de incremento y decremento

PHP dispone de los mismos operadores de incremento y decremento que C: ++ y --Ojo porque con cadenas de caracteres ¡las incrementa como tales cadenas! Por ejemplo:<?php

$a="Madrid";$a++;echo "$a, tipo: ". gettype($a);// El resultado es: Madrie tipo: string

?>

5. OperadoresOperadores lógicos

Son los mismos y funcionan igual que en C, pero además de los signos de C podemos usar las palabras inglesas and y or y disponemos del operador adicional xor:

Y lógico: && o andO lógico: || o orO exclusivo: xorNO lógico: !

5. OperadoresOperador de cadenas

PHP permite concatenar cadenas con el operador punto (.)<?php

$a=1;$b=2;echo $a ." + " . $b ."=". $a+$b;

?>

Este operador también nos da una solución sencilla para la expansión de arrays multidimensionales sin tener que usar las llaves.

5. OperadoresOperador de Control de Errores

PHP5 ofrece un operador de control de errores (@). Cuando es colocado al comienzo de una expresión en PHP, cualquier mensaje de error que pudiera generarse a causa de esa expresión será ignorado. <?php

$mi_archivo = @file ('archivo_que_no_existe')or die ("La apertura de archivo ha fallado");

?>

5. OperadoresPrecedencia de operadores

Asoc Operandos Asoc Operandosiz , iz ^iz or iz &iz xor no asoc == != === !==iz and no asoc < <= > >=der print iz << >>

iz = += -= *= /= .= %=&= |= ^= ~= <<= >>= iz + - .

iz ? : iz * / %

iz||

der! ~ ++ -- (int)(double) (string)(array) (object) @

iz && der [iz | no asoc new

6. Estructuras de control

6. Estructuras de controlAlternativa simple y doble

Se usan if e if...else respectivamente.Si alguna rama tiene más de una sentencia deberán agruparse entre llaves.<?php

if ($a<0){$b=-$a;echo "\$a es menor que 0";}

else$b=$a;

?>

6. Estructuras de controlEncadenamiento de ifs

Se pueden anidar en cascada varias alternativas dobles usando la palabra reservada elseif<?php

if ($a<0)echo "\$a es menor que 0";

elseif ($a<4)echo "\$a está entre 0 y 4";

elseif ($a<10)echo "\$a está entre 4 y 100;

elseecho "\$a es mayor que 10";

?>

6. Estructuras de controlAlternativa múltiple

En PHP es la sentencia switch que funciona casi igual que en C. Sólo permite, por lo tanto, comparaciones de igualdad de una expresión con valores constantes, pero de cualquier tipo.La sintaxis es:

switch (expresion) {case cte_1: sentencias_1case cte_2: sentencias_2...case cte_n: sentencias_ndefault: sentencias_n+1

}

6. Estructuras de controlBucles while y do...while

Son bucles controlados por una condición. Se diferencian en que el while evalua la condición antes de ejecutar cada iteración y el do...while lo hace justo despues de cada iteración.La sintaxis es:while(expresion) do

cuerpo_del_bucle cuerpo_del_buclewhile(expresion);

El cuerpo del bucle deberá ir entre llaves si lo forma más de una sentencia.

6. Estructuras de controlBucle for

Es una versión abreviada del bucle while que, típicamente, incorpora un contador.La sintaxis es:

for(expresion1; expresion2; expresion3) cuerpo_del_bucle

expresion1 se ejecuta una única vez antes del comienzo del bucle.expresion2 se evalúa al comienzo de cada iteración y cuando su resultado es false se abandona el bucle.expresion3 se evalúa al final de cada iteración.

6. Estructuras de controlBucle foreach

Este bucle no tiene equivalente en C.Está especialmente concebido para recorrer arrays.Admite dos posibilidades de sintaxis:

foreach(expresion_array as $value)cuerpo_del_bucle

foreach(expresion_array as $key => $value)cuerpo_del_bucle

En ambos casos el cuerpo del bucle se ejecutará tantas veces como elementos tenga el array. En cada iteración $value tomará un valor de los contenidos en el array.

6. Estructuras de controlBucle foreach

Ejemplo de la primera forma del bucle foreach.<?php

$precios=array(3.23, 56.7, 12.5, 96.2);$suma=0;foreach($precios as $precio)

{echo "$precio\n"; $suma=$precio;}

echo "Suma articulos: $suma";?>

6. Estructuras de controlBucle foreach

Ejemplo de la segunda forma del bucle foreach.<?

$precios=array("libro" => 3.23, "pantalon" =>56.7, "disco" => 12.5,"cazadora" => 96.2);

echo "Tarifa de precios\n";foreach($precios as $producto => $precio)

echo "$producto\t$precio\n"; ?>

6. Estructuras de controlSentencias break y continue

break provoca la salida de estructuras iterativas o de la sentecia switch. Admite un parámetro opcional que indica de cuantos niveles de estructuras anidadas se debe salir.continue sólo se usa en bucles provoca que se pase a la siguiente iteración sin terminar la actual. Al igual que break admite un parámetro que indica a cuantos niveles de anidamiento va a afectar.

6. Estructuras de controlSentencia return

Si se llama desde una función, return provoca la salida de la función y su parámetro se devuelve como valor de retorno de la funciónSi se llama desde el cuerpo principal de un scriptprovoca la terminación del mismo.Si se llama desde un script invocado mediante include o require, provoca el final del mismo y el retorno al script llamante. Además el valor del argumento de return será devuelto como valor de retorno del include o require.

6. Estructuras de controlinclude y require

Ambas sentencias provocan la inclusión y evaluación del fichero especificado.Cualquier variable disponible en la línea donde está el include o require en el script principal lo estará también en la evaluación del archivo incluido.Al incluir un fichero, el intérprete sale del modo PHP y entra en modo HTML y vuelve de nuevo al modo PHP al final. Por esta razón, cualquier código dentro del archivo referenciado que debiera ser ejecutado como código PHP debe ser encerrado dentro de etiquetas de comienzo y fin de PHP válidas.

6. Estructuras de controlinclude y require

La diferencia entre ambas sentencias reside en el tratamiento de errores. Cuando por alguna razón la inclusión del fichero no puede tener lugar, includegenera un warning, mientras que require genera un fatal error y finaliza la ejecución del script.La sintaxis de ambas sentencias es:

include(fichero);require(fichero);

6. Estructuras de controlSintaxis alternativa

Las estructuras de control admiten una sintaxis alternativa para las estructuras if, while, for y switch.Esta otra sintaxis consiste, básicamente, en cambiar la apertura de llaves por : y el cierre por endif;, endwhile;, endfor; y endswitch;Esta sintaxis permite que el cuerpo de cada rama o bucle sea directamente html y no sentencias php.

7. Funciones

7. FuncionesFunciones definidas por el usuario

Las funciones de usuario son bloques de código que pueden ser utilizados en cualquier momento dentro del código PHP.Se define una función con la sentencia functionseguida del nombre de la función y de las líneas de instrucciones.Estas últimas deben ir entre las llaves {...}. Si la función tiene que devolver un valor a la línea de código donde se invocó, como última instrucción hay que poner la orden return seguida del valor que se devuelve.

7. FuncionesFunciones definidas por el usuario

Las funciones, en la mayoría de los casos, tienen parámetros o argumentos entre paréntesis, a través de los cuales se pasan los datos con los que hay que realizar operaciones.Una función se puede definir con la siguiente sintaxis: <?php

function foo ($arg_1, $arg_2, ..., $arg_n) {

echo "Función de ejemplo.\n";return $retval;

}?>

7. FuncionesParámetros de las funciones

PHP soporta paso de parámetros por valor (comportamiento por defecto), por referencia, y parámetros por defecto. Además PHP4 y PHP5 permiten funciones con un número variable de parámetros. En PHP3 puede conseguirse algo similar pasando un array de parámetros.

7. FuncionesPaso de parámetros por referencia

Si se quiere que un parámetro siempre se pase por referencia basta anteponer el símbolo '&' antes del nombre del mismo en la definición de la función.Aún cuando un parámetro no esté definido como pasado por referencia, puede hacerse así anteponiendo un '&' al nombre del parámetro actual en la llamada a la función.

7. FuncionesParámetros por defecto

Se pueden definir valores por defecto para los parámetros escalares, al estilo C++.Los parámetros con valores por defecto deben estar a la derecha en la lista de parámetros.<?php

function makecoffee ($type = "cappucino") {

return "Hacer una taza de $type.\n";}echo makecoffee ();echo makecoffee ("espresso");

?>

7. FuncionesLista de longitud variable de parámetros

No necesita de ninguna sintaxis especial, y las listas de parámetros pueden ser escritas en la llamada a la función y se comportarán de la manera esperada.En la definición de la función no se escribe la lista de argumentos y se utilizan las funciones siguientes para acceder a los parámetros:

func_num_args()func_get_arg()func_get_args()

7. FuncionesLista de longitud variable de parámetros

func_num_args(): Devuelve el número de parámetros pasados a una función de parámetros variable. func_get_arg(): Devuelve el valor de un parámetro en particular. Por ejemplo, para retornar el valor del primer parámetro de una función de parámetros variable, podemos escribir:

$arg1 = func_get_arg(0);

func_get_args(): Retorna todos los parámetros pasados a la función en forma de array.

7. FuncionesLista de longitud variable de parámetros

<?phpfunction p_variable()

{$argc=func_num_args();$argv=func_get_args();for($i=0; $i<$argc; $i++)

echo "Parametro $i: $argv[$i]\n";}

p_variable(1, 2);

p_variable("a", "b", "c", "d");?>

7. FuncionesDevolviendo valores

Se pueden devolver valores de cualquier tipo, incluyendo arrays y objetos, usando la sentencia return.

<?phpfunction numeritos()

{return array(0, 1, 2);}

list($cero, $uno, $dos) = numeritos();?>

7. FuncionesFunciones variables

PHP soporta funciones variables, esto quiere decir que si a una variable se le añaden parentesis, PHP intentará ejecutar una función con el nombre resultado de evaluar la variable.<?php

$a="sumar";$suma=$a(2,3);/* Se llamaría a la función sumar(2,3);

Si existe y está definida como es de esperaren $suma se guardaría un 5

*/?>

7. FuncionesFunciones de tratamiento de cadenas

Funciones para mostrar información:echoprintprintf()sprintf(). Ojo, la sintaxis de esta función es:

$cadena= sprintf("formato", lista_de_argumentos)

Para saber la longitud de una cadena:strlen()

7. FuncionesAdaptar una cadena al contexto

Hay muchas, algunas de las mas importantes son:addSlashes(). Devuelve una cadena con barras invertidas delante de los caracteres que los necesitan en consultas a Bases de Datos.stripSlashes(). Es la contraria de la anterior, elimina las barras invertidas delante de caracteres especiales.

7. FuncionesAdaptar una cadena al contexto

urlencode(). Prepara una cadena de caracteres para ser enviada como parte de una URL, eliminando espacios en blanco y cambiando los caracteres no alfanuméricos por un signo % y un código de dos dígitos hexadecimales.urldecode(). Es la opuesta a la anterior. Restituye una cadena procesada con la función urlencode() a su estado original.nl2br(). Convierte los saltos de linea de un texto en saltos html (<br>), conservando los saltos originales.

7. FuncionesLimpiar una cadena de caracteres

chop(). Elimina espacios en blanco y saltos de línea al final de una cadena.ltrim(). Elimina espacios en blanco y saltos de línea al principio de una cadena de caracteres.trim(). Es una combinación de las anteriores. Elimina espacios en blanco y saltos de línea tanto al principio como al final de la cadena.strip_tags(). Elimina las etiquetas HTML de una cadena.

7. FuncionesMayúsculas y minúsculas.

strtoupper(). Devuelve la misma cadena convirtiendo todos sus caracteres a mayúsculas.strtolower(). Devuelve la misma cadena convirtiendo todos sus caracteres a minúsculas.ucfirst(). Devuelve la misma cadena convirtiendo su primer caracter a mayúscula.ucwords(). Devuelve la misma cadena convirtiendo a mayúscula la primera letra de cada palabra.

7. FuncionesBuscar en una cadena.

strcspn(). Devuelve el índice del primer caracter de la primera cadena que coincida con algún caracter de la segunda cadena. strpos(). Devuelve el índice del caracter de la primera cadena donde comienze la primera aparición completa de la cadena pasada como segundo argumento.strstr(). Devuelve una subcadena de la primera cadena que comprende desde la primera aparición de la cadena pasada como segundo argumento hasta el final de la primera cadena.

7. FuncionesOperaciones con subcadenas.

substr(). Devuelve una subcadena de la cadena que se pasa como primer argumento. Esta subcadenacontiene los caracteres de la cadena desde la posición que se indica en el segundo argumento, hasta el número que se indique en el tercer argumento.strtok(). Separa una cadena de texto en bloques según el separador indicado en el segundo argumento. Para completar la separación de una cadena se deben hacer llamadas sucesivas en las que sólo en la primera se pasa la cadena a dividir.

7. FuncionesFunciones de tratamiento de arrays.

count(). Devuelve el número de elementos de una matriz.reset(). Coloca el puntero del vector en la primera posición del mismo.end(). Coloca el puntero del vector en la última posición del mismo.next(). Devuelve el valor siguiente al apuntado por el puntero y desplaza este a la nueva posición.prev(). Devuelve el valor anterior al apuntado por el puntero y desplaza este a la nueva posición.

7. FuncionesFunciones de tratamiento de arrays.

current(). Devuelve el valor apuntado por el puntero sin desplazar la posición del mismo.key(). Devuelve el valor de la clave del lugar apuntado por el puntero.explode(). Convierte una cadena de caracteres en un array, separando según un carácter que se pasa como primer argumento.implode(). Convierte un array en una cadena separándolos con el carácter indicado en el primer argumento.

7. FuncionesOrdenación de arrays.

sort(). Ordena un array de menor a mayor sin mantener la asociación de cada elemento con su índice.rsort(). Hace lo mismo que la anterior pero en orden inverso.asort(). Ordena un array de mayor a menor manteniendo la asociación de cada elemento con su índice.arsort(). Hace lo mismo que la anterior pero en orden inverso.

7. FuncionesOrdenación de arrays.

ksort(). Ordena un array de menor a mayor segun la clave manteniendo la asociación de cada elemento con su índice.krsort(). Hace lo mismo que la anterior pero en orden inverso.shuffle(). Ordena aleatoriamente los elementos de una matriz, sin mantener la asociación de cada elemento con su índice.array_reverse(). Devuelve una matriz con los elementos ordenados en el orden inverso al de la matriz que se le pasa como parámetro.

7. FuncionesTratar un array como si fuera una pila.

array_push(). Inserta un elemento al final de un array.array_pop(). Devuelve el último elemento de un array, que además elimina.array_shift(). Devuelve el primer elemento de un array, que además elimina, desplazando el resto un lugar a la izquierda.array_unshift(). Inserta un elemento en la primera posición del array, desplazando el resto un lugar a la derecha.

7. FuncionesFunciones de tratamiento de fechas

check_date(). Comprueba la validez de una fecha que se le pasa como parámetro en el orden mes, día, año.time(). Devuelve un timestamp o instante Unix, esto es el número de segundos transcurridos desde el 1/1/1970. date(). Devuelve una cadena formateada según se le indique en el primer parámetro. El segundo indica la fecha a formatear como timestamp. Si no se pone nada en el segundo, se toma la fecha actual.

7. FuncionesFunciones de tratamiento de fechas

get_date(). Recibe como parámetro un timestamp. Devuelve un array con los siguientes elementos:

"seconds" - segundos"minutes" - minutos"hours" - horas"mday" - día del mes"wday" - dia de la semana, en número"mon" - mes, en número"year" - año, en número"yday" - día del año"weekday" - día de la semana en texto"month" - mes en texto

8. Entrada y salida de datos

8. Entrada y Salida de datosEntrada de datos

Normalmente la entrada se realiza a través de un formulario HTML.En PHP el propio lenguaje se encarga de crear las variables correspondientes a los controles del formulario en la página que lo recibe, y rellenarlas con los correspondientes valores.

8. Entrada y Salida de datosEntrada de valores sencillos

Para el caso de valores sencillos, tales como cuadros de texto, listas desplegables, casillas de verificación (checkbox) y casillas de selección (radio buttons), PHP crea un elemento del array SuperGlobal $_GET o $_POST (dependiendo del método con que se envíe el formulario) por cada uno de los elementos que haya en el formulario.El nombre de la variable para recuperar el valor será el elemento de clave igual al name del control en el formulario, dentro del array SuperGlobal $_GET o $_POST.

8. Entrada y Salida de datosEntrada de valores sencillos

En el caso de casillas de selección, el valor almacenado en la variable será el designado en el atributo "value" del elemento que haya seleccionado el usuario.En el caso de casillas de verificación, se crearán variables con el mismo nombre que aquellas casillas que hayan sido seleccionadas por el usuario. El valor introducido en la variable será el contenido en el atributo "value" del elemento.Si un elemento no se selecciona no se crea la correspondiente variable.

8. Entrada y Salida de datosEntrada de valores multiples

En el caso de valores múltiples tambien PHP se encarga de rellenar con los valores variables del mismo nombre que el elemento del formulario, pero en este caso deberemos dar al elemento un nombre de array, para que pueda albergar varios valores.Deberemos actuar así con listas de seleccion múltiple.

8. Entrada y Salida de datosConsideraciones sobre la E/S

En PHP es frecuente que una página se llame a sí misma.En este caso la primera vez que se ejecuta la página típicamente se limita a mostrar un formulario.En ejecuciones sucesivas, ya recibiendo datos, la página actúa como corresponda para procesar esos datos y mostrar el resultado al usuario.La forma de distinguir cuando una página se llama por primera vez es porque las variables del formulario no están creadas.

8. Entrada y Salida de datosConsideraciones sobre la E/S

Podemos pasar información de una página a otra a traves de la URL del enlace.Para ello añadiremos tras la dirección el signo ? seguido de pares nombre=valor, separados por el símbolo &.Los nombres de las variables que se ponen en la URL no llevan el símbolo $.De forma análoga a lo que pasa con los formularios, las variables y los valores pasados por URL estarán automáticamente disponibles en la página destino.

8. Entrada y Salida de datosConsideraciones sobre la E/S

HTML no entiende de espacios, por lo que si queremos pasar valores con espacios en la URL deberemos adaptar la cadena con la función urlencode() y recuperar luego los valores originales con urldecode().Si se pasan numerosos valores a través de una URL, lo más práctico es componer la cadena en una variable y luego citarla en el enlace:$parametros="?nombre=Pepe&apellido=García&edad=45";echo "<a href=\"alta.php$parametros\">Alta</a>";

9. Ficheros y directorios

9. Ficheros y directoriosAbrir y cerrar ficheros

Un fichero se abre con la función fopen(), cuya sintaxis es:

fopen(nombre_de_fichero, modo_de_apertura)Los modos de apertura coinciden con los de C:

"r", "r+", "w", "w+", "a", "a+", “x”, “x+” y sus correspondientes versiones para ficheros binarios, añadiendoles una b al final.fopen() devuelve un cursor que nos servirá para manejar el fichero una vez abierto o False si la apertura no tiene éxito.

9. Ficheros y directoriosAbrir y cerrar ficheros

Una forma conveniente de comprobar si la apertura del fichero tuvo éxito es utilizar la función die()<?php

$fichero=@fopen("datos.txt", "r") ordie("No se pudo abrir el fichero");

?>

Para cerrar un fichero utilizaremos fclose(), pasandole como parámetro su cursor<?php

fclose($fichero);?>

9. Ficheros y directoriosLeer el contenido de un fichero

La función fread() se utiliza para leer una cadena de un fichero abierto. Tiene esta sintaxis:

fread(cursor, número_de_caracteres);Devuelve una cadena con los caracteres leidos. Se leerán menos caracteres de los indicados si se alcanza el fin de fichero.La función fgets() es igual que la anterior pero para no solo en el fin de fichero, sino tambien al final de una línea.La función fgetc() lee un sólo caracter de cada vez.

9. Ficheros y directoriosEscribir en un fichero

La función fputs() escribe el contenido de la cadena en el fichero. Tiene un tercer parámetro opcional que indica el número máximo de caracteres a escribir. Tiene esta sintaxis:

fread(cursor, cadena, número_de_caracteres);La función fwrite() es en todo idéntica a la anterior.

9. Ficheros y directoriosRecorrer un fichero

La función rewind() coloca el puntero del fichero al comienzo del mismo.La función fseek() desplaza offset bytes el puntero contados desde la posición indicada por el tercer parámetro. Su sintaxis es:

fseek(cursor, offset, desde_donde)Los valores posibles de desde_donde son:

SEEK_SET, SEEK_CUR y SEEK_ENDLa función ftell() devuelve la posición del puntero medida en bytes desde el principio del fichero.

9. Ficheros y directoriosCopiar, borrar y renombrar un fichero

copy() copia un fichero en otro, su sintaxis es:copy(nombre_actual, nombre_nuevo)

file_exists() comprueba si un fichero existe.file_exists(nombre_fichero)

unlink() borra un fichero, su sintaxis es:unlink(nombre de fichero)

rename() cambia el nombre de un fichero:rename(nombre_actual, nombre_nuevo)

9. Ficheros y directoriosTamaño y tipo de un fichero

filesize() devuelve el tamaño de un ficherofilesize(nombre_de_fichero)

filetype() devuelve un string con el tipo del fichero.filetype(nombre_fichero)

file: es un fichero normal.dir: es un nombre de directorio.link: es un enlace simbólico (sólo en sistema UNIX).fifo: es una pila de tipo FIFO.char: es en dispositivo de tipo carácter, por ejemplo “C:\”.block: es un dispositivo de bloque.unknown: tipo desconocido.

9. Ficheros y directoriosOperaciones con directorios

opendir() abre un directorio del servidor.closedir() cierra un directorio previamente abierto.readdir() lee un nombre de fichero del directorio y avanza el puntero para que apunte al siguiente.rewinddir() mueve el puntero del directorio al principio del mismo.chdir() coloca un directorio como directorio actual.mkdir() crea un directorio dentro del actual.rmdir() borra un directorio especificado.

9. Ficheros y directoriosSubir ficheros al servidor

Con PHP el cliente puede subir ficheros al servidor.La forma habitual de hacerlo será rellenando un formulario entre cuyos elementos habrá uno de tipo "file", en el que el usuario introducirá el nombre del fichero a enviar.La página PHP destino recibirá en la variable que corresponde al elemento "file" el nombre del fichero temporal en el que se guarda momentáneamente en el servidor el fichero recién subido.

9. Ficheros y directoriosSubir ficheros al servidor

El siguiente prodría ser un formulario simple para subir un fichero.<FORM ENCTYPE="multipart/form-data"

ACTION="recibir.php" METHOD=POST><INPUT TYPE="hidden" name="MAX_FILE_SIZE"

value="51200">Fichero: <INPUT NAME="fichero" TYPE="file">

<INPUT TYPE="submit" VALUE="Enviar"></FORM>.

En la página recibir.php aparecerá una variable $_FILES[‘fichero’][‘tmp_name’], con el nombre temporal del fichero.

9. Ficheros y directoriosSubir ficheros al servidor

Además se crean automáticamente las siguientes variables con sus contenidos:$_FILES[‘fichero’][‘name’]: nombre original del fichero subido. $_FILES[‘fichero’][‘size’]: tamaño del fichero que se pasa. $_FILES[‘fichero’][‘type’]: tipo del fichero que se pasa.Con esta información deberemos copiar a otro lugar el fichero, pues el fichero temporal es eliminado automáticamente por el servidor.Podemos usar la función move_uploaded_file()

top related