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;                     // Booleana

Tipos 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 String

O 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 1

Podemos 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 variable

Constantes

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.

  1. Modificando el PHP.ini
  2. 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 = 2M

Subida 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