Top Banner
IT Colima Ene-Jun 2009 1 PHP
136
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: curso_php

IT Colima Ene-Jun 2009 1

PHP

Page 2: curso_php

IT Colima Ene-Jun 2009 2

1. INTRODUCCIÓN:Diferencias entre ASP y PHP

� Software propietario � Free Software

� Plataformas Microsoft

� Varios lenguajes (VBScript, JavaScript)

� Multiplataforma

� Un solo lenguaje: PHP

Page 3: curso_php

IT Colima Ene-Jun 2009 3

Que se necesita para que funcione PHP

� Servidor de páginas http

� Versión compilada de PHP

� Editor de Texto

� Si se requiere de manejar bases de datos MYSQL es el mejor DBMS para PHP

Page 4: curso_php

IT Colima Ene-Jun 2009 4

Características de PHP� Más rápido que ASP

� Lenguaje más fácil y potente

� Integración perfecta con 8 servidores HTTP

� Acceso a 20 tipos de Bases de Datos

� Diseño modular de fácil ampliación

� Licencia abierta

Page 5: curso_php

IT Colima Ene-Jun 2009 5

Historia y DesarrolladoresFechas

•Inicio del desarrollo en otoño de 1994 •PHP Versión 1 en primavera 1995 •PHP Versión 2 1995-1997 •PHP Versión 3 1997-2000 •PHP Versión 4 en el segundo trimestre de 2000

Equipo de Desarrollo (195 personas con acceso al CVS)•Zeev Suraski y Andi Gutmans (Israel)•Shane Caraveo (Florida)•Stig Bakken (Norway)•Andrei Zmievski (Lincoln, Nebraska)•Sascha Schumann (Dortmund, Germany)•Thies C. Arntzen (Hamburg, Germany)•Jim Winstead (Los Angeles)•Sam Ruby (Raleigh, NC) •Rasmus Lerdorf (San Francisco)

Page 6: curso_php

IT Colima Ene-Jun 2009 6

PHP 5� El 13 de julio de 2004, fue lanzado PHP 5, utilizando el motor Zend

Engine II (o Zend Engine 2). La versión más reciente de PHP es la 5.2.4 (30 de agosto de 2007), que incluye todas las ventajas que provee el nuevo Zend Engine 2 como:

� Soporte sólido y REAL para Programación Orientada a Objetos ( o OOP) con PHP Data Objects.

� Mejoras de rendimiento. � Mejor soporte para MySQL con extensión completamente reescrita. � Mejor soporte a XML ( XPath, DOM... ). � Soporte nativo para SQLite. � Soporte integrado para SOAP. � Iteradores de datos. � Excepciones de errores.

Page 7: curso_php

IT Colima Ene-Jun 2009 7

PHP 6� Está previsto el lanzamiento en breve de la rama 6 de PHP,

cuando se lance esta nueva versión, quedarán solo dos ramas activas en desarrollo (PHP 5 y 6) pues se ha comunicado que PHP 4 ha sido discontinuado desde el 13 de Julio de 2007.

� Las diferencias que encontraremos frente a PHP 5.* son:� Soportará Unicode� Limpieza de funcionalidades obsoletas como register_globals,

safe_mode... � PECL � Mejoras en orientación a objetos

Page 8: curso_php

IT Colima Ene-Jun 2009 8

Estadísticas de uso

Fuente: NetcraftAgosto 2000

3,314,634 Dominios, 637,746 Direcciones IP19,823,296 Dominios analizadosPHP instalado en el 16.7% de todos los dominios

Fuente: SecuritySpace.comSeptiembre 2000Informe sobre Módulos Apache

1,322,329 Servidores Apache analizados429,589 (32.49%) PHP247,642 (18.73%) Frontpage133,414 (10.09%) mod_perl111,576 (8.44%) mod_ssl78,030 (5.90%) OpenSSL46,404 (3.51%) ApacheJServ

Page 9: curso_php

IT Colima Ene-Jun 2009 9

Plataformas soportadas

Plataformas (actualidad):•UNIX (todas las variantes) •Win32 (NT/W95/W98/W2000) •QNX •Mac (WebTen) •OS/2 •BeOS

Plataformas (en perparación):•OS/390 •AS/400

Servidores:•Apache (UNIX,Win32) •CGI •fhttpd•ISAPI (IIS, Zeus) •NSAPI (Netscape iPlanet) •Java servlet•AOLServer•Roxen

Servidores (en preparación):•Apache 2.0•WSAPI (O'Reilly WebSite) •phttpd•thttpd

Page 10: curso_php

IT Colima Ene-Jun 2009 10

Bases de datos soportadasSQL

•Adabas D •Empress •IBM DB2 •Informix •Ingres •Interbase•Frontbase•mSQL•Direct MS-SQL •MySQL•ODBC •Oracle (OCI7,OCI8) •PostgreSQL•Raima Velocis•Solid •Sybase

Otros•dBase •filePro (sólo lectura) •dbm (ndbm, gdbm, Berkeley db)

Page 11: curso_php

IT Colima Ene-Jun 2009 11

2. El lenguaje PHP

Page 12: curso_php

IT Colima Ene-Jun 2009 12

2.1. Extensión de los ficheros

� .php3 Indica código PHP 3.x.

� .php4 Indica código PHP 4.x.

� .php Indica código PHP. Preferiremos esta extensión por ser más genérica.

� .phtml Actualmente en desuso.

Page 13: curso_php

IT Colima Ene-Jun 2009 13

2.2. Delimitadores

<? echo 'Primer método de delimitar código PHP'; ?>

<?php echo 'Segundo método, el más usado'; ?>

<script language="php">echo 'Algunos editores (como el FrontPage) Sólo entienden este método'; </script>

<% echo 'Método de compatibilidad con ASP'; %>

Page 14: curso_php

IT Colima Ene-Jun 2009 14

<html><body><?php$H=Date(H);if ( $H>20 || $H<4) {

echo “Buenas noches.”;} else{

echo “Buenos días.”;}?></body></html>

2.2. Delimitadores. Ejemplo.

Page 15: curso_php

IT Colima Ene-Jun 2009 15

<%@ Language=VBScript %><html><body><%IF Hour(time)>20 OR Hour(time)<4 THEN%>Buenas noches.<%ELSE%>Buenos días.<%END IF%></body></html>

2.2. Delimitadores. Ejemplo. ASP

Page 16: curso_php

IT Colima Ene-Jun 2009 16

<html><body><?php if ( Hour(time)>20 || Hour(time)<4) { ?>Buenas noches.<?php } else { ?>Buenos días.<?php }?></body></html>

2.2. Delimitadores. Ejemplo. PHP

Page 17: curso_php

IT Colima Ene-Jun 2009 17

2.3. Fin de línea

print( date("M d, Y H:i:s", time()) );

print ( date( "M d, Y H:i:s",

time() )

);

Page 18: curso_php

IT Colima Ene-Jun 2009 18

2.4. Comentarios

/* Comentarios estilo C.* Pueden extenderse durante varias líneas.*/

// Comentarios estilo C++. Hasta fin de línea.

# Comentarios estilo Perl. Hasta fin de línea.

Page 19: curso_php

IT Colima Ene-Jun 2009 19

2.5.1. Variables. Declaración y Uso.

• NO hace falta declararlas• Llevan delante el signo del dólar ‘$’.

$var_1 = 123;$var_2 = ’hola’;$var_3 = $var_1 * 2;

Page 20: curso_php

IT Colima Ene-Jun 2009 20

$mi_variable = ’Inicializamos como texto’;$mi_variable = 3; // Entero.$mi_variable = 3.14 * $mi_variable; // Float.$mi_variable = new MiClase(); // Objeto.

Variables débilmente tipadas (tipo mixed).

2.5.2. Variables. Tipado.

Page 21: curso_php

IT Colima Ene-Jun 2009 21

2.5.2. Variables. Tipado. Conversión automática.

PHP realiza conversiones automáticas de tipo:

$mivar = 123;echo $mivar; // Se convierte a string

$mivar = ’3’; // Se convierte a entero$mivar = 2 + $mivar; // para realizar la suma

Page 22: curso_php

IT Colima Ene-Jun 2009 22

2.5.2. Variables. Tipado. Conversión explícita.

Operador cast:

$mivar = (string)123;

Cabiar el tipo de una variable:

$mivar = 12;settype($mivar, "double");

Page 23: curso_php

IT Colima Ene-Jun 2009 23

2.5.3. Variables. Ámbito.

� En el cuerpo de un fichero, las variables son GLOBALES al fichero y ficheros incluidos.

� En una función, son LOCALES a esa función.

� Dentro de una clase, sólo pueden ser accedidas a través del operador “->”sobre el nombre del objeto.

Page 24: curso_php

IT Colima Ene-Jun 2009 24

2.5.4. Referencias.

Se definen con el carácter ‘&’:

$alias = &$variable

Se puede eliminar una referencia con la función unset():

$a = 1;$b = &$a;unset ($a); // Pero $b sigue valiendo 1

Page 25: curso_php

IT Colima Ene-Jun 2009 25

2.6. Tipos de datos.

•Enteros, en decimal, octal o hexadecimal.$MiVar = 123;

•Punto flotante.$MiVar = 1.3e4;

•Arrays.$MiVar[2] = 123;

•Strings.$MiVar = “Cadena de texto\n”;

•Objetos:$MiVar = new MiClase();

Page 26: curso_php

IT Colima Ene-Jun 2009 26

2.6.3. Tipos de datos. Arrays.

$MiArray[0] = 1;

$MiArray[1] = “hola!!”;

$MiArray[] = 3;

echo $MiArray[2]; // 3

Page 27: curso_php

IT Colima Ene-Jun 2009 27

2.6.3. Tipos de datos. Arrays (2).

Funcionan como vectores o tablas hash al mismo tiempo:

$MiArray[“nombre”] = “Homer”;echo $MiArray[0]; // 1echo $MiArray[“nombre”]; // “Homer”

Y pueden tener más de una dimensión:

$MiOtroArray[1][“pepe”][4] = “3 dimensiones!”;

referencia

Page 28: curso_php

IT Colima Ene-Jun 2009 28

2.6.3. Tipos de datos. Arrays (3).

También se pueden definir con el constructor array() :

$OtroArrayMas = array( 1, “hola”, 5);

$YOtroArray = array(0 => 1,1 => “hola”,2 => 5,3 => 8,“nombre” => “Homer”

);

Page 29: curso_php

IT Colima Ene-Jun 2009 29

2.6.4. Tipos de datos. Strings.Comillas dobles.

• Si se delimitan entre comillas dobles (”), se expandirá cualquier variable que haya dentro de la cadena. Además, se pueden incluir ciertas secuencias de escape, al igual que en C:

Secuencia Significado

\n Nueva línea

\r Retorno de carro

\t Tabulación horizontal

\\ Barra invertida

\$ Símbolo del dólar

\" Dobles comillas

\[0-7]{1,3} Carácter en octal

\x[0-9A-Fa-f]{1,2} Carácter en hexadecimal

Page 30: curso_php

IT Colima Ene-Jun 2009 30

2.6.4. Tipos de datos. Strings (2).Comillas simples.

� Si se delimitan entre comillas simples (’), las variables no se expanden y además las únicas secuencias de escape que se reconocen son “\\” y “\'” (barra invertida y comillas simples.)

Page 31: curso_php

IT Colima Ene-Jun 2009 31

2.6.4. Tipos de datos. Strings (3).“Here Doc”

$cadena = <<<FINCADEsto es un ejemplo de cadena como “here doc”.La variable \$a vale $a.Ahora vamos a finalizar la cadena:FINCAD

� Utilizando la sintaxis “here doc” de Perl. Las variables se expanden y no hace falta escapar las comillas:

Page 32: curso_php

IT Colima Ene-Jun 2009 32

2.6.4. Tipos de datos. Strings (4).

Para concatenar cadenas se utiliza el operador ‘.’ :

$cad = ‘A esta cadena ‘;$cad = $cad . ‘le vamos a añadir más texto.’;

Se puede acceder a cada carácter como si fuera un array:

$cad2 = “Tercer carácter de \$cad : ‘$cad[2]’”;

Page 33: curso_php

IT Colima Ene-Jun 2009 33

2.7. Constantes.

define(“SALUDO”, “Hola, mundo!”);echo “La constante SALUDO vale ” . SALUDO;

Las constantes se definen con la función define():

Las constantes en PHP se diferencian de las variables en que:

•no llevan el símbolo del dólar delante.•puede accederse a ellas desde cualquier parte del código donde han sido definidas, sin restricciones de ámbito como en las variables.•no pueden ser redefinidas o borradas una vezdefinidas.•sólo pueden contener valores escalares, no vectores.

Page 34: curso_php

IT Colima Ene-Jun 2009 34

2.8. Mayúsculas y minúsculas.

Comportamiento mixto en variables y funciones:

•En las variables, las mayúsculas y minúsculasIMPORTAN. •En los nombres de funciones y palabras reservadas, las mayúsculas NO IMPORTAN.

Page 35: curso_php

IT Colima Ene-Jun 2009 35

2.9.1. Operadores aritméticos.

Operación Nombre Resultado

$a + $b Suma Suma de $a y $b.

$a - $b Resta Diferencia entre $a y $b.

$a * $b Multiplicación Producto de $a y $b.

$a / $b División Cociente de $a y $b.

$a % $b Módulo Resto de la operación $a/$b.

Page 36: curso_php

IT Colima Ene-Jun 2009 36

2.9.2. Auto-incremento y auto-decremento.

OperaciónNombre Resultado

++$a Pre-incremento Incrementa $a en 1, y devuelve $a (incrementado).

$a++ Post-incremento Devuelve $a, y después lo incrementa en 1.

--$a Pre-decremento Decrementa $a en 1, y después lo devuelve.

$a-- Post-decremento Devuelve $a, y después lo incrementa en 1.

Page 37: curso_php

IT Colima Ene-Jun 2009 37

2.9.3. Operadores de bits.

Operación Nombre Resultado

$a & $b Y Se ponen a 1 los bits que están a 1 en $a y $b.

$a | $b O Se ponen a 1 los bits que están a 1 en $a o $b.

$a ^ $b O Exclusivo Se ponen a 1 los bits que están a 1 en $a o $b, pero no en ambos.

~ $a No Se invierten los bits (se cambian 1 por 0 y viceversa.)

$a << $b Desp. Izq. Desplaza $b posiciones a la izquierda todos los bits de $a.

$a >> $b Desp. Drch. Desplaza $b posiciones a la derecha todos los bits de $a.

Page 38: curso_php

IT Colima Ene-Jun 2009 38

2.9.4. Operadores lógicos.

Operación Nombre Resultado

$a and $b Y Cierto si $a y $b son ciertos.

$a or $b O Cierto si $a o $b es cierto.

$a xor $b O Exclusivo. Cierto si $a o $b es cierto, pero no ambos.

! $a No Cierto si $a es falso.

$a && $b Y Cierto si $a y $b son ciertos.

$a || $b O Cierto si $a o $b es cierto.

Page 39: curso_php

IT Colima Ene-Jun 2009 39

2.9.5. Operadores. Asignación, igualdad e identidad.

OperaciónNombre Resultado

$a = $b Asignación Asigna el valor de una variable o expresión del segundo término a la variable del primer término.

$a == $b Igualdad Compara si el valor de los dos operandos es el mismo.

$a === $b Identidad Compara si el valor es el mismo y, además, el tipo coincide.

Page 40: curso_php

IT Colima Ene-Jun 2009 40

2.9.5. Operadores. Asignación, igualdad e identidad.Ejemplo.

$var1 = 1; // Asignación$var2 = 1;$var3 = “1”;($var1 == $var2) // Cierto, son iguales($var1 == $var3) // Son iguales (tras conversión)($var1 === $var2) // Cierto, son idénticas($var1 === $var3) // FALSO, el tipo no coincide

Page 41: curso_php

IT Colima Ene-Jun 2009 41

2.9.5. Operadores. Asignación,igualdad e identidad. Error.

$var1 = 1;$var2 = 2;if( $var1 = $var2 ) {

echo ‘iguales’;} else {

echo ‘distintas’;}

Page 42: curso_php

IT Colima Ene-Jun 2009 42

2.9.6. Comparaciones.

Operación Nombre Resultado

$a != $b No igual Cierto si el valor de $a no es igual al de $b.

$a !== $b No idéntico Cierto si $a no es igual a $b, o si no tienen el mismo tipo.

$a < $b Menor que Cierto si $a es estrictamente menor que $b.

$a > $b Mayor que Cierto si $a es estrictamente mayor que $b.

$a <= $b Menor o igual que Cierto si $a es menor o igual que $b.

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

Page 43: curso_php

IT Colima Ene-Jun 2009 43

2.9.7. Operadores de cadenas.

$a = 1;$b = 2;

Echo ‘El resultado de ‘ . $a . ‘ + ‘ . $b . ‘ es ‘ , $a + $b;

Echo “El resultado de $a + $b es “ , $a + $b;

Page 44: curso_php

IT Colima Ene-Jun 2009 44

2.9.8. Atajos en la asignación.

+= -= *= /= %= &= ^= .= >>= y <<=

$var1 += 3; // $var1 = $var1 + 3;$var2 /= 2; // $var2 = $var2 / 2;$var3 >>= 1; // $var3 = $var3 >> 1;

Page 45: curso_php

IT Colima Ene-Jun 2009 45

2.9.9. Precedencia.

,

or

xor

and

print

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

? :

||

&&

|

^

&

== != === !==

< <= > >=

<< >>

+ - .

* / %

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

[

new

Page 46: curso_php

IT Colima Ene-Jun 2009 46

2.10.1. Estructuras de control.if … elseif … else

if (expresión) {

comandos}

if (expresión) {

comandos_cierto} else {

comandos_falso}

Page 47: curso_php

IT Colima Ene-Jun 2009 47

2.10.1. Estructuras de control.if … elseif … else(2)

if (expresion1) {

comandos1} elseif (expresion2) {

comandos2} elseif (expresion3) {

comandos3}...else {

comandosElse}

Page 48: curso_php

IT Colima Ene-Jun 2009 48

2.10.2. whiley do … while

while (expresión) {

comandos}

do {

comandos} while (expresión);

Page 49: curso_php

IT Colima Ene-Jun 2009 49

2.10.4. for

for (expresión1; expresión2; expresión3) {

comandos}

$factorial5 = 1;for ($i = 2; $i <= 5; $i++ ) {

$factorial5 *= $i;}

Page 50: curso_php

IT Colima Ene-Jun 2009 50

2.10.4. for (2)

for ($factorial5 = 1, $i = 2; $i <= 5; $i++ ) {

$factorial5 = $factorial5 * $i;}

for ($factorial5=1, $i=2; $i<=5; $factorial5*=$i, $i++);

Page 51: curso_php

IT Colima Ene-Jun 2009 51

2.10.4. for (3). ASP.

’ ASP<%FOR i=1 TO 100%><%=MiVar%><%NEXT%>

// PHP<?phpfor ($i = 1; $i <= 100; $i++) {

echo $MiVar;}?>

Page 52: curso_php

IT Colima Ene-Jun 2009 52

2.10.5. foreach

foreach ( array as variable) {

comandos}

$a = array (1, 2, 3, 17);foreach ($a as $v){

print "Valor actual de \$a: $v.\n";}

// Valor actual de $a: 1// Valor actual de $a: 2// Valor actual de $a: 3// Valor actual de $a: 17

Page 53: curso_php

IT Colima Ene-Jun 2009 53

2.10.5. foreach(2)

foreach ( array as indice => variable){

comandos}

Page 54: curso_php

IT Colima Ene-Jun 2009 54

2.10.6. switch

switch (variable) {

case valor1:comandos1

case valor2:comandos2

...case valorN:

comandosNdefault:

comandosDefault}

Page 55: curso_php

IT Colima Ene-Jun 2009 55

2.10.6. switch(2)

switch ($i) {

case 1:echo “Código del 1”;

case 2:echo “Código del 2”;

case 3:echo “Código del 3”;break;

case 4:echo “Código del 4”;

}

Page 56: curso_php

IT Colima Ene-Jun 2009 56

2.11. Cierto o falso.Valores numéricos.

$x = 1; // $x if( $x ) // se evalúa a cierto

$x = 0; // $x definida como el entero 0if( $x ) // se evalúa a falso

Page 57: curso_php

IT Colima Ene-Jun 2009 57

2.11. Cierto o falso.Strings.

$x = "hello"; // asignamos una cadena a $xif( $x ) // se evalúa a cierto

$x = ""; // cadena vacíaif( $x ) // evalúa a falso

// Excepción:$x = "0"; // cero en una cadenaif( $x ) // evalúa a falso

// (se convierte a entero)

Page 58: curso_php

IT Colima Ene-Jun 2009 58

2.11. Cierto o falso.Arrays.

$x = array(); // $x es un array vacíoif( $x ) // se evalúa como falso

$x = array( "a", "b", "c" ); if( $x ) // se evalúa a cierto

Page 59: curso_php

IT Colima Ene-Jun 2009 59

2.11. Cierto o falso.Objetos.

Class Yod {} // clase vacía$x = new Yod(); if( $x ) // se evalúa a falso

Class Yod { // clase no vacíavar $x = 1;

} $x = new Yod(); if( $x ) // se evalúa a cierto

Page 60: curso_php

IT Colima Ene-Jun 2009 60

2.11. Cierto o falso.Constantes.

•TRUE es el valor entero decimal 1.

•FALSE es la cadena vacía.

Page 61: curso_php

IT Colima Ene-Jun 2009 61

2.12. Funciones.

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

comandosreturn $salida;

}

Page 62: curso_php

IT Colima Ene-Jun 2009 62

2.12. Funciones. (2)Ejemplo.

function factorial ($valor) {if ($valor < 0) {

return –1; // Error}

if ($valor == 0 ) {return 1;

}

if ($valor == 1 || $valor == 2) {return $valor;

}

$ret = 1;for ($i = 2; $i <= $valor; $i++) {

$ret = $ret * $i;}return $ret;

}$factorial5 = factorial(5);Echo $factorial5;

Page 63: curso_php

IT Colima Ene-Jun 2009 63

2.12. Funciones. (3)Valores por defecto.

function enlace($url) {

echo “<a href= $url>Pulsa aquí</a>”;}

Echo enlace(“http:// www.itcolima.mx ”);Echo “<br>”;Echo enlace(“http://localhost”);

Page 64: curso_php

IT Colima Ene-Jun 2009 64

2.12.1. Funciones.Argumentos por referencia.

function MiFuncion(&$var) {

$var++;}

$a = 5;MiFuncion($a);// Aquí $a == 6

Page 65: curso_php

IT Colima Ene-Jun 2009 65

2.12.2. Funciones.Devolución por referencia.

function &buscar_cliente($nombre) {

// ... buscamos ...return $registro;

}

$cliente = &buscar_cliente(“Juan”);echo $cliente->dni;

Page 66: curso_php

IT Colima Ene-Jun 2009 66

2.13. includey require

require(“cabecera.inc”);

If ($incluir == TRUE) {

$ficheros = array(“uno”, ”dos”, ”tres”);foreach ($ficheros as $fichero) {

include($fichero);}

}

Page 67: curso_php

IT Colima Ene-Jun 2009 67

3. Programando en PHP

Page 68: curso_php

IT Colima Ene-Jun 2009 68

3.1.1. Forms.

<form action=“datos.php" method="POST">Su nombre: <input type=text name=nombre><br>Su edad: <input type=text name=edad><br><input type=submit></form>

<?phpecho “Tu nombre es:”.$_POST[‘nombre’].”<br>”;echo “Tu edad es:”.$_POST[‘ edad’].”<br>”;echo “Tu edad es:”.$edad.”<br>”; // con register_globals=on?>

formulario.html

datos.php

Page 69: curso_php

IT Colima Ene-Jun 2009 69

3.1.2. Forms. (todo en la misma pagina)

<?phpif ( isset($_POST["Enviar"]) ) { // validando si existe el boton Enviar

echo "el nombre es".$_POST["nombre"]."<br>";echo "la edad es".$_POST["edad"]."<br>";

}else { ?><p>Captura de datos personales:</p><form id="form1" name="form1" method="post" action="" ><p>Nombre: <input type="text" name="nombre" id="nombre" /> <br />Edad: <input type="text" name="edad" id="edad" /> </p>

<p> <input type="submit" name="Enviar" id="Enviar" value="Enviar" /><input type="reset" name="Limpiar" id="Limpiar" value="Limpiar" /> </p>

</form><? } ?></body></html>

Page 70: curso_php

IT Colima Ene-Jun 2009 70

3.1.2. Forms. (todo en la misma pagina)

Ejercicios con formularios

Page 71: curso_php

IT Colima Ene-Jun 2009 71

3.2. Cookies.

setcookie(“PruebaCookie”, “expiraré dentro de una hora”,time() + 3600);

setcookie(“PruebaCookie”, “”, time());

int setcookie (string nombre [, string valor[, int fin [, string camino[, string dominio[, int seguro]]]]])

Page 72: curso_php

IT Colima Ene-Jun 2009 72

3.3. Sesiones.

bool session_start(void);bool session_register (mixed name [, mixed ...])bool session_destroy(void);

// Ejemplo, un contadorsession_start(); print($contador); $contador++;session_register("contador");

<A HREF="siguiente.php?<?=SID?>">Continuar</A>

Page 73: curso_php

IT Colima Ene-Jun 2009 73

3.4. Tratamiento de errores.

$nombre = '/etc/shadow';

$fichero = @fopen ($nombre, 'r');

if( !$fichero ) {

die("No se pudo abrir el fichero ($nombre)");}

Page 74: curso_php

IT Colima Ene-Jun 2009 74

3.5.1. Cadenas. Comparación.

El operador (==) nos puede servir para evaluar si dos cadenasde caracteres son iguales dentro de una estructura de control. Además, tenemos la función strcmp( ) , que compara bit a bit dos cadenas de caracteres. Atendiendo al valor de salida de la función, podemos obtener los siguientes resultados:

• Si el valor que se obtiene es 0, las dos cadenas son exactamente igual.• Si obtenemos un valor negativo, el primer string es máspequeño que el segundo.• Si obtenemos un valor positivo, el primer string es másgrande que el segundo.

Page 75: curso_php

IT Colima Ene-Jun 2009 75

3.5.1. Cadenas. Comparación.

int strcmp (string str1, string str2)int strcasecmp (string str1, string str2)(esta no es sensible a mayúsculas)

// Ejemplo:if (strcmp($a, $b) == 0) {

echo ‘iguales’;}

Page 76: curso_php

IT Colima Ene-Jun 2009 76

3.5.2. Cadenas. Subcadenas.

La funciónsubstr() permite seleccionar un conjunto de caracteres de una cadena, quedando intactoel string original.

string substr (string cadena, int inicio[, int tamaño])

$str = substr('abcdef', 2, 3); // cde$str = substr('abcdef', -2); // ef$str = substr('abcdef', -2, 1); // e$str = substr('abcdef', 1, -2); // bcd

Page 77: curso_php

IT Colima Ene-Jun 2009 77

3.5.2. Cadenas. Subcadenas. (2)La funciónstrpos() encuentra en un string la posición de un carácter determinado.int strpos (string cadena, string referencia

[, int inicio])int strrpos (string cadena, char referencia)

$i = strpos('cadena de prueba', 'de');// $i = 2$i = strpos('cadena de prueba', 'de', 5);// $i = 7$s = strrpos('cadena de prueba', 'de');// $s = 7$s = strstr('cadena de prueba', 'de');// $s = dena de prueba

Page 78: curso_php

IT Colima Ene-Jun 2009 78

3.5.2. Cadenas. Subcadenas. (2)<?php

$cadena = "Esta cadena tiene muchas letras";echo "La primera ocurrencia de 'tiene' es " .strpos($cadena,"tiene") . "<br>";

?>

<?php$cadena = "Esta cadena tiene muchas letras";echo "La primera ocurrencia de 'a' es " . strpos($cadena, "a" ) ."<br>";echo "La primera ocurrencia desde atrás de 'a' es " .strrpos($cadena, "a") . "<br>";

?>

Page 79: curso_php

IT Colima Ene-Jun 2009 79

3.5.2. Cadenas. Subcadenas. (2)string strstr (string cadena, string referencia)

•La función strstr() recibe como parámetros una cadena de caracteresdonde buscar y otra con un conjunto de caracteres que queremos encontrar.

•Si se encuentra el patrón de búsqueda, el resultado será una cadena de caracteres que comenzará justo en el patrón, hasta el final del string primero.

•Si no se encuentra el patrón el resultado será false.

< ?php$cadena = "Esta cadena tiene muchas letras";echo "La primera ocurrencia de 'cadena' es: " .strstr ($cadena,"cadena") . "<br>";

?>

Page 80: curso_php

IT Colima Ene-Jun 2009 80

3.5.2. Cadenas. Limpieza de cadenas

Sirven para limpiar espacios en blanco al principio de la cadena, al final o en cualquier parte desde el principio al final y son respectivamente ltrim( ) , chop()y trim()subcads4.php<?php

$salto_linea = "\n";$cadena = " cadena con varios espacios en blanco " ;echo $salto_linea . $cadena . " tamaño: " . strlen($cadena);echo "<br>";echo $salto_linea . ltrim($cadena) . " tamaño: ".strlen(ltrim($cadena));echo "<br>";echo $salto_linea . chop($cadena) . " tamaño: ".strlen(chop($cadena));echo "<br>";echo $salto_linea . trim($cadena) . " tamaño: ".strlen(trim($cadena));

?>

Page 81: curso_php

IT Colima Ene-Jun 2009 81

3.5.2. Cadenas. Sustitucion de cadenasLa funciónstr_replace()toma como parámetros un conjunto de caracteres a buscar, un grupo que debe sustituirse por el anterior y una cadena de caracteres sobre la que actuar.

<?php //subcads5.php

$cadena = "Esta cadena tiene muchas letras";

$cadena = str_replace("Esta","Este",$cadena);

echo str_replace("cadena","conjunto",$cadena);

?>

Si en la cadena existiera más de una instancia del conjunto buscado, todas las ocurrenciasquedarían cambiadas.

<?php//subcads6.php

$cadena = "Esta cadena tiene muchas letras y cadenas";

$cadena = str_replace("Esta","Este",$cadena);

echo str_replace("cadena","conjunto",$cadena);

?>

Page 82: curso_php

IT Colima Ene-Jun 2009 82

3.5.2. Cadenas. Funciones de mayúscula y minúsculaLas funcionesstrtolower() y strtoupper() devuelven la cadena que

se pasa como argumento, completamente en minúscula o mayúscularespectivamente.

<?php//subcads8.php

$cadena = "Hay palabras en MAYÚSCULAS y en minúsculas<br>" ;

echo strtolower($cadena) ;

echo strtoupper($cadena);

?>

Page 83: curso_php

IT Colima Ene-Jun 2009 83

3.5.2. Cadenas. Funciones de mayúscula y minúsculaSi lo que realmente nos interesa es que la primera letra de un textoaparezca como letra Capital o, que letras iniciales de cada palabra en una frase aparezcan en mayúscula, tenemos las funciones ucfirst( ) y ucwords( ) .

<?php$cadena = "había una vez...<br>";echo ucfirst($cadena);$cadena2 = "linux user group";echo "LUG significa ".ucwords($cadena2) ;

?>

Page 84: curso_php

IT Colima Ene-Jun 2009 84

3.5.2. Cadenas. Expresiones regulares� Las funciones vistas anteriormente basan su potencia en la

búsqueda o sustitución de los caracteres de una cadena, peroson poco útiles cuando tratamos de comprobar si un conjuntode caracteres cumple un formato determinado.

� Si solicitamos mediante un formulario un correo electrónico, necesitamos saber, a priori, si ese correo por lo menos está bienconstruido

[email protected]

[email protected]

Page 85: curso_php

IT Colima Ene-Jun 2009 85

3.5.2. Cadenas. Expresiones regulares

�La idea es poder descartar de alguna forma los correos escritos:

alumno @hotmail.org

[email protected]

alumno@@hotmail.org

Page 86: curso_php

IT Colima Ene-Jun 2009 86

3.5.2. Cadenas. Comprobar expresiones regulares

La funciónereg()es capaz de comprobar si una cadena se correspondecon el patrón que se pasa como parámetro. Toma dos argumentosobligatorios, una expresión regular y una cadena de caracteres dondebuscar el patrón. Seguidamente puede ver un ejemplo completo de utilización de expresiones regulares y la función:

Page 87: curso_php

IT Colima Ene-Jun 2009 87

3.5.2. Cadenas. Expresiones regulares� Las expresiones

regulares son patrones de búsqueda dentro de cadenas.

� Estos patrones se construyenmediante caracteresespeciales quecumplen unasreglasdeterminadas

Page 88: curso_php

IT Colima Ene-Jun 2009 88agrupacion sin almacenar en variable(?: )

agrupación almacenandola a una variable( )Agrupando

una u otra|Alternar

entre 4 y 8{4,8}

4 o más{4,}

4 exactos{4}

0 0 1 (”quizas a”)?

0 o mas (”quizas algunos”)*

1 o mas (”algunos”)+

Agrupaciones aplicadas a elementos

cualquier carácter que no sea un espacio[^[:space:]]

cualquier digito[[:digit:]]

cualquier letra[[:alpha:]]

cualquier espacio (espacio \n \r o \t)[[:space:]]

cualquier carácter.

cualquier carácter hexadecimal (’0′ a ‘9′ o ‘a’ a ‘f’)[a-fA-F0-9]

cualquier carácter excepto aAeEiou[^aAeEiou]

cualquier carácter incluído en [ ][aAeEiou]

Grupo de carácteres

Termina con$

Empieza con^Delimitadores

Códigos hexadecimales\xa3

Códigos de control\cJ \cG

Nueva linea, tabulación y retorno de carro\n \t \r

Precede un caracter especial con el signo \ para cancelar su significado\$ \^ \+ \\ \?

Letras, digitos y cualquier carácter especiala A y 6 % @

Caracteres literalesLocalización de un carácter concreto

DescripciónEjemploTipo de Operador

Page 89: curso_php

IT Colima Ene-Jun 2009 89

3.5.2. Cadenas. Expresiones regulares

[ a - z ] + @ [ a - z ] + \ . o rg

�La primera parte, [a-z] +, nos dice que aceptará una letra, o conjunto de letras, sin espacios y en minúsculas, que pueden corresponderse con el nombre de usuario de la cuenta de correo.

� Después aceptará un símbolo@, seguido de otro conjunto de caracteres, correspondientes al servidor de correo.

�La última parte de la expresión la componen los símbolos \ ., queindican que tiene que aparecer un punto que separe la descripción del servidor del dominio y la cadenaorg , que obliga a que todos los correossean de dominio no gubernamental.

Page 90: curso_php

IT Colima Ene-Jun 2009 90

3.5.2. Cadenas. Expresiones regulares

^[ a - z ]+@[ a - 2 ] + \ . o r g$

Obliga a que el comienzo de la cadena y el final sean parte de la expresión.

Page 91: curso_php

IT Colima Ene-Jun 2009 91

3.5.2. Cadenas. Expresiones regularesTambién podemos encontrarnos con que existen correosintroducidos correctamente, pero el dominio es otrodistinto a org. Esta vez la solución es introducir el operador O lógico |, que permite elegir entre variasopciones:

^ [ a - z ] +@ [ a - z ] + \ . ( o r g | c o m | n e t )$

Page 92: curso_php

IT Colima Ene-Jun 2009 92

3.5.2. Cadenas. Expresiones regulares�Un problema menor, aunque habitual en el ámbito de los correos electrónicos, es la utilización de signos de puntuación para separar nombres y apellidos y servidoresde servidores virtuales.

� Por ejemplo, el correo siguiente es correcto, pero no seríaevaluado por la expresión anterior:

[email protected]

Page 93: curso_php

IT Colima Ene-Jun 2009 93

3.5.2. Cadenas. Expresiones regulares

[email protected]

�Solución

^[a-z\.]+@[a-z\.]+\.(org|com|net|edu)$

Page 94: curso_php

IT Colima Ene-Jun 2009 94

3.5.2. Cadenas. Comprobar expresiones regulares

<?php

$correo = "[email protected]";

$correol = "ALUMNO@[email protected]";

$correo2 = "@[email protected]";

if ( ereg("^[a-z\.]+@[a-z\.]+\.(org|com|net|edu)$",$correo) ){

echo "El correo $correo se acepta.<br>";

} else {

echo "El correo $correo no cumple el patrón.<br>";

}

if (ereg("^[a-z\.]+@[a-z\.]+\.(org|com|net|edu)$",$correol) ) {

echo "El correo $correol se acepta.<br>";

}else {

echo "El correo $correol no cumple el patrón.<br>";

}

if (ereg("^[a-z\.]+@[a-z\.]+\.(org|com|net|edu)$",$correo2)) {

echo "El correo $correo2 se acepta.<br>";

}else {

echo "El correo $correo2 no cumple el patrón.<br>";

}

?>

Page 95: curso_php

IT Colima Ene-Jun 2009 95

3.5.3. Cadenas.Imprimir y formatear.

int printf (string formato [, mixed args...])string sprintf (string formato [, mixed args...])

1. Relleno2. Alineación3. Número de caracteres4. Precisión5. Tipo

% El carácter de tanto por ciento.b Entero en binario.c Entero como carácter ASCII.d Entero en decimal.f Double en punto flotante.o Entero en octal.s Cadena.x Entero en hexadecimal (minúsculas).X Entero en hexadecimal (mayúsculas).

Secuencias de formato

Page 96: curso_php

IT Colima Ene-Jun 2009 96

3.5.3. Cadenas. Imprimir y formatear. (2)

<?php$dia=17;$mes=3;$anio=2009;printf("%02d/%02d/%04d", $dia, $mes, $anio); echo "<br>";$pago1 = 68.75;$pago2 = 52.35;$pago = $pago1 + $pago2;

// echo $pago mostraría "123.1"// Mostrar al menos un dígito entero y exactamente // dos decimales, rellenando con ceros

printf ("%01.2f", $pago);?>

Page 97: curso_php

IT Colima Ene-Jun 2009 97

3.5.4. Escapar caracteres.SQL.

$busca = “D’Alton”; // Habrá que escapar el apóstrofe

$sql = ‘SELECT * FROM usuariosWHERE apellido = \’’ .addslashes($busca) . ‘\’’;

Page 98: curso_php

IT Colima Ene-Jun 2009 98

3.5.4. Escapar caracteres.Shell.

string system (string comando [, int valor_salida])

echo system(“finger $usuario”);

¿Qué pasa si $usuario=“pepe ; apachectl stop” ?

string escapeshellcmd (string comando)

Page 99: curso_php

IT Colima Ene-Jun 2009 99

3.5.4. Escapar caracteres.HTML.

$valor = “a>b”;echo ‘<input type=hidden name=var value=”’ .

htmlspecialchars($valor) . ‘”>’;

// <input type=hidden name=var value=”a&gt;b”>

string nl2br (string cadena)

Page 100: curso_php

IT Colima Ene-Jun 2009 100

3.5.5. Extraer campos.

array explode (string delimitador, string cadena[, int límite])

string implode (string delimitador, array campos)

$cadena = implode(“:”, $campos);

$cadena = “campo1:campo2:campo3”;$campos = explode(“:”, $cadena);

Page 101: curso_php

IT Colima Ene-Jun 2009 101

3.5.5. Extraer campos.Expresiones regulares.

array split (string delimitador, string cadena[, int límite])

$fecha = "12/4 2000";

$campos = split ('[ /.-]', $fecha);

Page 102: curso_php

IT Colima Ene-Jun 2009 102

3.5.6. Recorrer un array.

$arr = array(1,'cosa',1.57,'gato'=>'raton','perro'=> 'gato');

current($arr); // 1 next($arr); // cosacurrent($arr); // cosaprev($arr); // 1 end($arr); // gatocurrent($arr); // gatokey($arr); // perroreset($arr); // 1 each($arr); // array(0,1) each($arr); // array(1,'foo') each($arr); // array(2,1.57)

reset(), end(), next(), each(), current(), key()

Page 103: curso_php

IT Colima Ene-Jun 2009 103

3.5.7. Ordenar un array.

• sort(): Ordena el array por contenido en orden ascendente.

• rsort(): Ordena por contenido en orden descendente.

• ksort(): Ordena por el índice en orden ascendente.

• rksort(): Ordena por el índice en orden descendente.

Page 104: curso_php

IT Colima Ene-Jun 2009 104

3.5.8. Otras funciones.

string trim (string cadena)string ltrim (string cadena)string rtrim (string cadena)

string strtoupper (string cadena)string strtolower (string cadena)string ucfirst (string cadena)

Eliminar espacios en blanco:

Mayúsculas y minúsculas:

Page 105: curso_php

IT Colima Ene-Jun 2009 105

3.6.1. Ficheros. Abrir y cerrar.

int fopen (string nombre, string modo[, int include_path])

int fclose (int identificador)

Modos:•‘r’ Sólo lectura. Puntero al inicio.•‘r+’ Lectura/escritura. Puntero al inicio.•‘w’ Sólo escritura. Se trunca el fichero.•‘w+’ Lectura/escritura. Se trunca el fichero.•‘a’ Sólo escritura. Puntero al final.•‘a+’ Lectura/escritura. Puntero al final.

Page 106: curso_php

IT Colima Ene-Jun 2009 106

3.6.2. Ficheros.Leer y escribir.

string fgets (int identificador, int tamaño)

mixed fscanf (int identificador, string formato[, string var1...])

int feof (int identificador)

array file (string fichero[, int include_path])

int fwrite (int identificador, string cadena [, int tamaño])

Page 107: curso_php

IT Colima Ene-Jun 2009 107

3.6.3. Ficheros.Copiar / renombrar / borrar.

int copy (string origen, string destino)

int rename (string origen, string destino)

int unlink (string fichero)

Page 108: curso_php

IT Colima Ene-Jun 2009 108

3.6.4. Directorios.

int chdir (string directorio)int mkdir (string nombre, int modo)int rmdir (string nombre)

int opendir (string nombre)string readdir (int identificador)void closedir (int identificador)

Page 109: curso_php

IT Colima Ene-Jun 2009 109

3.6.4. Directorio. Listado de contenidos.

$direcotrio = opendir('.');

while (($fichero = readdir($directorio)) !== FALSE) {

echo "$fichero\n";}

closedir($directorio);

Page 110: curso_php

IT Colima Ene-Jun 2009 110

3.6.5. Ficheros. Envío.

<FORM ENCTYPE="multipart/form-data" ACTION="recibir.php" METHOD=POST>

<INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="1000">Fichero: <INPUT NAME="fichero" TYPE="file"><INPUT TYPE="submit" VALUE="Enviar"></FORM>

// Contenido de “recibir.php”echo ’Recibido el fichero: "’.$fichero_name.’"<br>’;echo ’Tamaño del fichero: ’ . $fichero_size . ’<br>’;echo ’Tipo mime: ’ . $fichero_type . ’<br>’;rename($fichero, $fichero_name);

Page 111: curso_php

IT Colima Ene-Jun 2009 111

3.7.1. POO. Definición de una clase.

class NombreClase{

var $variables;

function metodos ($parametros){

codigo}

}

Page 112: curso_php

IT Colima Ene-Jun 2009 112

2.7.1. POO. Definición de una clase.Ejemplo.

class Coche {var $velocidad; // Velocidad actual

// Constructor por defecto. El coche está parado.function coche() {

$this->velocidad = 0;}// Constructor que indica la velocidad inicial.function coche($vel) {

$this->velocidad = $vel;}// Método acelerar. El coche va más rápido.function acelerar() {

$this->velocidad++;}// Método frenar. El coche va más lento hasta frenar.function frenar() {

if ($this->velocidad > 0) {$this->velocidad--;

}}

}

Page 113: curso_php

IT Colima Ene-Jun 2009 113

2.7.1. POO. Modificadores de acceso

Restringiendo el acceso a las propiedades (encapsulacion)• Modificadores de acceso:

•Publico (public ) //por defecto•Privado (private )•Protegido (protected )

• Cuando se declara una propiedad como “privada ” solo la misma clase puede acceder a la propiedad

• Cuando se declara como “protected ” solo la misma clasey las clases derivadas puede acceder a la propiedad(herencia).

Page 114: curso_php

IT Colima Ene-Jun 2009 114

2.7.1. POO. Modificadores de acceso<?php

class persona{var $nombre;public $departemento, $edad;private $RFC;protected $clave;function __construct(){

$this->nombre="xxxx";$this->edad=0;

} function set_nombre($nuevo_nombre){

$this->nombre = $nuevo_nombre;}function set_edad($nueva_edad){

$this->edad = $nueva_edad;}function get_nombre(){

return $this->nombre;}function get_edad(){

return $this->edad;}

}

Page 115: curso_php

IT Colima Ene-Jun 2009 115

2.7.2. POO. Herencia.

class ClaseDerivada extends ClaseBase{

// definición de métodos y variables// exclusivos de ClaseDerivada,// y redefinición (especialización)// de métodos de ClaseBase

}

Page 116: curso_php

IT Colima Ene-Jun 2009 116

2.7.2. POO. Herencia.Ejemplo.

class persona{var $nombre;public $departemento, $edad;private $RFC;protected $clave;

function __construct(){$this->nombre="xxxx";$this->edad=0;

}function set_nombre($nuevo_nombre){

$this->nombre = $nuevo_nombre;}function set_edad($nueva_edad){

$this->edad = $nueva_edad;}function get_nombre(){

return $this->nombre;}function get_edad(){

return $this->edad;}

}

class admvo extends persona{

}

Page 117: curso_php

IT Colima Ene-Jun 2009 117

2.7.2. POO. Herencia.Ejemplo.

class CocheFantastico extends coche() {// Frenado instantáneofunction frena() {

$this->velocidad = 0;}// ¡El coche habla!function habla() {

echo “Hola, Michael.”;}// ¡Salta!function salta() {

echo “Boing!!”;}// Turbo propulsiónfunction turbo() {

$this->velocidad = 200;}

}

Page 118: curso_php

IT Colima Ene-Jun 2009 118

2.7.3. POO. Creación y usode objetos.

// Creación (instanciación)$MiCoche = new Coche;$MiCocheSeMueve = new Coche(10);

// Uso$MiCoche->acelerar();$MiCoche->acelerar();$MiCoche->acelerar();echo $MiCoche->velocidad;$MiCoche->frenar();

Page 119: curso_php

IT Colima Ene-Jun 2009 119

2.7.3. POO. Creación y usode objetos.

// Creación (instanciación)$MiCoche = new Coche;$MiCocheSeMueve = new Coche(10);

// Uso$MiCoche->acelerar();$MiCoche->acelerar();$MiCoche->acelerar();echo $MiCoche->velocidad;$MiCoche->frenar();

Page 120: curso_php

IT Colima Ene-Jun 2009 120

2.7.3. POO. Interfaces• Uso: cuando se hace imprescindible definir unas pautas generalesde trabajo para que el resultado final sea el esperado.

• Si el desarrollo consiste en programar varios objetos, el analista de la aplicación puede definir la estructura básica en papel o crear una pequeña plantilla con métodos que el objeto final debería tener obligatoriamente.

• Esta plantilla es un interface y permite definir una clase con funciones definidas, pero sin desarrollar, que obliga a todas las clases que lo implementen a declarar estos métodos como mínimo.

Page 121: curso_php

IT Colima Ene-Jun 2009 121

2.7.3. POO. Interfacesinterface persona{

function set_nombre(){

}

function get_nombre(){

}

}

La interface anterior define la estructura básica que queremos para el objeto, declarando las funciones set_nombre y get_nombre. Para que unaclase haga uso de la interface se declara de la siguiente forma:

class trabajador implements persona

Page 122: curso_php

IT Colima Ene-Jun 2009 122

2.7.3. POO. Clases abstractas•Un interface no permite crear el cuerpo de ninguna función, dejando estatarea a las clases que la implementen.

•Las clases abstractas permiten definir funciones que deben implementarseobligatoriamente en los objetos que hereden y, además, permiten definirfunciones completas que pueden heredarse.

• Las clases abstractas deben llevar la palabra reservada abstract en la declaración de la clase y en todos los métodos que sólo definan su nombre.

abstract class persona{protected $nombre;function set_nombre($nombre){

$this->nombre=$nombre;}

abstract function get_nombre(){}

}

Page 123: curso_php

IT Colima Ene-Jun 2009 123

2.7.3. POO. Clases abstractas

• En lugar de un interface , se ha optado por utilizar una clase abstracta, porque se tiene claro que el método set_nombre() tiene que funcionarasí. • También se define el método abstracto get_nombre() , queobligatoriamente debe ser declarado en la clase que herede de ésta. • En realidad, un interface es una clase que tiene todos sus métodosabstractos

abstract class persona{protected $nombre;function set_nombre($nombre){

$this->nombre=$nombre;}

abstract function get_nombre(){}

}

Page 124: curso_php

IT Colima Ene-Jun 2009 124

POO. Clases con metodos estaticos� En PHP 5 puede declarar funciones dentro de una

clase que no utilicen propiedades o métodos de la misma.

� Estos métodos pueden calcular valores numéricos, hacer una conexión a una base de datos o comprobar que un correo electrónico esté bien definido.

� Aunque no existe ninguna palabra reservada para definirlo, son conocidos como métodos estáticos y pueden ser utilizados sin necesidad de instanciar un objeto.

Page 125: curso_php

IT Colima Ene-Jun 2009 125

POO. Clases con metodos estaticos<?php

class Nombre{protected $nombre;public function getNombre(){

return $this->nombre;}public function setNombre($nombre){

$this->nombre = $nombre;}public function NombreDefecto(){

return “Juan Perez<br>";}

$juan = new Nombre;echo $juan->NombreDefecto();

//También se puede acceder al nombre por defecto

echo Nombre::NombreDefecto();?>

Page 126: curso_php

IT Colima Ene-Jun 2009 126

POO. Llamada a funciones de la clase padre� El operador ( :: ) se puede utilizar también dentro de

una clase para hacer llamadas a funciones de la clase padre que estén sobrecargadas.

� Si define un constructor para la clase padre y otro para la clase hijo, cuando cree el objeto, el constructor que se ejecuta es el de nivel inferior, el constructor hijo.

� Para llamar al constructor padre debe utilizarse la nomenclatura Nombre_clase_padre : : construct() .

Page 127: curso_php

IT Colima Ene-Jun 2009 127

POO. Llamada a funciones de la clase padre<?php

class Nombre{protected $nombre;function __construct ( $nombre){

$this->nombre = $nombre;}public function getNombre(){

return $this->nombre;}public function setNombre($nombre){

$this->nombre = $nombre;}public function NombreDefecto(){

return “Juan Perez<br>";}

}

class Apellido extends Nombre{protected $apellidos;function __construct($nombre,$apellidos){

$this->apellidos = $apellidos;Nombre::construct(Snombre) ;

}public function getApellidos (){

return $this->apellidos;}

}$juan = new Apellido(“Juan",“Perez");echo $juan->getNombre() . "<br>";echo $juan->getApellidos();

?>

Page 128: curso_php

IT Colima Ene-Jun 2009 128

3.8.1. BD. Conexión y desconexión.

int mysql_connect ([string servidor [:puerto] [:/camino/al/socket] [, string usuario[, string contraseña]]])

int mysql_close ([int identificador])

int mysql_pconnect ([string servidor [:puerto][:/camino/al/socket] [, string usuario[, string contraseña]]])

int mysql_pclose ([int identificador])

Page 129: curso_php

IT Colima Ene-Jun 2009 129

3.8.1. BD. Conexión y desconexión. Ejemplo.

$link = mysql_connect ("www.mmlabx.ua.es", "nobody", "");

if (!$link) {

die ("No se pudo conectar");}

print ("Conexión realizada");

mysql_close ($link);

Page 130: curso_php

IT Colima Ene-Jun 2009 130

3.8.2. BD. Elegir una BD.

int mysql_select_db (string nombre_bd[, int identificador])

if (!mysql_select_db("prueba", $link)) {

die (“No existe la BD”);}

Page 131: curso_php

IT Colima Ene-Jun 2009 131

3.8.3. BD. Querys.

int mysql_query (string query [, int identificador])int mysql_db_query (string nombre_bd, string query

[, int identificador])int mysql_free_result (int result)

$query = "SELECT codigo, nombre, descripcion, creditos, tipo

FROM asignatura";

$asignaturas = mysql_query($query, $link);if (!$asignaturas) {

die (“Error en el query”);}

Page 132: curso_php

IT Colima Ene-Jun 2009 132

3.8.4. BD. Extraer información.

int mysql_affected_rows ([int identificador])

int mysql_num_rows (int resultado)

array mysql_fetch_row (int resultado)

array mysql_fetch_array(int resultado[, int tipo_resultado])

object mysql_fetch_object (int result)

array mysql_fetch_lengths (int resultado)

int mysql_data_seek (int resultado, int numero_fila)

Page 133: curso_php

IT Colima Ene-Jun 2009 133

2.8.5. BD. Extraer información.Ejemplos.

while ($fila = mysql_fetch_array($asignaturas)) {

echo $fila[‘codigo’] . ‘ ‘ . $fila[‘nombre’] . “\n”;}

while ($fila = mysql_fetch_object($asignaturas)) {

echo $fila->codigo . ‘ ‘ . $fila->nombre . “\n”;}

Page 134: curso_php

IT Colima Ene-Jun 2009 134

3.9. Acceso a BD unificado.Clase ConexionGenerica.

class ConexionGenerica {var $link;

function connect($servidor, $usuario, $clave) {echo "<h1>El m&eacute;todo <i>connect</i> ",

"no est&aacute; implementado en la ", "clase <i>".get_class($this)."</i></h1>";

return FALSE;}

function close() {}function select_db($base_datos) {}function query($query) {}function fetch_array($resultado) {}function free_result($resultado) {}

}

Page 135: curso_php

IT Colima Ene-Jun 2009 135

3.9. Acceso a BD unificado.Clase ConexionMySQL.

require ("ConexionGenerica.inc");

class ConexionMySQL extends ConexionGenerica {

function connect($servidor="localhost", $usuario="nobody", $clave="") {

return $this->link = mysql_connect($servidor,$usuario, $clave);

}

function close() {}function select_db($base_datos) {}function query($query) {}function fetch_array($resultado) {}function free_result($resultado) {}

}

Page 136: curso_php

IT Colima Ene-Jun 2009 136

3.9. Acceso a BD unificado. Uso.

// Fichero CreaConexion.increquire ("ConexionMySQL.inc");$conexion = new ConexionMySQL();

require ("CreaConexion.inc");

$conexion->connect("localhost", "nobody");$conexion->select_db("prueba", $link);

$asignaturas = $conexion->query("SELECT codigo, nombre, descripcion, creditos, tipo

FROM asignatura");