PHP
HyperText Pre-Procesor
Delimitadores
<? echo 'Un Delimitador'; ?>
<?php echo 'Otro delimitador'; ?>
<script language="php">
echo 'Delimitador en desuso';
</script>
<% echo 'Delimitador compatible con ASP'; %>Se utilizan para dar inicio y fin al código PHP
Variables
$var_1 = 123;
$var_2 = "hola";
$var_3 = $var_1 * 2;Se utilizan para almacenar y operar entre datos variables.
No dependen del tipo de dato a almacenar.
Se declaran utilizando el $ delante del nombre de variable.
Tipos de datos
PHP soporta 8 tipos de datos diferentes:
- boolean
- double
- integer
- string
- array
- object
- resource
- null
Tipos de datos
$MiVar = 123; // Enteros
$MiVar = 1.3e4; // Punto flotante
$MiVar[2] = 123; // Arrays
$MiVar = "Cadena de texto"; // Strings
$MiVar = new MiClase(); // Objetos
$MiVar = TRUE; // BooleanaTipos de datos - Strings
$cad = "A esta cadena ";
$cad = $cad . ‘le vamos a añadir más texto.’;
Podemos concatenar cadenas utilizando el operador "."
Tipos de datos - Strings
| Secuencia | Significado |
|---|---|
| \n | Salto de línea |
| \r | Volver al inicio de la línea |
| \t | Tabulación |
| \\ | Barra invertida |
| \$ | Símbolo $ |
| \" | Comillas dobles |
Tipos de datos - Arrays
$MiArray[0] = 1; // Asigno un entero
$MiArray[1] = "hola!!"; // Asigno una cadena
$MiArray[] = 3; // Agrego un entero
echo $MiArray[2]; // Obtengo el entero 3
$MiArray["nombre"] = "Pepe"; // Asigno una cadena
echo $MiArray["nombre"]; // Obtengo la cadena "Pepe"Varias dimensiones
$MiOtroArray[1]["pepe"][4] = "3 dimensiones!";Tipos de datos - Arrays
$OtroArrayMas = array( 1, "hola", 5);
$YOtroArray = array(
0 => 1,
1 => "hola",
2 => 5,
3 => 8,
"nombre" => "Pepe"
);Podemos definirlos con el constructor array()
Tipos de datos - Strings
$cadena = "Hola Mundo"
$caracter = "Tercer carácter de \$cadena :".$cadena[2];Podemos acceder a un carácter de una cadena si la consideramos como un array.
Funciones
gettype($miVariable); // Devuelve el tipo de una variable
is_array($miVariable); // Devuelve si mi variable es de tipo Array
is_bool($miVariable); // Devuelve si mi variable es de tipo Noolean
is_float($miVariable); // Devuelve si mi variable es de tipo Float
is_integer($miVariable); // Devuelve si mi variable es de tipo Integer
is_null($miVariable); // Devuelve si mi variable es de tipo NULL
is_numeric($miVariable); // Devuelve si mi variable es de tipo numerica
is_object($miVariable); // Devuelve si mi variable es de tipo Object
is_resource($miVariable); // Devuelve si mi variable es de tipo Resource
is_string($miVariable); // Devuelve si mi variable es de tipo String PHP contiene una serie de funciones para identificar el tipo de dato de una variable
Conversión de Tipo
$mivar = 948;
echo $mivar; // Se convierte a String
$mivar = "3"; // Se convierte a entero
$mivar = 2 + $mivar; // para realizar la suma
PHP realiza conversiones de tipo en tiempo de ejecución
Conversión de Tipo
$mivar = (string) 987; // Se convierte a String
$mivar = 254;
settype($mivar, "string"); // Lo convierte a StringO podemos forzarlas desde el código.
Referencia de una variable
$miVariable = &$otraVariable;Podemos definir un puntero utilizando el carácter "&"
$a = 1;
$b = &$a;
unset($a); // Pero $b sigue valiendo 1Podemos eliminar el puntero usando la función unset()
Mostrando una variable
PHP contiene una serie de funciones que nos permiten mostrar el valor y tipo de una variable.
print $miVariable; // Muestra el valor de una variable
var_dump($miVariable); // Muestra el tipo y el valor de una variable
print_r($miVariable); // Muestra el valor de cualquier variableConstantes
PHP permite definir constantes utilizando la función define()
define("SALUDO", "Hola, mundo!");
echo "La constante SALUDO vale " . SALUDO;Operaciones Aritmeticas
| Nombre | Operacion |
|---|---|
| Suma | $a + $b |
| Resta | $a - $b |
| Multiplicación | $a * $b |
| División | $a / $b |
| Módulo | $a % $b |
Operaciones Aritmeticas
| Nombre | Operacion | Resultado |
|---|---|---|
| Post-Incremento | $a++ | Devuelvo $a y luego incremento en 1 |
| Pre-Incremento | ++$a | Incremento en 1 y luego devuelvo el valor de $a |
| Post-Decremento | $a-- | Devuelvo $a y luego decremento en 1 |
| Pre-Decremento | --$a | Decremento en 1 y luego devuelvo el valor de $a |
Operaciones Logicas
| Nombre | Operacion | |
|---|---|---|
| Y | $a and $b $a && $b |
Verdadero si $a y $b son verdaderos |
| O | $a or $b $a || $b |
Verdadero si $a o $b son verdaderos |
| O Exclusivo | $a xor $b | Verdadero si $a o $b es verdadero, pero no ambos. |
| Negación | !$a | Cierto si $a es falso. |
| Igualdad | $a == $b | Compara si ambas variables tienen el mismo valor |
| Identidad | $a === $b | Compara si ambas variables tienen el mismo valor y tipo |
Operaciones Logicas
| Nombre | Operacion | |
|---|---|---|
| No Igual | $a != $b | Verdadero si el valor de $a no es igual al de $b. |
| No Idéntico | $a !== $b | Verdadero si $a no es igual a $b, o si no tienen el mismo tipo. |
| Menor Que | $a < $b | Verdadero si $a es menor que $b. |
| Mayor Que | $a > $b | Verdadero si $a es mayor que $b. |
| Mayor o igual que | $a <= $b | Verdadero si $a es mayor o igual que $b. |
| Menor o igual que | $a >= $b | Verdadero si $a es menor o igual que $b. |
Estructura de Control
if (expresión)
{
// comandos si verdadero
}
if (expresión)
{
// comandos si verdadero
}
else
{
// comandos si falso
}Estructura de Control
while (expresión)
{
// comandos si verdadero
}
do
{
// comandos si verdadero
}
while (expresión);Estructura de Control
for (expresión1; expresión2; expresión3)
{
// comandos si verdadero
}
$a = array (1, 2, 3, 17);
for ($i = 0, $i < 4; $i++ )
{
echo "Valor actual de \$a:".$a[$i]."\n";
}Estructura de Control
foreach (array as indice => variable)
{
comandos
}
$a = array (1, 2, 3, 17);
foreach ($a as $k => $v)
{
echo "Valor actual de \$a:".$v."\n";
}
$a = array (“a”=>1,”b”=>2,”c”=>3,”d”=>17);
foreach ($a as $k => $v)
{
echo "Valor actual de \$a[\$k]:".$v."\n";
}Estructura de Control
switch (variable)
{
case valor1:
// comandos 1
case valor2:
// comandos 2
...
case valorN:
// comandosN
default:
// comandosDefault
}Generando código HTML
echo "<P>Párrafo 1</P>\n";
echo "<P>Párrafo 2</P>\n";
$url = "http://www.google.com.ar"
echo "<a href='".$url."'>Pulsa aquí</a>"’;<P>Párrafo 1</P>
<P>Párrafo 2</P>
<a href='http://www.google.com.ar'>Pulsa aquí</a>Mediante el siguiente código PHP
Generamos el siguiente código HTML
Funciones
function nombre($arg_1, $arg_2, ..., $arg_n)
{
// Código de mi función
return $salida;
}function suma($a, $b)
{
return ($a + $b);
}Las funciones en PHP respetan la siguiente estructura
Por 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);Funciones
function enlace($url = "www.php.net")
{
echo "<a href='" . $url . '">Pulsa aquí</a>";
}También es posible inicializar un valor por defecto para los argumentos de nuestras funciones
Carga de archivos
PHP permite incluir archivos externo. Existen dos metodos para poder hacerlo.
include("archivo.php");
require("otroArachivo.php");Carga de archivos
<html>
<head>
<title>Título</title>
<?php
// Incluir bibliotecas de funciones
require ("$libdir/db.php");
require ("$libdir/lib.php");
require ("$libdir/app.php");
?>
</head>
<body>
<?php
include("cabecera.html");
include("cuerpo.html");
include("pie.html");
?>
</body>
</html>Uso de Formularios
// uno.php
<html>
<body>
<form action="dos.php" method="POST">
Edad: <input type="text" name="edad">
<input type="submit" value="aceptar">
</form>
</body>
</html>// dos.php
<html>
<body>
<?php
$edad = $_REQUEST["edad"];
print ("La edad es: $edad");
?>
</body>
</html>Uso de Formularios
// uno.php
<html>
<body>
<form action="dos.php" method="POST">
<input type="radio" name="animal" value="gato" checked> Gato
<input type="radio" name="animal" value="perro"> Perro
<input type="radio" name="animal" value="tortuga"> Tortuga
<input type="submit" value="aceptar">
</form>
</body>
</html>// dos.php
<html>
<body>
<?php
print($_REQUEST["animal"]);
?>
</body>
</html>Uso de Formularios
// uno.php
<html>
<body>
<form action="dos.php" method="POST">
<input type="checkbox" name="tiene[]" value="gato" checked> Gato
<input type="checkbox" name="tiene[]" value="perro"> Perro
<input type="checkbox" name="tiene[]" value="tortuga"> Tortuga
<input type="submit" value="aceptar">
</form>
</body>
</html>// dos.php
<html>
<body>
<?php
foreach ($_REQUEST["tiene"] as $animal)
print($animal."<br>\n");
?>
</body>
</html>Uso de Formularios
// uno.php
<html>
<body>
<form action="dos.php" method="POST">
<input type="button" name="ir" value="Ir">
</form>
</body>
</html>// dos.php
<html>
<body>
<?php
if ($_REQUEST["ir"])
print ("Al infinito y mas alla!")
?>
</body>
</html>Uso de Formularios
// uno.php
<html>
<?php
$username = "elusuario";
?>
<body>
<form action="dos.php" method="POST">
<?php
print("<input type='hidden' name='usuario' value='".$username."'>\n”);
?>
<input type="submit" value="aceptar">
</form>
</body>
</html>// dos.php
<html>
<body>
<?php
print($_REQUEST["usuario"]);
?>
</body>
</html>Uso de Formularios
// uno.php
<html>
<body>
<form action="dos.php" method="POST">
<select name="tiene">
<option value="Gato" selected> Gato
<option value="Perro"> Perro
<option value="Tortuga"> Tortuga
</select>
<input type="submit" value="aceptar">
</form>
</body>
</html>// dos.php
<html>
<body>
<?php
print($_REQUEST["tiene"]);
?>
</body>
</html>Uso de Formularios
// uno.php
<html>
<body>
<form action="dos.php" method="POST">
<select name="animal[]" multiple size="3">
<option value="Gato" selected> Gato
<option value="Perro"> Perro
<option value="Tortuga"> Tortuga
</select>
<input type="submit" value="aceptar">
</form>
</body>
</html>// dos.php
<html>
<body>
<?php
foreach ($_REQUEST["tiene"] as $animal)
print($animal."<br>\n");
?>
</body>
</html>Uso de Formularios
// uno.php
<html>
<body>
<form action="dos.php" method="POST">
<textarea name="comentario">Este libro me parece ...</textarea>
<input type="submit" value="aceptar">
</form>
</body>
</html>// dos.php
<html>
<body>
<?php
print($_REQUEST["comentario"]);
?>
</body>
</html><?php
$action=$_REQUEST['action'];
if ($action=="") {
?>
<form action="" method="POST">
<input type="hidden" name="action" value="submit">
Nombre:<br>
<input name="nombre" type="text"/><br>
E-mail:<br>
<input name="email" type="text" value="" size="30"/><br>
Mensaje:<br>
<textarea name="mensaje"></textarea><br>
<input type="submit" value="Send email"/>
</form>
<?php
} else {
$nombre = $_REQUEST["nombre"];
$email = $_REQUEST["email"];
$mensaje = $_REQUEST["mensaje"];
if (($nombre=="")||($email=="")||($mensaje=="")) {
echo "Por favor completa todos los campos del <a href='\'>formulario</a>.";
} else {
echo "Gracias por contactarnos.";
}
}
?> Manejo de Archivos
Podemos abrir un archivo utilizando la función PHP
fopen($archivo,$modo);<?php
$gestor1 = fopen("/home/rasmus/fichero.txt", "r");
$gestor2 = fopen("c:/users/rasmus/fichero.gif", "a");
$gestor3 = fopen("http://www.example.com/", "r+");
$gestor4 = fopen("ftp://user:password@example.com/fichero.txt", "w+");
?>| Modo | Descripción |
|---|---|
| r | Solo lectura. Puntero al inicio. |
| r+ | Lectura y escritura. Puntero al inicio. |
| w | Solo escritura. Si no existe se lo crea. Se coloca el puntero al Inicio del archivo. |
| w+ | Lectura y escritura. Resto igual a "w". |
| a | Solo escritura. Si no existe se lo crea. Se coloca el puntero al fin del archivo. |
| a+ | Lectura y escritura. Resto igual a "a". |
| x | Creación y solo lectura. Puntero al inicio. |
| x+ | Creación, lectura y escritura. Resto igual a "x". |
| c | Creación y solo escritura. Puntero al inicio. |
| c+ | Creación, lectura y escritura. Resto igual a "c". |
Manejo de Archivos
Podemos leer el contenido de un archivo dado utilizando la función PHP
fread($archivo,$bytes);<?php
$gestor = fopen("fichero.txt", "r");
$primerByte = fread($gestor,1);
echo $primerByte;
?>Manejo de Archivos
Podemos cerrar un archivo ya abierto utilizando la función PHP
fclose($archivo);<?php
$gestor = fopen("fichero.txt", "r");
$primerByte = fread($gestor,1);
echo $primerByte;
fclose($gestor);
?>Manejo de Archivos
Podemos escribir sobre un archivo ya abierto utilizando la función PHP
fwrite($archivo,$datos);<?php
$gestor = fopen("fichero.txt", "r");
$primerByte = fwrite($gestor,"Un dato mas\n");
echo $primerByte;
fclose($gestor);
?>Subida de Archivos
El FORM debe tener el atributo ENCTYPE configurado como multipart/form-data.
Se debe configurar el limite de tamaño para los archivos a subir.
- Modificando el PHP.ini
- Agregando un campo en el formulario.
<form enctype="multipart/form-data">
...
</form><input type="hidden" name="MAX_FILE_SIZE" value="2048">Subida de Archivos
Podemos obtener la direccion del archivo PHP.ini usando la funcion phpinfo().
;;;;;;;;;;;;;;;;
; File Uploads ;
;;;;;;;;;;;;;;;;
; Whether to allow HTTP file uploads.
file_uploads = On
; Temporary directory for HTTP uploaded files (will use
; system default if not specified).
;upload_tmp_dir =
; Maximum allowed size for uploaded files.
upload_max_filesize = 2MSubida de Archivos
PHP expone una variable global $_FILES que permite acceder a los archivos subidos.
// Nombre original del archivo
$_FILES["imagen"]["name"]
// MIME TYPE del archivo. Por ejemplo, "image/jpg"
$_FILES["imagen"]["type"]
// Tamaño en bytes del archivo
$_FILES["imagen"]["size"]
// Nombre temporal del archivo
$_FILES["imagen"]["tmp_name"]
// Código del error ocurrido
$_FILES["imagen"]["error"]
Y dos funciones para el manejo de los mismos
// Determina si un archivo dado fue subido
is_uploaded_file($pathTemporal);
// Mueve un archivo dado
move_uploaded_file($pathTemporal,$pathFinal);Subida de Archivos
// uno.php
<html>
<body>
<form action="dos.php" method="POST" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="30000">
<input type="file" name="imagen">
<input type="submit" value="aceptar">
</form>
</body>
</html>// dos.php
<html>
<body>
<?php
if (is_uploaded_file ($_FILES['imagen']['tmp_name'])) {
$nombreDirectorio = "img/";
$idUnico = time();
$nombreFichero = $idUnico."-".$_FILES['imagen']['name'];
move_uploaded_file($_FILES['imagen']['tmp_name'],$nombreDirectorio.$nombreFichero);
} else
print("No se ha podido subir el fichero\n");
?>
</body>
</html>Sesiones
Las sesiones son un mecanismo por el cual nosotros podemos almacenar información.
- La información persiste entre paginas.
- La información es almacenada en el servidor.
- La gestión de la misma depende exclusivamente del servidor.
- Expiran en corto plazo por lo que en general solo duran hasta que el usuario cierra la pagina.
Sesiones
Podemos crear una sesión utilizando la función PHP
session_start();Una vez iniciada, podemos acceder y modificar sus valores usando la variable global $_SESSION
$_SESSION["usuario"] = "fulano";Podemos destruir una sesión utilizando la función PHP
session_destroy();Sesiones
<?php
// Creo la sesión
session_start();
// Valido si esta seteado el indice "contador"
// en la variable global $_SESSION
if (isset($_SESSION["contador"])) {
// Si esta seteado, lo incremento en 1
$_SESSION["contador"]++;
} else {
// Si no esta seteado lo inicializo en 0
$_SESSION["contador"] = 0;
}
?>
Hola, has ingresado <?php echo $_SESSION["contador"]; ?>
veces a este sitio.Cookies
Las cookies son un mecanismo por el cual nosotros podemos almacenar información.
- La información persiste entre paginas.
- La información es almacenada en el cliente.
- La gestión de la misma depende tanto del cliente como del servidor.
- Se le asigna a cada una el tiempo de vida que tendrán una vez creadas.
Cookies
Podemos crear y modificar una cookie utilizando la función PHP
setcookie($nombre,$contenido,$tiempo);Una vez iniciada, podemos acceder a sus valores usando la variable global $_COOKIE
echo $_COOKIE["usuario"];Para destruir una cookie debemos blanquear su valor actual utilizando la función PHP
setcookie($nombre,"",$tiempo);Clases
Podemos crear una clase en PHP utilizando la palabra reservada class
<?php
class ClaseSencilla
{
// Declaración de una propiedad
public $var = 'un valor predeterminado';
// Declaración de un método
public function mostrarVar() {
echo $this->var;
}
}
?>Clases
Para poder utilizarla, solo debemos crear una instancia de la misma utilizando la palabra reservada new.
<?php
// Creamos una instancia de la clase previamente definida
$instancia = new ClaseSencilla();
// Llamamos a la función mostrarVar
$instancia->mostrarVar();
?>Clases
Tambien es posible declarar el nombre de la clase en una variable y luego utilizar la variable para instanciar la clase
<?php
// Definimos el nombre de la clase
$claseAUsar = "ClaseSencilla";
// Creamos una instancia de la clase previamente definida
$instancia = new ClaseSencilla();
// Llamamos a la función mostrarVar
$instancia->mostrarVar();
?>Clases
Para modificar el atributo de una instancia solo basta con utilizar la asignación convencional
<?php
// Definimos el nombre de la clase
$claseAUsar = "ClaseSencilla";
// Creamos una instancia de la clase previamente definida
$instancia = new ClaseSencilla();
// Cambiamos el valor del atributo var
$instancia->var = "Nuevo valor para var";
// Llamamos a la función mostrarVar
$instancia->mostrarVar();
?>Clases
Podemos declarar un atributo de una clase con el mismo nombre que un método de la misma.
<?php
// Creamos la clase Foo
class Foo
{
// Declaramos la variable $bar
public $bar = 'propiedad';
// Declaramos la funcion bar
public function bar() {
return 'método';
}
}
// Instanciamos la clase
$obj = new Foo();
// Llamamos la variable y al metodo
echo $obj->bar;
echo $obj->bar();
?>Clases
PHP también nos permite utilizar herencia mediante el uso de la palabra reservada extend
<?php
// Creo la clase padre
class Padre
{
public function saluda()
{
return "HOLA";
}
}
// Creamos la clase hija
class Hija extends Padre
{
}
$obj1 = new Padre();
$obj2 = new Hija();
echo $obj1->saluda();
echo $obj2->saluda();
?>Clases
Si utilizamos herencia, podemos modificar el comportamiento de los métodos del padre
<?php
// Extiendo la clase ClaseSencilla
class ClaseExtendida extends ClaseSencilla
{
// Redefinición del método padre
public function mostrarVar()
{
echo "Clase extendida\n";
parent::mostrarVar();
}
}
// Instancio la clase
$extendida = new ClaseExtendida();
// Llamo al metodo
$extendida->mostrarVar();
?>Clases
Los métodos y atributos de una clase pueden ser accedidos o no en función de la visibilidad que se les fue configurada
<?php
// Creo la clase
class MiClase
{
public $todos = 'Public';
protected $miosYParientes = 'Protected';
private $soloMios = 'Private';
function funciona()
{
echo $this->todos;
echo $this->miosYParientes;
echo $this->soloMios;
}
}
$obj = new MiClase();
echo $obj->todos; // Funciona bien
echo $obj->miosYParientes; // Error Fatal
echo $obj->soloMios; // Error Fatal
$obj->funciona(); // Muestra Public, Protected y Private
?>Clases
Los métodos y atributos de una clase pueden ser accedidos o no en función de la visibilidad que se les fue configurada
<?php
// Creo la clase Foo
class Foo
{
// Declaro el atributo estático
public static $mi_static = 'foo';
// Declaro el método estático
public static function valorStatic() {
return self::$mi_static;
}
}
// Muestro el valor del atributo estático
print Foo::$mi_static . "\n";
// Instancio la clase y llamo el método
$foo = new Foo();
print $foo->valorStatic() . "\n";
?>Clases
Todas las clases exponen un método constructor y un método destructor.
<?php
// Creo la clase Foo
class Foo
{
function __construct() {
print "En el constructor";
}
function __destruct() {
print "Destruyendo " . $this->name . "\n";
}
}
// Instancio la clase
$foo = new Foo();
// Destruyo la clase
$foo = null;
?>PHP
By Neri Guidi
PHP
- 1,025