Professional Documents
Culture Documents
PHP
Alternativas
CGI/Perl
Microsoft ASP y ASP.NET (C# y Visual Basic .NET como lenguajes)
JSP/Java servlets
ColdFusion (Adobe)
Instalacin y configuracin
Configuracin de PHP
http://php.net/manual/en/install.php
Requiere tambin la instalacin de una base de datos
MySQL
PostgreSQL
Fichero php.ini
Se puede ver con phpinfo()
Editores PHP
http://free-php-editor.com/
http://en.wikipedia.org/wiki/List_of_PHP_editors
Aptana Studio
Eclipse con PHPEclipse o PHP Development Tools
Netbeans
Notepad++
Adobe Dreamweaver
PHP
Servidor Web
Cliente
request
Navegador
httpd
GET index.php
Intrprete PHP
(Genera HTML)
cdigo
HTML
Busca pgina index.php
Consulta
index.php
Repositorio
de pginas
PHP
Base de
datos
Funcionamiento de PHP
holamundo.php
<html>
<head>
<title>HolaMundoPHP</title>
</head>
<body>
<?php echo'<h1>HolaMundoPHP</h1>';?>
</body>
</html>
<html>
<head>
<title>Hola Mundo PHP</title>
</head>
<body>
<h1>Hola Mundo PHP</h1>
</body>
</html>
GET holamundo.php
intrprete PHP
PHP
Versiones de PHP
Licencia PHP
Otros usos
PHP
PHP
Cdigo PHP
PHP
Cdigo PHP
<html>
<head>
<title>Evaluacindeexpresionesenlnea</title>
</head>
<body>
<! Expresinenlnea>
<p>2+2=<?=2+2?></p>
<! FormahabitualdeincluircdigoPHP>
<p>2+2=<?php echo(2+2);?></p>
</body>
</html>
PHP
require('/directorio/fichero');
include('/directorio/fichero');
require_once('/directorio/fichero');
include_once('/directorio/fichero');
require produce un error fatal y la terminacin del script si falla
include solo produce un warning
include_once y require_once para incluir definiciones estticas
PHP
10
Sintaxis de PHP
Instrucciones
<?php
echo"HolaMundo";
?>
<?php
echo
"HolaMundo";
?>
Este s
<?php
echo"Hola
Mundo";
?>
Comentarios
PHP
11
$usuario="Juan";
echo"<p>Bienvenido$usuario</p>";
print "<p>Bienvenido$usuario</p>";
print("<p>Bienvenido$usuario</p>");
<p>BienvenidoJuan</p><p>BienvenidoJuan</p><p>BienvenidoJuan</p>
PHP
12
13
Variables
Por valor
Por referencia (con &)
Un cambio en la referencia tambin se aplica a la variable original
$x='equis';
$_x=&$x;
$_x='x';
echo$x;
echo$_x;
//referenciaa$x
//x
//x
PHP
14
Variables
mbito de variables
Local
Una variable definida en una funcin est limitada a dicha funcin
Se elimina al acabar la ejecucin de la funcin
Salvo si la variable se declara como static
Las variables static solo se usan en la funcin
En las siguientes invocaciones a la funcin preservan su valor anterior
Global
Una variable definida fuera de una funcin
Se pueden definir en una parte y usarse en otra
Pero no dentro de las funciones
A menos que se declare en la funcin con la palabra clave global
O que se acceda con el array $GLOBALS[indice]
Superglobal
Siempre disponibles
Variables predefinidas en el lenguaje, como $GLOBALS
PHP
15
Ejercicio
Variables
?>
$x=1;
$y=2;
function prueba() {
$x=9;
echo $x.' ';
echo $GLOBALS['x'].' ';
global $y;
$y = $x + $y;
}
prueba();
echo $x.' ';
echo $y.' ';
PHP
16
Variables superglobales
echo$_SERVER['SERVER_NAME'];
echo$_SERVER['SERVER_ADDR'];
echo$_SERVER['REMOTE_ADDR'];
echo$_SERVER['HTTP_USER_AGENT'];
echo$_SERVER['DOCUMENT_ROOT'];
//nombredel(virtual)host
//IPdelservidor
//IPdelcliente
//Elnavegadordelcliente
//Directoriorazdelosdocs
PHP
17
Evitar register_globals
Agujero de seguridad:
<?php
//Seusalavariable$authorized paraindicarsielusuariotieneprivilegios
if (authenticated_user()){
$authorized =true;
}
//Comonosehainicializadopreviamenteafalse,
//siregister_globals estactivado,podrainicializarse,
//porejemplo,desdeunapeticinGETauth.php?authorized=1
//queledaraelvalorinicialcomotrue.
//Concdigocomoelsiguienteentraracomousuarioautorizado:
if ($authorized){
include "/datos/muy/privados/listar_datos.php";
}
?>
PHP
18
Variables de variables
<?php
$x='texto';
$$x='Hola';
echo$x;
echo$$x;
echo$texto;
?>
//seasignaunstring a$x
//seusacomounavariabledevariable
//texto
//Hola
//Hola
PHP
19
Constantes
PHP
20
Constantes predefinidas
__LINE__
Nmero de la lnea de la instruccin que se est ejecutando
__FILE__
Ruta y nombre del fichero
Si se usa en un include, se devuelve el nombre del fichero includo
__DIR__
Directorio del fichero
__FUNCTION__
Nombre de la funcin
__CLASS__
Nombre de la clase, incluye el namespace en el que est declarada
__TRAIT__
Nombre de un trait (similar a una clase, se ver ms adelante)
__METHOD__
Nombre del mtodo
__NAMESPACE__
Espacio de nombres
PHP
21
Constantes predefinidas
PHP_VERSION (string)
La versin actual de PHP en notacin "mayor.menor.edicin[extra]"
PHP_DEBUG (integer)
PHP_OS (string)
PHP_EOL (string): smbolo de fin de lnea
PHP_INT_MAX (integer)
E_ERROR (integer): constante de informe de error
E_WARNING (integer): indica si se listan los warnings
E_STRICT (integer): indica si se listan los errores
TRUE
FALSE
NULL
Lista completa:
http://www.php.net/manual/es/reserved.constants.php
PHP
22
Funciones
PHP
23
Funciones
Por valor
Se hace una copia del argumento que se pasa a la funcin
Los cambios realizados no son visibles fuera de la funcin
Por referencia (indicando & delante del parmetro)
function nombre(&$par1){/*...*/}
En este caso los cambios al parmetro s afectan a la variable que se
pasa por referencia
Tiene que ser una expresin que d un valor constante
Los argumentos con valores por defecto se tienen que poner al final
function nombre($par1,$par2=valor_constante){/*...*/}
PHP
24
Tipos bsicos
Escalares
Tipos compuestos
boolean
integer
float (floating-point number, aka double)
string
array
object
Tipos especiales
resource
NULL
PHP
25
Tipos escalares
Boolean
Integer
Float
PHP
26
Tipos escalares
String
$cadena{n}
PHP
27
Tipos escalares
$texto="Bienvenido";
$nombre="Juan";
echo"$texto,${nombre}.";//Bienvenido,Juan.
PHP
28
Tipos escalares
//Juansaid:"I'll beback"
echo'FicherosC:\\xampp\\htdocs\\*.html';
//FicherosC:\xampp\htdocs\*.html
echo'FicherosC:\xampp\htdocs\*.html';
//FicherosC:\xampp\htdocs\*.html
echo'Nosaltalínea con\n.Seimprimeigualque\\n';
//Nosaltalneacon\n.Seimprimeigualque\n
echo'Las$variablesnose$interpretan.';//Las$variablesnose$interpretan.
PHP
29
Tipos escalares
String
Asignacin y concatenacin .=
$texto="Bienvenido";
$texto.=",Juan.";
echo$texto;//Bienvenido,Juan.
PHP
30
Array
$array = array(
"uno" => 1,
"dos" => 2,
);
// desde PHP 5.4
$array = [
"uno" => 1,
"dos" => 2,
];
Juan Pavn - UCM 2012-13
array(1) {
[1]=> string(1) "d"
}
31
PHP
Array
array(4)
[0]=>
[1]=>
[5]=>
[6]=>
}
PHP
{
string(3)
string(3)
string(4)
string(6)
"uno"
"dos"
"tres"
"cuatro"
32
Array
string(4) "hola"
int(24)
string(5) "bravo"
PHP
33
Array
// $arr[5] = 22;
PHP
34
Array
PHP
35
Array
PHP
36
Array
PHP
37
Ejercicio
?>
$array[] = 7;
print_r($array);
PHP
38
Ejercicio
PHP
39
Objetos
Se pueden definir
Clases
Traits
Interfaces
$copia_de_objeto =clone$objeto;
PHP
40
Clases
Seguido de las
Propiedades
Constantes
Variables
Pueden ser de clase declarndolas como static
Mtodos
Funciones
Constructor __construct()
Destructor __destruct()
PHP no tiene sobrecarga de mtodos: no puede haber varias versiones de
un mtodo con distintos parmetros
Sera complicado por ser un lenguaje dbilmente tipado
PHP
41
Herencia de clases
extends
parent::metodo();
PHP
42
Interfaces
PHP
43
Clases abstractas
PHP
44
Traits
PHP
45
$objeto->propiedad
$objeto->metodo()
PHP
46
Objetos
$instancia =newClase();
PHP
47
Objetos
Pseudo-variable $this
PHP
48
Objetos
Usando pseudo-variables
$parent
Referencia a la superclase
Se puede invocar un mtodo de la superclase como
parent::metodo();
$self
Referencia a la clase (diferente de $this que referencia a un objeto)
Puede usarse para referirse a mtodos o propiedades estticas
self::$variable_static;
PHP
49
Ejercicio
PHP
50
Resource
http://www.php.net/manual/en/resource.php
Ejemplos
ftp
Se crea con ftp_open()
Se usa con ftp_login(), ftp_mkdir(), ftp_get(), ftp_chdir(), etc.
Se elimina con ftp_close()
imap
ldap link
msql query
pdf document
xml
51
PHP
NULL
function destruye() {
global $x;
unset($x);
}
$x="equis";
destruye();
echo $x;
Juan Pavn - UCM 2012-13
function destruye() {
global $x;
unset($GLOBALS['x']);
}
$x="equis";
destruye();
echo $x;
PHP
52
(array)
(bool) o (boolean)
(int) o (integer)
(object)
(real) o (double) o (float)
(string)
$precio=(double)20;
$vueltas=(int)13.4;
//20.0
//13
PHP
53
Conversiones a integer
Conversiones a string
PHP
54
PHP
55
print_r(mixed $variable)
PHP
56
Serializacin
PHP
57
Expresiones
Asignacin
Expresiones numricas
Operadores aritmticos:
+ , ++, -, --, *, /, % (mdulo)
Asignaciones con operadores aritmticos
+=, -=, *=, /=, %=
JavaScript
58
Expresiones
Expresiones lgicas
Operadores lgicos
&& and
|| or
xor
!
Precedencia: !, &&, ||, and, xor, or
Operador ternario
JavaScript
59
Expresiones
Expresiones de comparacin
Operadores relacionales: ==, !=, >, <, >=, <=, ===, !==
Conversin automtica de tipos en las comparaciones
PHP realiza conversiones automticas entre tipos para llevar a cabo
la comparacin cuando sea necesario
Si un operando es una cadena y el otro un nmero, se intenta convertir la
cadena a nmero. Si no se puede convertir la comparacin devuelve false
Si uno de los operandos es un booleano y el otro un nmero se convierte el
booleano a nmero (true 1, false 0)
JavaScript
60
Control de flujo
Instrucciones condicionales
if
if (condicin){
//Instrucciones
}
elseif (condicin) {
//Instrucciones
}
//otroselseif ...
else {
//Instrucciones
}
Sintaxis alternativa (varios bloques):
<?php if(condicin):?>
Texto (HTML,JavaScript,PHP)
<?php else:?>
Ms texto
<?php endif;?>
<p>
<?php if($nombre==null):?>
Hola.
<?php else:?>
Hola <?php echo$nombre ?>.
<?php endif;?>
</p>
Juan Pavn - UCM 2012-13
JavaScript
61
Control de flujo
Instrucciones condicionales
switch
switch (expresin){//laexpresindebedaruntipoescalar
casevalor1:
//Instruccionescaso1
break; //paraacabarelswitch
casevalor2:
//Instruccionescaso2
break;
//otroscase...
default: //opcional
//Instruccionessinosedieraningncaso
}
Tambin se puede poner en varios bloques
El primer case tiene que ir en el mismo bloque PHP de switch
JavaScript
62
Control de flujo
Bucles
while
while(condicin){
//Instrucciones
}
Ejemplo:
while(true){
bucle_infinito();
}
do while
do{
//Instrucciones
}while(condicin)
<?php while(condicin):?>
Texto (HTML,JavaScript,PHP)
<?php endwhile;?>
JavaScript
63
Control de flujo
Bucles
for
for (inicializacin;condicin;actualizacin){
//Instrucciones
}
Ejemplo:
for ($i=0;$i<$limite;$i++){
procesa($i);
}
Sintaxis alternativa (varios bloques):
<?php for(expr1;expr2;expr3):?>
Texto (HTML,JavaScript,PHP)
<?php endfor;?>
JavaScript
64
Control de flujo
Excepciones: try..catch
JavaScript
65
Control de flujo
exit
void exit ([ string $status ] )
Lista el estado ($status)
JavaScript
66
Bibliografa
Libros
PHP
67
PHP
68