Sunteți pe pagina 1din 24

E.T.S.E.T.

Universidade
deVigo

Introducción a PHP
Curso 2012-2013

Autor: Juan Carlos Burguillo Rial


Departamento de Enxeñería Telemática
Universidade de Vigo
J.C.Burguillo@det.uvigo.es
http://www.det.uvigo.es/~jrial
J.C. Burguillo Servicios de Internet 1
1. Introducción a PHP

•  Desarrollado por Rasmus Lerdorf en 1994 para poder controlar los


accesos a su página web.

•  PHP es un lenguaje de código abierto y originalmente significaba


(Personal Home Page), pero posteriormente se redenominó (Hypertext
Preprocessor).

•  Típicamente se usa para manejar formularios, procesado de ficheros y


acceso a bases de datos.

•  Se trata de un lenguaje interpretado mediante scripts del lado del


servidor, cuyo código se inserta literalmente en los documentos HTML,
aunque también se puede incorporar en ficheros asociados.

J.C. Burguillo Servicios de Internet 2


2. PHP (HyperText PreProcessor)

•  PHP es uno de los primeros lenguajes de scripts que permite el


desarrollo de páginas Web dinámicas en el lado del servidor.

•  Su código se incluye en las páginas HTML y lo interpreta un


servidor Web con un módulo de procesado PHP que genera la
página resultante.

•  Ha evolucionado para incluir una interfaz de comandos y se


puede usar para el desarrollo de aplicaciones gráficas.

•  PHP se puede utilizar en la mayoría de los servidores Web o


como elemento autónomo (standalone shell) en casi cualquier
sistema operativo o plataforma de manera gratuita.

Universidad de Vigo Servicios de Internet 3


2. PHP (HyperText PreProcessor)
•  En 2004, aparece PHP5 que incluye nuevas
funcionalidades:

–  Como la extensión PDO (PHP Data Objects) que define un


interfaz ligero para acceder a bases de datos bajo el
paradigma de la prog. orientada a objetos.

–  Además se incorporan diversas mejoras orientadas a


optimizar el funcionamiento del lenguaje.

•  En 2008 PHP5 se convirtió en la única versión


estable bajo desarrollo y muchos proyectos dejaron
de soportar versiones previas.

•  Actualmente, es el lenguaje de scripts más popular,


su código es libre y se cede bajo licencia PHP.
Universidad de Vigo Servicios de Internet 4
2. PHP (HyperText PreProcessor)
•  PHP actúa principalmente como un filtro que toma datos de un
flujo o fichero, los procesa y produce otro flujo de salida,
normalmente HTML.

•  Su funcionamiento es similar a otros lenguajes como Microsoft


ASP (Active Server Pages) o JSP (Java Server Pages).

•  Se ha convertido en uno de los elementos que integran la


popular arquitectura LAMP (Linux, Apache, MySQL y PHP).
También hay versiones para Windows y Mac (WAMP y MAMP
respectivamente).

•  Uno de sus puntos débiles es su seguridad, principalmente


derivados de las características del lenguaje que permite
malas prácticas por parte de los programadores.

•  Por otra parte, su núcleo y librerías de desarrollo son bastante


seguras.
Universidad de Vigo Servicios de Internet 5
2. PHP (HyperText PreProcessor)
•  El intérprete PHP sólo ejecuta
código entre sus marcas.

•  En las variables se antepone un $ y <!DOCTYPE html>


no es necesario especificar tipos.
Las sentencias terminan con un “;” <meta charset=utf-8>
<title>PHP Test
•  Para comentarios se usan los </title>
mismos que en C: /* y */ o // <?php
echo 'Hello
•  En cuanto a palabras clave y World';
sintaxis, PHP es similar al lenguaje
C y derivados (C++, Java, Perl): ?>
–  if para condiciones,
–  for y while para bucles,
–  retornos de funciones, etc.

Universidad de Vigo Servicios de Internet 6


2. PHP: tipos de datos y funciones
•  Los tipos de datos son también similares a los lenguajes de la
familia de C.

•  El programador puede desarrollar nuevas funciones.

function Ejemplo () {
return 'prueba';
}
// el resultado será 'Esto es una prueba!'
echo 'Esto es una ' . Prueba () . '!';

Universidad de Vigo Servicios de Internet 7


2. PHP: Progr. Orientada a Objetos

•  En las versiones 3 y 4 de PHP se introdujeron funcionalidades


limitadas de la P.O.O.

•  En PHP 5 se introducen variables y métodos privados o


protegidos, además de métodos y clases abstractas y finales.

•  También se introdujo una forma estándar de declarar


constructores o destructores similares a C++, además de la
gestión de excepciones y el uso de múltiples interfaces de
implementación.

Universidad de Vigo Servicios de Internet 8


2. PHP: Compiladores y optimización
•  El lenguaje PHP se ejecutaba inicialmente con un intérprete,
pero han aparecido compiladores para proporcionar una
mejor eficiencia, seguridad e interoperabilidad.

•  Normalmente, el código PHP se compila sobre la marcha a


un formato interno que ejecuta el motor PHP en el servidor.

•  Pero para optimizar la ejecución y evitar la compilación


repetida cada vez que se accede a la página, los scripts PHP
se pueden entregar en un formato ejecutable usando un
compilador PHP.

•  Adicionalmente, se pueden usar técnicas de caché y


optimización de código para proporcionar una mayor
eficiencia.
Universidad de Vigo Servicios de Internet 9
2. Lenguaje PHP
  La sintaxis de PHP es similar a JavaScript y también posee tipos
dinámicos.

  El código PHP se puede especificar explícitamente <?php ... ?> o


incorporando un fichero externo include ("myScript.inc");

  Hay 3 tipos de comentarios:


// ...
# ...
/* ... */

  Cada variable debe empezar con un símbolo ($) y no se declara


explícitamente. Una variable no asignada tiene el valor NULL.

 La función unSet asigna la variable a NULL, mientras que la función


isSet se usa para determinar si su valor es NULL o no.

J.C. Burguillo Servicios de Internet 10


2. Lenguaje PHP
  Hay ocho tipos básicos:
  Cuatro escalares: boolean, integer, double, and string.
  Dos tipos compuestos: array and object

  Dos tipos especiales: resource and NULL

  Las cadenas pueden usar (') o ("). Con comillas simples (') las variables
incorporadas no se interpretan y las secuencias de escape no se reconocen,
mientras que con comillas dobles (") sí que ocurre.

Los valores boolean son true y false (0, "" y "0" son false; el resto
 

true).

 En las expresiones aritméticas se utilizan los típicos operadores de C. Si el


resultado de una división no es un entero o se produce un overflow se
devuelve un valor double.

Algunas funciones aritméticas: floor, ceil, round, abs, min,


 

max, rand, etc.

J.C. Burguillo Servicios de Internet 11


2. Lenguaje PHP: cadenas
•  En las operaciones con cadenas se usa la coma (,) para concatenar. Para acceder a un
índice se usan las llaves:
$str{3} // is the fourth character

  Las funciones strlen, strcmp, strpos, substr trabajan como en C.


chop: elimina espacios desde el final.
trim: elimina espacios al inicio y final.
ltrim: elimina espacios al inicio.
strtolower, strtoupper: pasan a minúsculas o mayúsculas

  A la hora de convertir cadenas a números, si la cadena tiene una (e) o (E) se convierte a
double, en otro caso a un entero.

  Para convertir a entero podemos usar:


(int) $total;
intval ($total);
settype ($total, "integer");

  Para obtener el tipo de una variable se puede usar:


gettype ($total); // it may return "unknown"
is_integer ($total); // this is a predicate function
J.C. Burguillo Servicios de Internet 12
2. Lenguaje PHP: salida de datos
  La salida de un script PHP es HTML que se envía al navegador a través de
la salida estándar.

  Para imprimir podemos usar print o printf:


print imprime una cadena de forma literal
printf funciona igual que en C.

<html>
<head><title> Trivial php example </title>
</head>
<body>
<?php
print "Welcome to my Web site!";
?>
</body>
</html>

J.C. Burguillo Servicios de Internet 13


2. Lenguaje PHP: control

•  Los operadores relacionales son iguales a JavaScript.

•  Los operadores booleanos y las expresiones de control son iguales a C :


if, if-else, elseif, switch, while, do-while, for

•  break se puede usar en: for, foreach, while, do-while, o


switch

•  continue se puede usar en cualquier bucle

•  También existe la expresión:


if(...):
...
endif;

J.C. Burguillo Servicios de Internet 14


2. Lenguaje PHP: matrices

•  Las matrices en PHP son distintas a las de otros lenguajes y generalizan el


concepto de matriz.

•  Una matriz en PHP es una correspondencia de claves con valores, donde


las claves pueden ser números (matriz tradicional) o cadenas (función
hash) y los valores pueden ser cualquier cosa.

•  Para crear una matriz se usa el constructor array() que toma uno o más
pares (key, value) y devuelve una matriz.
$list = array (0=>"apples", 1=>"oranges", 2=>"grapes");

•  Las matrices pueden tener elementos mezclados:


$list = array ("make"=>"Cessna", "model"=>"C210", 3 => "sold");
$list = array (1, 3, 5, 7, 9);
$colors = array ('red', 'blue', 'green', 'yellow');

J.C. Burguillo Servicios de Internet 15


2. Lenguaje PHP: matrices
•  Para acceder a los elementos de la matriz usamos paréntesis:
$list[4] = 7;
$list["day"] = "Tuesday";
$list[] = 17;

•  Si un elemento con un índice determinado no existe se crea.

•  Se pueden extraer las claves (keys) o valores (values) mediante:


$highs = array("Mon"=>24, "Tue"=>30, "Wed"=>27);
$days = array_keys ($highs);
$temps = array_values ($highs);

•  Podemos comprobar si un elemento existe con:


if (array_key_exists("Wed", $highs)) …

•  Una matriz se puede borrar con unset:


unset($list);
unset($list[4]); # Deletes index 4 element

J.C. Burguillo Servicios de Internet 16


2. Lenguaje PHP: matrices
•  is_array ($list): devuelve verdadero si $list es una matriz

•  in_array (17, $list): devuelve true si 17 es un elemento de $list

•  sizeof (an_array): devuelve su número de elementos

•  explode(" ", $str): crea una matriz con las palabras separadas por espacios
de $str

•  implode(" ", $list): crea una cadena con los elementos de $list
separados por espacios

•  Para acceder a elementos en secuencia usamos current, next o previous:


$colors = array("Blue", "red", "green", "yellow");
$color = current ($colors);
print("$color <br />");
while ($color = next($colors))
print ("$color <br />");
J.C. Burguillo Servicios de Internet 17
2. Lenguaje PHP: matrices

•  array_push($list, $element) y array_pop($list):se usan


para implementar pilas en matrices.

•  foreach: puede iterar sobre claves (keys) o valores (values):


foreach ($colors as $color) {
print "Is $color your favorite color?<br />";
}

$ages = array ("Bob" => 42, "Mary" => 43);


foreach ($ages as $name => $age) {
print("$name is $age years old <br />");
}

J.C. Burguillo Servicios de Internet 18


2. Lenguaje PHP: matrices

•  sort: ordena los valores de una matriz, dejando las claves en el orden
actual, y no devuelve nada.
$list = ('h', 100, 'c', 20, 'a');
sort($list); // Produces ('a', 'c', 'h‘, 20, 100)

•  asort: igual que sort, pero mantiene la relación claves / valor.

•  rsort: igual que sort pero ordenando al revés.

•  ksort: igual que rsort, pero manteniendo la relación clave / valor.


$list("Fred" => 17, "Mary" => 21, "Bob" => 49, "Jill" => 28);
ksort($list);
// $list is now ("Bob"=>49, "Fred"=>17, "Jill"=>28, "Mary"=>21)

•  krsort: ordena las claves (keys) de una matriz en orden inverso.

J.C. Burguillo Servicios de Internet 19


2. Lenguaje PHP: funciones
•  La forma de definir las funciones en PHP es mediante:
function function_name (formal_parameters) {

}

•  Se pueden definir en cualquier momento y su nombre no es sensible a


mayúsculas/minúsculas.

•  No soportan la sobrecarga de parámetros, pero pueden tener un número de


parámetros variable:
- Si al llamarlas hay parámetros de más, se ignoran los sobrantes.
- Si al llamarlas se envían menos parámetros, el resto es unbound.

•  Para hacer el paso por referencia se usa el (&):


function set_max(&$max, $first, $second) {
if ($first >= $second)
$max = $first;
else
$max = $second;
}
J.C. Burguillo Servicios de Internet 20
2. Lenguaje PHP: funciones

•  Se puede devolver cualquier tipo de valor con return, incluyendo objetos


y matrices.

•  Si se devuelve una referencia, el nombre de la función debe tener (&)


como prefijo:
function &newArray($x) { … }

•  Para acceder a variables no-locales se deben declarar como global:


global $sum;

•  Normalmente la vida de una variable en una función es desde que aparece


hasta el final de la función, pero se puede extender mediante static:
static $sum = 0; # $sum is static

J.C. Burguillo Servicios de Internet 21


2. Lenguaje PHP: patrones y formularios

•  PHP, al igual que JavaScript, usa reconocimiento de patrones mediante los


mismos dos mecanismos: uno basado en POSIX y otro basado en Perl.

•  Además tenemos las funciones:


preg_match (pattern, str): busca el patrón en la cadena y
devuelve un valor boolean.
preg_split (pattern, str): devuelve una matriz de subcadenas
separadas por el patrón.

•  En cuanto al manejo de formularios, no importa si se ha usado GET o


POST para transmitir los datos.

•  PHP construye una matriz con los valores del formulario denominado
$_GET o $_POST según el método de envío, cuyos elementos contienen
las claves y valores del formulario (keys y values).

J.C. Burguillo Servicios de Internet 22


2. Lenguaje PHP: cookies

•  Aunque el protocolo HTTP no tiene estados, hay veces en que es útil para
un servidor recordar consultas previas.

•  Para ello se pueden usar cookies que son un par nombre/valor que
intercambia el servidor con el navegador en la cabecera HTTP.

•  En PHP las cookies se crean con setcookie(cookie_name, cookie_value,


lifetime), e.g., setcookie("voted", "true", time() + 86400);

•  Las cookies se eliminan cuando su tiempo de vida se termina y se deben


crear antes de incorporar cualquier HTML de respuesta en el script (para
que puedan viajar en la cabecera).

•  Las cookies se obtienen de la misma manera que se accede a los valores


del formulario, pero mediante la matriz $_COOKIES.

J.C. Burguillo Servicios de Internet 23


2. Lenguaje PHP: sesiones

•  Una sesión es el tiempo que transcurre cuando un navegador interacciona


con un servidor.

•  Para el seguimiento de las sesiones, PHP crea y mantiene un identificador


de sesión tras una llamada a session_start();

•  Se pueden crear variables de sesión mediante session_register


(variable); donde la variable no debe tener el símbolo ($):
session_start();
if (!IsSet($page_number))
$page_number = 1;
print("You have now visited this page $page_number");
print(" times <br />");
$page_number++;
$session_register("page_number");

J.C. Burguillo Servicios de Internet 24

S-ar putea să vă placă și