Introducción a la programación en PHP y MySQL

clase 1

Tecnologías:

Primeras Aplicaciones Web

Aparición de AJAX

Aplicaciones Modernas

Aplicaciones Modernas

una nube de APIs

para diferentes tipos de frontends

Antes de empezar


apt-get install apache2 libapache2-mod-php5 php5 php5-mysql mysql-server mysql-workbench

Editores recomendados:

¿Que es PHP?

PHP (acrónimo recursivo de PHP: Hypertext Preprocessor) es un lenguaje de código abierto muy popular especialmente adecuado para el desarrollo web y que puede ser incrustado en HTML.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <title>Ejemplo</title>
    </head>
    <body>

        <?php
            echo "¡Hola, soy un script de PHP!";
        ?>

    </body>
</html>

Sintaxis básica

Todo script de php debe ir encerrado entre las etiquetas

<?php y ?> para ser analizado por el itérprete. 

 

El tag de cierre puede ser omitido, en caso que todo el archivo sea un script php.

<?php
echo "Hola mundo";

// ... más código

echo "Última sentencia";

// el script finaliza aquí sin etiqueta de cierre de PHP

Sintaxis básica

<?php
echo " Toda sentencia debe terminar con ';' ";

// Esto es un comentario de una línea.

# Al igual que esto.

/*
Esto es un 
comentario que puede abarcar
muchas líneas, en caso que quieran
explayarse en alguna explicación
*/
?>

Tipos de Datos - Booleanos 

<?php
//No son suceptibles a mayúsculas o minúsculas
$booleano = True; //puedo escribirlo true, TRUE, trUE

//Tipos de datos que en un if resuelven a false

if(FALSE) echo "un booleano FALSE";

if(0) echo "el entero 0";

if(0.0) echo "el flotante 0.0";

if(array()) echo "un array vacío";

if("" || "0") echo "un string vacío, o el string '0'";

if(null) echo "el tipo de dato NULL";

?>

Tipos de Datos - Numéricos

<?php
//Enteros

$e = 1234; // número decimal
$e = -123; // un número negativo
$e = 0123; // número octal (equivale a 83 decimal)
$e = 0x1A; // número hexadecimal (equivale a 26 decimal)
$e = 0b11111111; // número binario (equivale al 255 decimal)

//Flotantes
$f = 1.234; 
$f = 1.2e3; 
$f = 7E-10;

?>

Tipos de Datos - Strings

<?php
//Strings con '

$s = 'Esto es un string';

$s = 'Se pueden escribir
    con enters';

//Resultado: Si quiero incluir ' hay que escaparlas
$s = 'Si quiero incluir \' hay que escaparlas'; 

//Resultado: Si quiero incluir \\ hay que escaparlas
$s = 'Si quiero incluir \\ hay que escaparlas'; 

//Resultado: Las $variables no se reemplazan
$s = 'Las $variables no se reemplazan'; 

?>

Tipos de Datos - Strings

<?php
//Strings con "

$s = "Esto es un string";

$s = "Se pueden escribir
    con enters";

//Resultado: Si quiero incluir ' hay que escaparlas
$s = "Si quiero incluir \" hay que escaparlas"; 

//Resultado: Si quiero incluir \\ hay que escaparlas
$s = "Si quiero incluir \\ hay que escaparlas"; 

$variable = 'pelota';

//Resultado: La pelota no se mancha
$s = "La $variable no se mancha"; 

?>

Tipos de Datos - Array

//La clave puede ser un integer o un string. 
//El valor puede ser de cualquier tipo. 
$array = array(
    "foo" => "bar",
    "bar" => "foo",
    100   => -100,
    -100  => 100
);

$manual = array(
    0 => 'cero',
    1 => 'uno',
    2 => 'dos'
);

//Al no incluir una clave en el array, se genera automáticamente
//empezando desde 0
$autoindexado = array('cero', 'uno', 'dos');

$manual == $autoindexado; //true

$manual[0] == 'cero'; //true
$array = array(
    "foo" => "bar",
    42    => 24,
    "multi" => array(
         "dimensional" => array(
             "array" => "foo"
         )
    )
);

$array['multi']['dimensional']['array'] == 'foo'; //true

$clave = 'foo';

echo $array[$clave]; //bar

$clave = 42;

echo $array[$clave]; //24

$array[] = 34; //Agrega un elemento al array, con el máximo indice numérico + 1 (en este caso 43)

Tipos de Datos - Array

namespace miProyecto\padre;

class objeto {
    private $privada;
    protected $protegida;
    public $publica

    function setPrivada($param) {
        $this->privada = $param;
    }

    function getPrivada() {
        return $this->privada;
    }
}

$obj = new objeto();
$obj->setPrivada('hola');
echo $obj->getPrivada(); //'hola'

Tipos de Datos - Objetos

namespace miProyecto\hijo;

use miProyecto\padre\objeto as padre;

class subobjeto extends padre {
    public static $estatica;

    function __constructor($param) {
        $this->setPrivada($param);
    }

    public static function setEstatica($valor) {
        self::$estatica = $valor;
    }
}

$obj = new subobjeto('chau');
echo $obj->getPrivada(); //chau

subobjeto::setEstatica('Variable estática');

echo subobjeto::$estatica;

Tipos de Datos - Objetos

echo foo(1,2); //3

function foo($arg_1, $arg_2, /* ..., */ $arg_n)
{
    echo "Función de ejemplo.\n";
    return $arg_1+$arg_2;
}

verdadera(); //Error: función no definida
if(true) {
    function verdadera() {
        echo "Se ejecuta";
    }
}

verdadera(); //Se ejecuta;

$variable = 'verdadera';

$variable(); //Se ejecuta;

Funciones

 if($boolean) {

 } else if($boolean) {

 } elseif($boolean) {

 } else {

 }

Estructuras de control


 while($boolean) {

 }

 do {

 } while($boolean)
 switch($var) {
    case 1:
        break;

    case "a":
        break;

    default: 

 }
 $fts = array(
    'Pera', 
    'Manzana', 
    'Naranja'
 );

 foreach($fts as $f) {
 
 }
 $fts = array(
    'Pera', 
    'Manzana', 
    'Naranja'
 );
 $n = count($fts);
 for($i=0;$i<$n;$i++) {
 
 }
include_once('/path/archivo/php')

Ejercicio 1

Crear un archivo php que imprima "Hola Mundo", y correrlo desde la consola.

Ejercicio 2

Crear 2 archivos php.

  • El principal se debe llamar index.php.
  • El segundo se debe llamar funcion.php.
  • El principal debe incluir al segundo.
  • El segundo debe definir una función a la cual le paso 2 argumentos y me debe devolver la suma.
  • Utilizar la función desde index.php e imprimir el resultado en la consola.

Ejercicio 3

Crear 2 archivos php: index.php y objeto.php.

  • index debe tener el namespace "principal" y objeto el namespace "secundario". 
  • objeto debe declarar una clase que implemente 4 funciones matemáticas (suma, resta, mult, divis).
  • index debe incluir objeto y usarlo con el nombre "math".
  • index debe declarar una función que cree una instancia de "math" y debe generar un par de números aleatorios (buscar en la documentación, en php.net).
  • Con el primer par de números aleatorios, llamar a la primer función matemática.
  • Para las funciones subsiguientes, utilizar el resultado de la operación anterior, más un nuevo número aleatorio.
  • Todas las operaciones deben imprimir en consola los parámetros de entrada, la operación y el resultado.

¿Preguntas?

Links de Interés

Made with Slides.com