Sei sulla pagina 1di 98

PHP el lenguaje de Internet

Referencia del lenguaje

Septiembre 2010

Introduccin a PHP

Ms rpido que .NET


Fcil de aprender y potente

Soportado por los principales servidores HTTP Acceso a los principales servidores de Bases de Datos Diseo modular de fcil ampliacin Software libre
04/05/2012 Hugo Snchez 2

Historia y Desarrolladores
Fechas Inicio del desarrollo en otoo de 1994 PHP Versin 1 en primavera 1995 PHP Versin 2 1995-1997 PHP Versin 3 1997-2000 PHP Versin 4 en el segundo trimestre de 2000 Equipo de Desarrollo (195 personas) 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)
04/05/2012 3

Datos histricos, estadsticas de uso

Fuente: Netcraft Agosto 2000

Fuente: SecuritySpace.com Septiembre 2000 Informe sobre Mdulos Apache


04/05/2012

3,314,634 Dominios, 637,746 Direcciones IP 19,823,296 Dominios analizados PHP instalado en el 16.7% de todos los dominios 1,322,329 Servidores Apache analizados 429,589 (32.49%) PHP 247,642 (18.73%) Frontpage 133,414 (10.09%) mod_perl 111,576 (8.44%) mod_ssl 78,030 Salvador Contreras H. (5.90%) OpenSSL MC. 46,404 (3.51%) ApacheJServ

Datos histricos, estadsticas de uso

June 2003 Netcraft Report 40,936,076 Domains queried 12,749,410 Domains. 1,317,425 IP addresses PHP installed on 31% of all domains Source: http://www.netcraft.com
04/05/2012 5

Datos histricos, estadsticas de uso


March 2003 Apache Module Report %6,813,534 Apache Servers surveyed% %3,510,294 (51.52\%) PHP% %2,075,828 (30.47\%) OpenSSL% %2,007,598 (29.46\%) mod_ssl% %1,486,868 (21.82\%) Frontpage% %1,407,732 (20.66\%) mod_perl% % 401,097 (5.89\%) DAV% % 348,856 (5.12\%) mod_throttle% % 206,122 (3.03\%) mod_jk% % 175,924 (2.87\%) AuthMySQL% % 190,290 (2.79\%) mod_log_bytes% % 185,076 (2.72\%) mod_bwlimited% Source: http://www.securityspace.com/s_survey/data/index.html
6

04/05/2012

Plataformas soportadas
Plataformas (actualidad): UNIX (todas las variantes) Win32 (NT/W95/W98/W2000,2003 server, XP,Vista) Mac OS/2 Servidores: Apache (UNIX,Win32) CGI fhttpd ISAPI (IIS, Zeus)
Internet Server Application Programming Interface

NSAPI (Netscape iPlanet)


Nestcape

Java servlet AOLServer Roxen

04/05/2012

Bases de datos soportadas


SQL

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 (slo lectura) dbm (ndbm, gdbm, Berkeley db)

04/05/2012

1. El lenguaje PHP

04/05/2012

1.1. Extensin de los archivos

php Indica cdigo PHP.

04/05/2012

10

1.2. Delimitadores
<? echo Delimitadores para cdigo PHP; ?> <?php echo Segundo mtodo para delimitar cdigo PHP; ?> <script language="php"> echo Un mtodo para ms para delimitar cdigo en PHP; </script> <% echo 'Mtodo similar a ASP'; %>

04/05/2012

11

1.2. Delimitadores. Ejemplo.


<html> <body> <?php if ( Hour(time)>20 || Hour(time)<4) { echo Buenas noches.; } else { echo Buenos das.; } ?> </body> </html>

04/05/2012

12

1.3. Comentarios
/* Comentarios estilo C. * Pueden extenderse durante varias lneas. */

// Comentarios estilo C++. Hasta fin de lnea.


# Comentarios estilo Perl. Hasta fin de lnea.

04/05/2012

13

1.4 Variables. Declaracin y Uso.


NO hace falta declararlas Llevan delante el signo del pesos $.
$var_1 = 123; $var_2 = hola; $var_3 = $var_1 * 2;

04/05/2012

14

1.4.1 Variables. Tipado.


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

04/05/2012

15

1.4.1. Variables. Tipado. Conversin automtica.


PHP realiza conversiones automticas de tipo:

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

04/05/2012

16

1.4.1.

Variables. Tipado. Conversin explcita.

Operador cast:
$mivar = (string)123;

Cambiar el tipo de una variable:


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

04/05/2012

17

1.4.2. Variables. mbito.

En el cuerpo de un archivo, las variables son GLOBALES al archivo y archivos incluidos. En una funcin, son LOCALES a esa funcin. Dentro de una clase, slo pueden ser accedidas a travs del operador -> sobre el nombre del objeto.

04/05/2012

18

1.5. Tipos de datos.


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

Punto flotante. Arrays.

$MiVar = 1.3e4;

$MiVar[2] = 123;

Strings.

$MiVar = Cadena de texto\n;

Objetos:
04/05/2012

$MiVar = new MiClase();


19

1.5.1 Tipos de datos. Arrays.

$MiArray[0] = 1;

$MiArray[1] = hola!!;
$MiArray[] = 3; echo $MiArray[2]; // 3

04/05/2012

20

1.5.1. Tipos de datos. Arrays (2).


Funcionan como vectores: $MiArray[nombre] = Homer; echo $MiArray[0]; // 1 echo $MiArray[nombre]; // Homer Y pueden tener tres dimensiones:

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

04/05/2012

21

1.5.1. Tipos de datos. Arrays (3).


Tambin se pueden definir con el constructor array() : $OtroArrayMas = array( 1, hola, 5); $YOtroArray = array( 0 => 1, 1 => hola, 2 => 5, 3 => 8, nombre => Homer );

04/05/2012

22

1.6. Tipos de datos. Strings. Comillas dobles.


Si se delimitan entre comillas dobles (), se expandir cualquier variable que haya dentro de la cadena. Adems, se pueden incluir ciertas secuencias de escape, al igual que en C:
Secuencia \n \r \t \\ \$ \" \[0-7]{1,3} \x[0-9A-Fa-f]{1,2} Significado Nueva lnea Retorno de carro Tabulacin horizontal Barra invertida Smbolo del dlar Dobles comillas Carcter en octal Carcter en hexadecimal

04/05/2012

23

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


Si se delimitan entre comillas simples (), las variables no se expanden y adems las nicas secuencias de escape que se reconocen son \\ y \' (barra invertida y comillas simples.)

04/05/2012

24

1.6. Tipos de datos. Strings (4).

Para concatenar cadenas se utiliza el operador . :


$cad = A esta cadena ; $cad = $cad . le vamos a aadir ms texto.;

Se puede acceder a cada carcter como si fuera un array: $cad2 = Tercer carcter de \$cad : $cad[2];
04/05/2012 25

1.7. Constantes.
Las constantes se definen con la funcin define(): define(SALUDO, Hola, mundo!); echo La constante SALUDO vale . SALUDO; Las constantes en PHP se diferencian de las variables en que: no llevan el smbolo del dlar delante. puede accederse a ellas desde cualquier parte del cdigo donde han sido definidas, sin restricciones de mbito como en las variables. no pueden ser redefinidas o borradas una vez definidas. slo pueden contener valores escalares, no vectores.
04/05/2012 26

1.8. Maysculas y minsculas.


Comportamiento mixto en variables y funciones: En las variables, las maysculas y minsculas IMPORTAN. En los nombres de funciones y palabras reservadas, las maysculas NO IMPORTAN.

04/05/2012

27

1.9.1. Operadores aritmticos.


Operacin $a + $b $a - $b $a * $b $a / $b $a % $b Nombre Suma Resta Multiplicacin Divisin Mdulo Resultado Suma de $a y $b. Diferencia entre $a y $b. Producto de $a y $b. Cociente de $a y $b. Resto de la operacin $a/$b.

04/05/2012

28

1.9.2. Auto-incremento y auto-decremento.


Operacin Nombre ++$a $a++ --$a $a-Resultado Incrementa $a en 1, y Pre-incremento devuelve $a (incrementado). Devuelve $a, y despus lo Post-incremento incrementa en 1. Decrementa $a en 1, y Pre-decremento despus lo devuelve. Devuelve $a, y despus lo Post-decremento incrementa en 1.

04/05/2012

29

1.9.3. Operadores de bits.


Operacin Nombre $a & $b $a | $b $a ^ $b ~ $a $a << $b $a >> $b Resultado Se ponen a 1 los bits que estn a Y 1 en $a y $b. Se ponen a 1 los bits que estn a O 1 en $a o $b. Se ponen a 1 los bits que estn a O Exclusivo 1 en $a o $b, pero no en ambos. Se invierten los bits (se cambian 1 No por 0 y viceversa.) Desplaza $b posiciones a la Desp. Izq. izquierda todos los bits de $a. Desplaza $b posiciones a la Desp. Drch. derecha todos los bits de $a.

04/05/2012

30

1.9.4. Operadores lgicos.

Operacin Nombre $a and $b Y $a or $b O $a xor $b ! $a $a && $b $a || $b

Resultado Cierto si $a Cierto si $a Cierto si $a O Exclusivo. ambos. No Cierto si $a Y Cierto si $a O Cierto si $a

y $b son ciertos. o $b es cierto. o $b es cierto, pero no es falso. y $b son ciertos. o $b es cierto.

04/05/2012

31

1.9.5. Operadores. Asignacin, igualdad e identidad.


Operacin Nombre Resultado Asigna el valor de una variable o $a = $b Asignacin expresin del segundo trmino a la variable del primer trmino. Compara si el valor de los dos $a == $b Igualdad operandos es el mismo. Compara si el valor es el mismo y, $a === $b Identidad adems, el tipo coincide.

04/05/2012

32

1.9.5. Operadores. Asignacin, igualdad e identidad.Ejemplo.

$var1 = 1; $var2 = 1; $var3 = 1; ($var1 == $var2) ($var1 == $var3) ($var1 === $var2) ($var1 === $var3)

// Asignacin

// // // //

Cierto, son iguales Son iguales (tras conversin) Cierto, son idnticas FALSO, el tipo no coincide

04/05/2012

33

1.9.5. Operadores. Asignacin, igualdad e identidad. Error.


$var1 = 1; $var2 = 2; if( $var1 = $var2 ) { echo iguales; } else { echo distintas; }

04/05/2012

34

1.9.6. Comparaciones.
Operacin Nombre Resultado Cierto si el valor de $a no es $a != $b No igual igual al de $b. Cierto si $a no es igual a $b, o $a !== $b No idntico si no tienen el mismo tipo. Cierto si $a es estrictamente $a < $b Menor que menor que $b. Cierto si $a es estrictamente $a > $b Mayor que mayor que $b. Cierto si $a es menor o igual $a <= $b Menor o igual que que $b. Cierto si $a es mayor o igual $a >= $b Mayor o igual que que $b.
04/05/2012 35

1.9.7. Operadores de cadenas.

$a = 1; $b = 2; $c = El resultado de . $a . + . $b . es . $a + $b;

04/05/2012

36

1.9.8. Abreviaciones en la asignacin.


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

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

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

04/05/2012

37

1.9.9. Precedencia.
, or xor and print = += -= *= /= .= %= &= |= ^= ~= <<= >>= ?: || && |
^ & == != === !== < <= > >= << >> +-. */% ! ~ ++ -- (int) (double) (string) (array) (object) @ [ new

04/05/2012

38

1.10.1. Estructuras de control. if elseif else


if (expresin) { comandos } if (expresin) { comandos_cierto } else { comandos_falso }
04/05/2012 39

1.10.1. Estructuras de control. if elseif else (2)


if (expresion1) { comandos1 } elseif (expresion2) { comandos2 } elseif (expresion3) { comandos3 } ... else { comandosElse }

04/05/2012

40

1.10.2. while y do while


while (expresin) { comandos } do { comandos } while (expresin);

04/05/2012

41

1.10.4. for
for (expresin1; expresin2; expresin3) { comandos } $factorial5 = 1; for ($i = 2; $i <= 5; $i++ ) { $factorial5 *= $i; }

04/05/2012

42

1.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++);

04/05/2012

43

1.10.4. for (3). ASP.


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

// PHP <?php for ($i = 1; $i <= 100; $i++) { echo $MiVar; } ?>
04/05/2012 44

1.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"; } // // // //
04/05/2012

Valor Valor Valor Valor

actual actual actual actual

de de de de

$a: $a: $a: $a:

1 2 3 17
45

1.10.5. foreach (2)

foreach (array as indice => variable) { comandos }

04/05/2012

46

1.10.6. switch
switch (variable) { case valor1: comandos1 case valor2: comandos2 ... case valorN: comandosN default: comandosDefault }

04/05/2012

47

1.10.6. switch (2)


switch ($i) { case 1: echo Cdigo del 1; case 2: echo Cdigo del 2; case 3: echo Cdigo del 3; break; case 4: echo Cdigo del 4; }
04/05/2012 48

1.11. Cierto o falso. Valores numricos.


$x = 1; // $x if( $x ) // se evala a cierto
$x = 0; // $x definida como el entero 0 if( $x ) // se evala a falso

04/05/2012

49

1.11. Cierto o falso. Strings.


$x = "hello"; // asignamos una cadena a $x if( $x ) // se evala a cierto $x = ""; if( $x ) // cadena vaca // evala a falso // // // // Excepcin: cero en una cadena evala a falso (se convierte a entero)

$x = "0"; if( $x )

04/05/2012

50

1.11. Cierto o falso. Arrays.

$x = array(); if( $x )

// $x es un array vaco // se evala como falso

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

04/05/2012

51

1.11. Cierto o falso. Objetos.

Class Yod {} // clase vaca $x = new Yod(); if( $x ) // se evala a falso Class Yod { // clase no vaca var $x = 1; } $x = new Yod(); if( $x ) // se evala a cierto
04/05/2012 52

1.11. Cierto o falso. Constantes.

TRUE es el valor entero decimal 1.

FALSE es la cadena vaca.

04/05/2012

53

1.12. Funciones.

function nombre ($arg_1, $arg_2, ..., $arg_n) { comandos return $salida; }

04/05/2012

54

1.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);
04/05/2012 55

1.12. Funciones. (3) Valores por defecto.

function enlace($url = www.php.net) { echo <a href= . $url . >Pulsa aqu</a>; }

04/05/2012

56

1.12.1. Funciones. Argumentos por referencia.

function MiFuncion(&$var) { $var++; } $a = 5; MiFuncion($a); // Aqu $a == 6

04/05/2012

57

1.12.2. Funciones. Devolucin por referencia.

function &buscar_cliente($nombre) { // ... buscamos ... return $registro; } $cliente = &buscar_cliente(Juan); echo $cliente->rfc;
04/05/2012 58

1.13. include y require

require(cabecera.inc); If ($incluir == TRUE) { $archivos = array(uno, dos, tres); foreach ($ archivos as $ archivos ) { include($ archivos ); } }
04/05/2012 59

2. Programando en PHP

04/05/2012

60

2.1.1. Formularios

<form action="accion.php" method="POST"> Su nombre: <input type=text name=nombre><br> Su edad: <input type=text name=edad><br> <input type=submit> </form> Hola <?=$nombre?>. Tiene <?=$edad?> aos.

04/05/2012

61

2.1.2. Formularios
<form action="accion.php" method="POST"> <select multiple name=menu> > name=menu[] <option>Tortilla <option>Paella <option>Fabada <option>Lentejas </select><input type=submit></form> <?php echo "Su eleccin:<br>"; foreach($menu as $plato) { echo "$plato<br>\n"; } ?>

04/05/2012

62

2.2. Cookies.
int setcookie (string nombre [, string valor [, int fin [, string camino [, string dominio [, int seguro]]]]]) setcookie(PruebaCookie, expirar dentro de una hora, time() + 3600); setcookie(PruebaCookie, , time());

04/05/2012

63

2.3. Sesiones.
bool session_start(void); bool session_register (mixed name [, mixed ...]) bool session_destroy(void);
// Ejemplo, un contador session_start(); print($contador); $contador++; session_register("contador"); <A HREF="siguiente.php?<?=SID?>">Continuar</A>

04/05/2012

64

2.4. Tratamiento de errores.


$nombre = '/etc/shadow'; $ archivo= @fopen ($nombre, 'r'); if( !$ archivo) { die("No se pudo abrir el archivo ($nombre)"); }

04/05/2012

65

2.5.1. Cadenas. Comparacin.


int strcmp (string str1, string str2) int strcasecmp (string str1, string str2) // Ejemplo: if (strcmp($a, $b) == 0) { echo iguales; }

04/05/2012

66

2.5.2. Cadenas. Subcadenas.

string substr (string cadena, int inicio [, int tamao]) $str $str $str $str = = = = substr('abcdef', substr('abcdef', substr('abcdef', substr('abcdef', 2, 3); -2); -2, 1); 1, -2); // // // // cde ef e bcd

04/05/2012

67

2.5.2. Cadenas. Subcadenas. (2)


int strpos (string cadena, string referencia [, int inicio]) int strrpos (string cadena, char referencia) string strstr (string cadena, string referencia) $i // $i // $s // $s // = strpos('cadena de prueba', 'de'); $i = 2 = strpos('cadena de prueba', 'de', 5); $i = 7 = strrpos('cadena de prueba', 'de'); $s = 7 = strstr('cadena de prueba', 'de'); $s = dena de prueba
68

04/05/2012

2.5.3. Cadenas. Imprimir y formatear.


int printf (string formato [, mixed args...]) string sprintf (string formato [, mixed args...])
1. 2. 3. 4. 5. Relleno Alineacin Nmero de caracteres Precisin Tipo
% b c d f o s x X

Secuencias de formato

El carcter de tanto por ciento. Entero en binario. Entero como carcter ASCII. Entero en decimal. Double en punto flotante. Entero en octal. Cadena. Entero en hexadecimal (minsculas). Entero en hexadecimal (maysculas).
69

04/05/2012

2.5.3. Cadenas. Imprimir y formatear. (2)


printf(%02d/%02d/%04d, $dia, $mes, $ao); $pago1 = 68.75; $pago2 = 54.35; $pago = $pago1 + $pago2; // echo $pago mostrara "123.1" // Mostrar al menos un dgito entero y exactamente // dos decimales, rellenando con ceros printf ("%01.2f", $pago);

04/05/2012

70

2.5.4. Escapar caracteres. SQL.

$busca = DAlton; // Habr que escapar el apstrofe $sql = SELECT * FROM usuarios WHERE apellido = \ . addslashes($busca) . \;

04/05/2012

71

2.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)

04/05/2012

72

2.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)

04/05/2012

73

2.5.5. Extraer campos.


array explode (string delimitador, string cadena [, int lmite]) $cadena = campo1:campo2:campo3; $campos = explode(:, $cadena); string implode (string delimitador, array campos) $cadena = implode(:, $campos);

04/05/2012

74

2.5.5. Extraer campos. Expresiones regulares.

array split (string delimitador, string cadena [, int lmite])

$fecha = "12/4 2000"; $campos = split ('[ /.-]', $fecha);

04/05/2012

75

2.5.6. Recorrer un array.


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

$arr = array(1,'cosa',1.57,'gato'=>'raton','perro'=>'gato'); current($arr); next($arr); current($arr); prev($arr); end($arr); current($arr); key($arr); reset($arr); each($arr); each($arr); each($arr);
04/05/2012

// // // // // // // // // // //

1 cosa cosa 1 gato gato perro 1 array(0,1) array(1,'foo') array(2,1.57)


76

2.5.7. Ordenar un array.

sort():

Ordena el array por contenido en orden ascendente.

rsort():
ksort(): rksort():

Ordena por contenido en orden descendente.


Ordena por el ndice en orden ascendente. Ordena por el ndice en orden descendente.

04/05/2012

77

2.5.8. Otras funciones.


Eliminar espacios en blanco: string trim (string cadena) string ltrim (string cadena) string rtrim (string cadena)

Maysculas y minsculas:
string strtoupper (string cadena) string strtolower (string cadena) string ucfirst (string cadena)

04/05/2012

78

2.6.1. Archivos. Abrir y cerrar.


int fopen (string nombre, string modo [, int include_path])
Modos: r r+ w w+ a a+ Slo lectura. Puntero al inicio. Lectura/escritura. Puntero al inicio. Slo escritura. Se trunca el fichero. Lectura/escritura. Se trunca el fichero. Slo escritura. Puntero al final. Lectura/escritura. Puntero al final.

int fclose (int identificador)

04/05/2012

79

2.6.2. Archivos. Leer y escribir.


string fgets (int identificador, int tamao)

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 tamao])

04/05/2012

80

2.6.3. Archivos. Copiar / renombrar / borrar.


int copy (string origen, string destino) int rename (string origen, string destino) int unlink (string fichero)

04/05/2012

81

2.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)

04/05/2012

82

2.6.4. Directorio. Listado de contenidos.


$direcotrio = opendir('.'); while (($fichero = readdir($directorio)) !== FALSE) { echo "$fichero\n"; } closedir($directorio);

04/05/2012

83

2.6.5. Archivos. Envo.


<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 Tamao del fichero: . $fichero_size . <br>; echo Tipo mime: . $fichero_type . <br>; rename($fichero, $fichero_name);

04/05/2012

84

2.7.1. POO. Definicin de una clase.

class NombreClase { var $variables; function metodos ($parametros) { codigo }

04/05/2012

85

2.7.1. POO. Definicin 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; } // Mtodo acelerar. El coche va ms rpido. function acelerar() { $this->velocidad++; } // Mtodo frenar. El coche va ms lento hasta frenar. function frenar() { if ($this->velocidad > 0) { $this->velocidad--; } } }
04/05/2012 86

2.7.2. POO. Herencia.


class ClaseDerivada extends ClaseBase { // // // // } definicin de mtodos y variables exclusivos de ClaseDerivada, y redefinicin (especializacin) de mtodos de ClaseBase

04/05/2012

87

2.7.2. POO. Herencia. Ejemplo.


class CocheFantastico extends coche() { // Frenado instantneo function frena() { $this->velocidad = 0; } // El coche habla! function habla() { echo Hola, Michael.; } // Salta! function salta() { echo Boing!!; } // Turbo propulsin function turbo() { $this->velocidad = 200; } }
04/05/2012 88

2.7.3. POO. Creacin y uso de objetos.


// Creacin (instanciacin) $MiCoche = new Coche; $MiCocheSeMueve = new Coche(10); // Uso $MiCoche->acelerar(); $MiCoche->acelerar(); $MiCoche->acelerar(); echo $MiCoche->velocidad; $MiCoche->frenar();

04/05/2012

89

2.8.1. BD. Conexin y desconexin.


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

int mysql_close ([int identificador])


int mysql_pconnect ([string servidor [:puerto] [:/camino/al/socket] [, string usuario [, string contrasea]]]) int mysql_pclose ([int identificador])
04/05/2012 90

2.8.1. BD. Conexin y desconexin. Ejemplo.


$link = mysql_connect ("www.mmlabx.ua.es", "nobody", ""); if (!$link) { die ("No se pudo conectar"); } print ("Conexin realizada"); mysql_close ($link);

04/05/2012

91

2.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); }

04/05/2012

92

2.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); }
04/05/2012 93

2.8.4. BD. Extraer informacin.


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)
04/05/2012 94

2.8.5. BD. Extraer informacin. 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; }

04/05/2012

95

2.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 function function function function } close() {} select_db($base_datos) {} query($query) {} fetch_array($resultado) {} free_result($resultado) {}

04/05/2012

96

2.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 function function function function }
04/05/2012 97

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

2.9. Acceso a BD unificado. Uso.


// Fichero CreaConexion.inc require ("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");

04/05/2012

98

Potrebbero piacerti anche