Curso de PHP
Tema 2: Lenguaje PHP básico José Mariano González Romano
[email protected]
Tema 2: Lenguaje PHP básico 1. 2. 3. 4. 5. 6. 7. 8. 9.
Sintaxis básica Tipos de datos Variables Constantes Expresiones y operadores Estructuras de control Funciones Tablas Bibliotecas de funciones
Sintaxis básica
PHP es sensible a las mayúsculas ¿Cómo se incrusta en la página web?
recomendado, siempre disponible = expresión ?>
equivale a echo expresión ?>
Las instrucciones se separan con un ; como en C. La marca final ?> implica un ; Comentarios: como en C, /* … */ y //
Sintaxis básica
Para imprimir: echo y print echo: muestra una o más cadenas echo cadena1 [, cadena2…]; // no es una función echo “Hola mundo”; echo “Hola “, “mundo”;
print: muestra una cadena print cadena; cadena; // no es una función función print prin t “Hol “Hola a mun mundo do”; ”; p ri nt “H ol a “ . “ mu nd o” ;
Sintaxis básica
Ejemplo:
Mi primer programa en PHP H >Hol ola a mund mundo< o” >”); ); ?>
Sintaxis básica
Uso de \n para generar generar código HTML legible legible a) Sin \n Código PHP
print prin t (“ (“
P >Pár árra rafo fo 1< 1
” >”); ); prin pr int t (“ (“
P >Pár árra rafo fo 2< 2
” >”); );
Código HTML
Párrafo 1
Párrafo 2
Salida
Párrafo 1 Párrafo 2
Sintaxis básica
Uso de \n para generar generar código HTML legible legible b) Con \n Código PHP
print prin t (“ (“
P >Pár árra rafo fo 1
\ >\n” n”); ); prin pr int t (“ (“
P >Pár árra rafo fo 2
\ >\n” n”); );
Código HTML
Párrafo 1
Párrafo 2
Salida
Párrafo 1 Párrafo 2
Sintaxis básica
Ejercicio 1: programa que muestra un mensaje – Ilus Ilustra tra cómo cómo inc incru rust star ar cód códig igoo PHP PHP en un docu docume ment ntoo HTML HTML y cómo imprimir desde PHP
Sintaxis básica
Inclusión de ficheros externos: include() – include() require() – require()
Ambos incluyen y evalúan el fichero especificado Diferencia: Diferencia: en caso caso de error include() include() produce produce un warning warning y require() un error fatal Se usará require() si al producirse un error debe interrumpirse la carga de la página Ejemplo:
Sintaxis básica
Título // Código HTML + PHP . . .
Tipos de datos
PHP soporta 8 tipos de datos primitivos: – Tipos Tipos esca escala lares res:: boo boole lean an,, int integ eger er,, dou doubl ble, e, stri string ng – Tipo Tiposs co compue mpuest stoos: arra array, y, obje bject – Tipo Tiposs esp espec ecia iale les: s: reso resour urce ce,, N NUL ULLL
El tipo de una variable no se suele especificar. Se decide en tiempo de ejecución en función del contexto y puede variar Funciones de interés: – La fun funció ciónn get getty type pe() () dev devue uelv lvee el tipo tipo de una una varia variabl blee – Las fu funciones is is_ type type comprueban si una variable es de un tipo dado: is_array(), is_bool(), is_float(), is_integer(), is_null(), is_numeric(), is_object(), is_resource(), is_scalar(), is_string() – La fun funció ciónn var_d var_dum ump( p()) mues muestr traa el tip tipoo y el val valor or de de una una vari variab able le.. Es especialmente interesante con los arrays
Tipos de datos
Tipo integer (números enteros) – 27, - 5, 0
Tipo double (números reales) – 1.234, -5.33
Tipo boolean (lógico) – Valores: true , false (insensibles a las mayúsculas) – El 0 y la cade cadena na vací vacíaa tie tiene nenn val valor or false
Tipos de datos
Tipo string: – Las Las cade cadena nass se enc encie ierra rrann entr entree comi comillllas as sim simpl ples es o dob doble les: s: •
‘sim ‘simpl ples es’:’: adm admititee los los cara caract cter eres es de esc escap apee \’ (com (comililla la sim simpl ple) e) y \\ \\ (barra). Las variables NO se expanden • “dob “doble les” s”:: adm admititee más más cara caract cter eres es de esca escape pe,, como como \n, \n, \r, \r, \t, \t, \\, \\, \$, \$, SÍ se expanden \”. Los nombres de variables SÍ se • Ejemplos: $a = 9 ; prin pr int t ‘a va vale le $a $a\n \n’; ’; // muestra a vale $a\n prin pr int t “a va vale le $a $a\n \n”; ”; // muestra a vale 9 y avanza una línea prin pr int t “< “
’>”; ”; // muestra prin pr int t “< “” >”; ; // muestra
– Acce Acceso so a un un ca caráct rácter er de la cade cadena na:: •
La fo forma es es $i $inicial = $n $nombre{0};
Variables
Las variables siempre van precedidas de un $ El nombre es sensible a las mayúsculas Comienzan por letra o subrayado, seguido de letras, números o subrayado Variables predefinidas: $GLOBALS, $_SERVER, $_GET, $_POST, $_COOKIES, $_FILES, $_ENV, $_REQUEST, $_SESSION
Ámbito: globales al fichero (excepto funciones) o locales a una función Ejemplo: $ va lo r = 5; prin pr int t “E “El l valo valor r es: es: “ . $val $valor or . “\n “\n”; ”; print print “El valo valor r es: $valo $valor\n” r\n”; ; // ojo: ojo: comilla comillas s dobles dobles Resultado: El valor es: 5
Variables
Variables variables – Se pue puede denn crea crearr nomb nombre ress de vari variab able less diná dinámi mica came ment ntee – La vari variab able le varia variabl blee toma toma su nomb nombre re del del valo valorr de de otr otraa var varia iable ble previamente declarada – Ejemplo: $ a = "h ol a" ; $$a = "m "mundo"; print "$a $hola\n"; print "$a ${$a}"; Resultado: hola mundo hola mundo
Variables
Ejemplo de variables variables: página internacionalizada (1)
Variables
Ejemplo de variables variables: página internacionalizada (2)
Constantes
Definición de constantes: define (“CONSTANTE”, “hola”); prin pr int t CON ONST STAN ANTE TE; ;
No llevan $ delante Sólo se pueden definir constantes de los tipos escalares (boolean, integer, double, string)
Expresiones y operadores
Operadores aritméticos: +, -, *, /, %, ++, -Operador de asignación: = operadores combinados: .=, +=, etc $a = 3; $a += 5; a vale 8 $b = “hola ”; $b .= “mundo”; b vale “hola mundo” Equivale a $b = $b . “mundo”; Operadores de comparación: ==, !=, <, >, <=, >= y otros Operador de control de error: @. Antepuesto a una expresión, evita cualquier mensaje de error que pueda ser generado por la expresión Operadores lógicos: and and (& (&&) &),, or or (||) (||),, !,!, xor xor and/&& y or/|| tienen diferentes prioridades Operadores de cadena: concatenación: . (punto) asignación con concatenación: .=
Expresiones y operadores
Precedencia de operadores (de mayor a menor): ++, -*, /, % +,<, <=, >, >= ==, != && || and or
Estructuras de control
Estructuras selectivas: – if-else – switch
Estructuras repetitivas: – w h ile – for – foreach
Estructuras de control
Estructura selectiva if-else if (condición) sentencia
if (condición) sentencia 1 else sentencia 2
if (condición1) sentencia 1 else if (condición2) sentencia 2 ... else if (condición n n) ) sentencia n else sentencia n+1
Mismo comportamiento que en C Las sentencias compuestas se encierran entre llaves elseif elseif puede puede ir todo junto junto
Estructuras de control
Ejemplo de estructura selectiva if-else:
Estructuras de control
Estructura selectiva switch switch swit ch (e (exp xpre resi sión ón) ) { case valor_1: sentencia break; case valor_2: sentencia break; … case valor_n: sentencia break; default sentencia }
1
2
n
n+1
Mismo comportamiento que en C, sólo que la expresión del case puede ser ser integer, integer, float o string string
Estructuras de control
Ejemplo de estructura selectiva switch: switch swit ch ($ ($ex exte tens nsio ion) n) { case ("PDF"): $tip $t ipo o = "Do "Docu cume ment nto o break; case ("TXT"): $tip $t ipo o = "Do "Docu cume ment nto o break; case ("HTML"): case ("HTM"): $tip $t ipo o = "D "Doc ocum umen ento to break; default: $tip $t ipo o = "Arc "Archi hivo vo " } p ri nt ( $t ipo );
Adob Adobe e PDF" PDF"; ;
de de tex texto to"; ";
HTML HT ML"; ";
. $e $ext xten ensi sion on; ;
Estructuras de control
Estructura repetitiva while whil wh ile e (c (con ondi dici ción ón) ) sentencia
Mismo comportamiento que en C
Estructuras de control
Ejemplo de estructura repetitiva while: L>\n \n" "); $i=1; while ($i <= 5) { print print (" ("Ele Elemen mento to $i\n >\n"); "); $i++; } prin pr int t (" (" \ >\n" n"); ); ?>
Estructuras de control
Estructura repetitiva for for (inici (iniciali alizac zación ión; ; condici condición; ón; incre incremen mento) to) sentencia
Mismo comportamiento que en C
Estructuras de control
Ejemplo de estructura repetitiva for: L>\n \n" "); for fo r ($ ($i= i=1; 1; $i $i<= <=5; 5; $i $i++ ++) ) print print (" ("Ele Elemen mento to $i\n >\n"); "); prin pr int t (" (" \ >\n" n"); ); ?>
Estructuras de control
Ejercicio 2: programa que calcula una tabla de multiplicar – Ilus Ilustra tra cómo cómo mane maneja jarr vari variab ables les y cóm cómoo usa usarr buc bucle less
Funciones
Ejemplo: functi func tion on su suma ma ($ ($x, x, $y $y) ) { $ s = $x + $ y; r e tur n $s ; } $a=1; $b=2; $c=s $c =sum uma a ($ ($a, a, $b $b); ); p ri nt $ c;
Funciones
Por defecto los parámetros se pasan por valor Paso por referencia: functi func tion on in incr crem emen enta ta (& (&$a $a) ) { $a = $ a + 1; } $a=1; incrementa ($a); prin pr int t $a $a; ; // // Mue Muest stra ra un 2
Funciones
Argumentos por defecto function muestranombre ($ ($t ti t ul o = "S r. ") { prin pr int t "E "Est stim imad ado o $tit $titul ulo: o:\n \n"; "; } mues mu estr tran anom ombr bre e () (); ; mues mu estr tran anom ombr bre e (" ("Pr Prof of." ."); );
Salida: Estimado Sr.: Estimado Prof.:
Funciones
Los argumentos con valores por defecto deben deb en ser siempre los últimos: functi func tion on mu mues estr tran anom ombr bre e ($ ($no nomb mbre re, , $t $tit itul ulo= o= "S "Sr. r.") ") { prin pr int t "E "Est stim imad ado o $t $tit itul ulo o $n $nom ombr bre: e:\n \n"; "; } mues mu estr tran anom ombr bre e (“ (“Fe Fern rnán ánde dez” z”); ); muestr muestrano anombr mbre e (“Fern (“Fernánd ández” ez”, , "Prof. "Prof."); ");
Salida: Estimado Sr. Fernández: Estimado Prof. Fernández:
Tablas
Sintaxis: arra ar ray y ([ ([cl clav ave e =>] =>] va valo lor, r, .. ...) .)
La clave es una cadena o un entero no negativo. El valor puede ser de cualquier tipo válido en PHP, incluyendo otro array Ejemplos: $color $col or = arra array y (‘ (‘ro rojo jo’= ’=>1 >101 01, , ‘ver ‘verde de’= ’=>5 >51, 1, ‘az ‘azul ul’= ’=>2 >255 55); ); $ me di das = a rr ay ( 10 , 25 , 1 5);
Acceso: $color[‘rojo’] // No olvidar las comillas $medidas[0]
El primer elemento es el 0
Tablas
La estructura de control foreach permite iterar sobre arrays Sintaxis: fore fo reac ach h (e (exp xpre resi sión ón_a _arr rray ay as $va $valo lor) r) sentencia foreach (expresión_array as $cl $clave => $va $valor) sentencia
Ejemplos: foreach ($color as $ $v va lo r) prin pr int t “V “Val alor or: : $val $valor or R>\n \n”; ”; f or e ac h ( $co lo r a s $ cl av e = > $ va lo r) print print “Clave “Clave: : $clave $clave; ; Valor: Valor: $val $valor< or
BR>\n” \n”; ;
Salida: Valor: Valor: Valor: Clave: Clave: Clave:
101 51 255 rojo; Valor: 101 verde; Valor: 51 azul; Valor: 255
Bibliotecas de funciones
Existen muchas bibliotecas de funciones en PHP Algunos ejemplos: – – – – – – –
Func Funcio ione ness de de man manip ipul ulac ació iónn de de cad caden enas as Funcion iones de fecha y hora Funciones de de ar arrays Funciones de de ficheros Funcion iones matemáticas Funcion iones de de ba bases de de da datos Funciones de red
Algunas bibliotecas requieren la instalación de componentes adicionales Todas las funciones de biblioteca están comentadas en la documentación de PHP
Bibliotecas de funciones
Funciones de manipulación de cadenas – explode() • •
Divide una cadena en subcadenas array explode (str (strin ingg sepa separa rato tor, r, strin stringg stri string ng [, int int limi limit] t]))
– rtr rtrim(), (), ltrim rim(), trim() im() • •
Elim Elimin inan an cara caracctere teress a la dere dereccha, ha, a la izq izquier uierda da o po por ambos lados de una cadena string rtrim ( stri string ng str str [, str strin ingg char charlilist st]) ])
– st r s t r ( ) •
Busca la la pri prim mera oc ocurren rencia de de un una su subcadena
– strt strtol olow ower er() () / strt strtoouppe upper( r()) •
Convierte un una ca cadena a minúscula / mayúscula
– strcm rcmp() / strcasecmp() •
Comp Compaara dos caden adenaas con con//sin sin dis disttinc inción ión de de ma mayúsc yúscul ulaas
– st r l e n ( ) •
Calcula la longitud de una cadena
Bibliotecas de funciones
Funciones de fecha y hora – date() • •
Form Formaatea una fecha según un forma rmato dado Ejemplo: $fecha echa
= dat date e (" ("j/n/ j/n/Y Y H: H:i"); i");
prin print t ("$f ("$fec echa ha") "); ; Resultado: 26/9/2005 17:36
– strtotime() • •
Convierte una fecha en un timestamp de UNIX Ejemplo: $fecha $fecha = date ("j/n ("j/n/Y", /Y", strto strtotime time(“5 (“5 april april 2001") 2001")); ); prin print t ("$f ("$fec echa ha") "); ; Resultado: 5/4/2001
Bibliotecas de funciones
Funciones de arrays – array_count_values() •
Cal Calcula cula la frec frecue uenncia cia de de ca cada uno de de lo los ele eleme menntos tos de de un un array
– array_search() •
Busca un elemento en un array
– count() •
Cuenta los elementos de un array
– sort(), rsort() •
Ordena y re reindexa un array (r=decreciente)
– ksort(), krsort() •
Ordena por cl claves un un array (r=decreciente)
Bibliotecas de funciones
Ejercicio 3: programa que muestra la fecha actual – Ilus Ilustra tra cómo cómo usa usarr come coment ntar ario ios, s, tab tablas las y func funcio ione ness (pro (propi pias as y de biblioteca). También cómo usar el manual de PHP