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:
Atom (http://atom.io)
Sublime Text (http://www.sublimetext.com)
¿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
php y mysql
By Agustin Moyano
php y mysql
- 888