Sie sind auf Seite 1von 31

Taller de Nuevas Tecnologas

Introduccin a PHP

Lic. Dela Lisandro


ldelia@lidi.info.unlp.edu.ar

PHP (HiperText Pre-Processor)


- Lenguaje de alto nivel, de cdigo abierto, interpretado
- Cdigo embebido en paginas html y ejecutado en el servidor
- Manual: http://www.php.net/manual/en/

PHP (HiperText Pre-Processor)


-Ejemplo: Formulario HTML y procesamiento PHP
<html>
<head>
<title>Ejemplo de uso simple en envo y recepcin de parmetros con PHP</title>
</head>
<body>
<form method="POST" action="resultado_form.php">
Cul es tu nombre?
<input type="text" name="nombre" />
Cul es tu comida favorita?
<select name="comida">
<option value="Spaguetis">Spaguetis</option>
<option value="Asado">Asado</option>
<option value="Pizza">Pizza</option>
</select>
<input type="submit" name="muestra" value="Seguir" />
</form>
</body>
</html>

PHP (HiperText Pre-Processor)


-Ejemplo: Formulario HTML y procesamiento PHP
<html>
<head>
<title>Ejemplo de uso simple en envo y recepcin de parmetros con PHP</title>
</head>
<body>
<?php

?>
</body>
</html>

echo 'Hola, '.$_POST['nombre'].', tu comida favorita es:'. $_POST['comida'].'';

PHP (HiperText Pre-Processor)


Estructuras de control
if/elseif/else
if/else
<?php
$edad = "";
if ($edad >= 18)
{
echo "sos mayor de edad";
}
else
{
echo sos menor de edad";
}
?>

<?php
if ($user == "pepe")
{
// cdigo para pepe
}
elseif ($user == "juan")
{
// cdigo para juan
}
else
{
// cdigo para quienes no son
// juan ni pepe
}
?>

PHP (HiperText Pre-Processor)


Estructuras de control
switch
<?php
$op = "a";

switch ($op) {
case "a":
// cdigo que se ejecuta si $op vale "a"
break;
case "b":
// cdigo que se ejecuta si $op vale "b"
break;
case "c":
// cdigo que se ejecuta si $op vale "c"
break;
default:
// cdigo a ejecutar por defecto si no se cumple ninguna condicin
}
?>

PHP (HiperText Pre-Processor)


Estructuras de control
while
<?php
$i=1;
while ($i <=10) {
echo "$i<br>";
$i++;
}
?>

For
<?php
for($i=1; $i<=10; $i++) {
echo "$i<br>";
}
?>

Do/while
<?php
$i=11;
do
{

echo "$i<br>";
$i++;
} while ($i <=10);
?>

PHP (HiperText Pre-Processor)


Tipos de datos
No se requiere definicin de tipos en la declaracin de variables
El tipo de una variable es determinado por el contexto en el que la
variable es usada
Si a una variable se le asigna un valor string el tipo de la
variable ser string
Si luego a esa variable se le asigna un valor entero, el tipo de la
variable se convertir a entero

PHP (HiperText Pre-Processor)


Tipos de datos
Boolean
Valores: true, false
Enteros
$a =
$a =
$a =
$a =

1234; // nmero decimal


-123; // nmero negativo
0123; // nmero octal
A4FC9; // nmero hexadecimal

Flotantes
$a = 1.234;
$b = 1.2e3;
$c = 7E-10;

PHP (HiperText Pre-Processor)


Tipos de datos
Strings
Comillas dobles
Echo Cadena de caracteres;
Echo Las variables se {$expanden}
Echo Las posiciones de arrays se {$expanden[apellido]}

Comillas simples
Echo Cadena de caracteres;
Echo Las variables NO se {$expanden}
Echo Las posiciones de arrays NO se {$expanden[apellido]}

PHP (HiperText Pre-Processor)


Tipos de datos
Arrays
Clave -> string o integer
Valor -> cualquier tipo/objeto
$vector = array(foo => bar, 12 => true);
Echo $vector[foo];
$vector = array();
$vector[] = 50;
print_r( $vector );
Listado completo de funciones para arrays:
http://www.php.net/manual/en/ref.array.php

PHP (HiperText Pre-Processor)


Constantes
Se definen por medio de la funcin define()
No pueden ser modificadas ni eliminadas

define(Constante, Hola Mundo);


Echo Constante;
Para saber si una constante esta definida:
If (defined(Constante))
{
echo Constante;
}

PHP - Funciones
Funciones
<?php
function foo($arg_1, $arg_2, /* ..., */ $arg_n)
{
echo "Example function.\n";
return $retval;
}
?>

Funciones de funciones
<?php
function foo()
{
function bar()
{
echo "I don't exist until foo() is called.\n";
}
}
?>

Funciones recursivas
<?php
function recursion($a)
{
if ($a < 20) {
echo "$a\n";
recursion($a + 1);
}
}
?>

PHP - Parmetros
Por valor
Por referencia
<?php

Parmetros por defecto


<?php
function makecoffee($type = "cappuccino")
{
return "Making a cup of $type.\n";
}

function add_some_extra(&$string)
{
$string .= 'and something extra.';
echo makecoffee(); // Making a cup of cappuccino.
}
echo makecoffee(null); // Making a cup of .
echo makecoffee("espresso"); // Making a cup of espresso.
$str = 'This is a string, ';
add_some_extra($str);
?>
Echo $str;
?>

PHP - Clases
<?php
class SimpleClass
{
// property declaration
public $var = 'a default value';
// constant declaration
const constant = 'constant value';
// method declaration
public function displayVar() {
echo $this->var;
}

function showConstant() {
echo self::constant . "\n";
}

$instance = new SimpleClass();


$instance -> displayVar();
?>

PHP - Herencia
<?php
class ExtendClass extends SimpleClass
{
// Redefine the parent method
function displayVar()
{
echo "Extending class\n";
parent::displayVar();
}
}
$extended = new ExtendClass();
$extended->displayVar();
?>

PHP Constructor / Destructor


<?php
class BaseClass {
function __construct() {
print "In BaseClass constructor";
}

function __destruct() {
print "Destroying ;
}

$obj = new BaseClass();

?>

PHP Visibilidad de
propiedades y mtodos
class MyClass
{
public $public = 'Public';
protected $protected = 'Protected';
private $private = 'Private';

function printHello()
{
echo $this->public;
echo $this->protected;
echo $this->private;
}

$obj = new MyClass();


echo $obj->public; // Works
echo $obj->protected; // Fatal Error
echo $obj->private; // Fatal Error
$obj->printHello(); // Shows Public, Protected and Private

PHP Clases Abstractas


<?php
abstract class AbstractClass
{
abstract protected function getValue();

public function printOut() {


print $this->getValue() . "\n";
}

class ConcreteClass extends AbstractClass


{
protected function getValue() {
return "ConcreteClass";
}
}
?>

Interface
Permite especificar qu mtodos deben ser implementados por una clase
( no su comportamiento )
Son definidas utilizando la palabra clave interface
Todos los mtodos declarados en una interfaz deben ser public, ya que
sta es la naturaleza de una interfaz.
La clase que implemente una interfaz debe utilizar exactamente las
mismas estructuras de mtodos que fueron definidos en la interfaz. De
no cumplir con esta regla, se generar un error fatal.
Para indicar que una clase implementa una interfaz, se utiliza el
operador implements. Las clases pueden implementar ms de una
interfaz si se deseara, separndolas cada una por una coma.

Interface
interface animal {
function breath();
function eat();
}
class dog implements animal{
function breath() {
echo dog is breathing ;
}
function eat() {
echo dog is easting ;
}
}

Interface vs Clases Abstractas


Una interfaz no contiene atributos ni mtodos implementados,
mientras que una clase abstracta s
Una clase slo puede heredar una clase abstracta, mientras que
en una misma clase se pueden implementar varias interfaces.
Las clases abstractas pueden declarar los mtodos con diferente
visibilidad (public, protected ), mientras que en las interfaces
todos los mtodos deben ser pblicos
Los mtodos que no implementamos en una clase
abstracta, deben ser abstract, en un interface, todos los mtodos
son abstract, y ninguno debe ser implementado.

Interface Ejemplo Parte 1


interface Observer
{
public function update(Observable $subject);
}
interface Observable
{
public function attachObserver(Observer $dependent);
public function detachObserver(Observer $dependent);
public function notify();
}

Interface Ejemplo Parte 2


class Account implements Observable
{
public $status;
private $_observers = array();
public function __construct() {
$this->attachObserver(new Logger());
$this->attachObserver(new Mailer());
}
public function attachObserver(Observer $object) {
$this->_observers[] = $object;
}
public function detachObserver(Observer $object) {
foreach ($this->_observers as $index => $observer) {
if ($object == $observer) {
unset($this->_observers[$index]);
}
}
}

Interface Ejemplo Parte 3


public function notify()
{
foreach ($this->_observers as $observer) {
$observer->update($this);
}
}

public function save()


{
$this->notify();
}

Interface Ejemplo Parte 4


class Logger implements Observer
{
public function update(Observable $subject)
{
echo "Updating status in log table.\n";
}
}
class Mailer implements Observer
{
public function update(Observable $subject)
{
switch (get_class($subject)) {
case "Account":
if ($subject->status == "Expired") {
echo "Sending account expired email.\n";
}
}
}
}

Namespaces
Encapsulan elementos
Ej: en un sistema operativo los directorios sirven para agrupar
archivos relacionados, y actuan como espacios de nombres para los
archivos que hay en ellos
Evita colisiones entre el cdigo que nosotros creamos y
clases/funciones/constantes internas de PHP o de terceras partes

<?php
namespace my\name;
class MyClass {
}

Namespaces
Ej: file1.php
<?php

namespace Foo\Bar\subnamespace;
const FOO = 1;
function foo() {
}
class foo
{
static function staticmethod() {}
}
?>

Namespaces
Ej: file2.php

/* Unqualified name */

<?php
namespace Foo\Bar;

foo();
foo::staticmethod();
echo FOO;

include 'file1.php';
const FOO = 2;
function foo() {
}
class foo
{
static function staticmethod()
{
}
}

/* Qualified name */
subnamespace\foo();
subnamespace\foo::staticmethod();
echo subnamespace\FOO;
/* Fully qualified name */
\Foo\Bar\foo();
\Foo\Bar\foo::staticmethod();
echo \Foo\Bar\FOO;
?>

PHP - Session
Permite almacenar valores a lo largo de subsiguientes accesos.
Cada visitante del sitio tiene asignado un id nica

Cuando una persona accede al sitio web, PHP intenta recuperar el estado
de la sesin
Las variables registradas en la sesin se serializan al termino de cada
request
Referencia de funciones
http://www.php.net/manual/en/ref.session.php

PHP - Session
Registro de variables de la sesin
<?php
session_start();
if (!isset($_SESSION['count'])) {
$_SESSION['count'] = 0;
} else {
$_SESSION['count']++;
}
?>

Eliminacin de las variables de la sesin


<?php
session_start();
unset($_SESSION['count']);
?>

Das könnte Ihnen auch gefallen