Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Symfony2 Clase 1 y 2

Introduccion a PHP - POO
by

Tomas Cordoba

on 13 October 2013

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Symfony2 Clase 1 y 2

Introducción - PHP
Lic. Tomás Córdoba
cordoba.tomas@gmail.com
Lenguaje de programación interpretado
Es utilizado comúnmente para para ser interpretado del lado del servidor, pero puede ser usado desde una línea de comandos.
Se utiliza mayormente para la realización de páginas web, pero puede ser utilizado para construir otro tipo de aplicaciones.
Su sintaxis es similar a la utilizada en el lenguaje C
Las versiones actuales (a partir de la 5), permite la POO (Programación Orientada a Objetos).
¿Que es PHP?
En aplicaciones Web, se ejecuta del lado del servidor (Server Side Scripting)
¿Que es PHP?
php.ini – Contiene la configuración de PHP con la cual podemos controlar muchos aspectos de su funcionamiento.
Algunos parámetros se pueden alterar en tiempo de ejecución utilizando ini_set()
Para ver los parámetros configurados podemos utilizar el siguiente script: <?php phpinfo();?>
Configuración PHP
¿Que es PHP?
PHP está diseñado para ser utilizado en el mundo del HTML. El código está embebido dentro del HTML.
<html>
<head> Página de ejemplo </head>
<body>
La fecha es: <?php echo $date();?>
</body>
</html>
Sintaxis, Variables y Operadores
Las instrucciones se delimitan con un “;” punto y coma.
Los bloques de instrucciones se delimitan entre llaves.
PHP es Case Sensitive
Comentarios // o /* */
Lenguaje débilmente tipado.
No existe una sección de declaración de variables.
Las variables se declaran, anteponiendo un signo $ (pesos) a su nombre.
<?php $name; $i = 100; $hello = 'Hello World!';?>
Define un conjunto de tipos básicos (integer , float , boolean , string , array , objects).

Es posible hacer casting entre tipos:

<?php
$num1 = 10.5;
$num2 = intval($num1);
?>

Los strings se pueden delimitar con comillas simples.

<?php
$hello = 'Hello';
$world = 'World'
$var1 = $hello.' '.$world;
?>
isset($var)
➢➢Indica si una variable está definida o no.

$a = 55;
isset($a) // true
isset($b) // false

is_null($var)
Indica si una variable tiene valor nulo o no.

$a = 55;
$b = null;
is_null($a) // false
is_null($b) // true
Arreglos
Estructura dinámica y heterogénea,➢ Asocia Valores y claves. Puede ser utilizado como una lista, una cola, una pila, una tabla asociativa, etc.

<?php
$arreglo = array();
$arreglo[] = 44;
$arreglo['Hello'] = 'World';
$arreglo[5] = array();
?>

<?php
//inicializado en la declaración
$arre = array(
44,
'hello' => 'world',
5 => array()
);
//append
$arre[] = 'Symfony';
$arre[5][] = 'PHP';
isset($arre[5]); //true
isset($arre['PHP']); //false
?>
Sintaxis, Variables y Operadores
Imprimir en la salida estándar “echo”

<?php
$hello = 'Hello World!';
echo $hello;
echo $hello.'PHP!';
?>

printf($formato, $args)
➢Imprime una cadena con formato, el número de argumentos puede variar.
➢El $formato contiene texto que será impreso, así como directivas de donde y como deben ser impresos los argumentos.
Sintaxis, Variables y Operadores (cont.)

<?php
$formato = 'El valor %d es un número y el valor %s una cadena';
$num = 55;
$CAD = 'Hola mundo';
printf($formato,$num,$CAD);
?>

Otros posibles formatos
➢ %u
➢ %f
➢ %d
Condicional - IF
if ( $condición )
//Bloque de código para condición es verdadera
else
//Bloque de código para cuando la condición es falsa

<?php if ($condición):?>
//Bloque condición verdadera
<?php elseif($condición2):?>
//Bloque condición 2 verdadera
<?php else:?>
//Bloque cuando las condiciones son falsas
<?php endif;?>
Estructuras de Control
Condicional – CASE

switch ($variable){
case 'val-1':
//bloque1
break;
case 'val-2':
//bloque2
break;
default:
//bloque por defecto
}
Bucle – WHILE

<?php
while ($condicion){
//Bloque
}
?>

o también...

<?php while ($condición):?>
//Sentencias
<?php endwhile;?>
Iterador – FOR

<?php
for ($inicio; $condicion; $porCadaVuelta){
//bloque
}
?>

o también...

<?php for ($inicio; $condicion; $porCadaVuelta):?>
<?php //bloque ?>
<?php endfor;?>
Estructuras de control
Iterador – FOREACH

<?php $unArreglo = array();?>

<?php foreach ($unArreglo as $element){
// bloque
}?>

<?php foreach ($unArreglo as $key=>$value){
// bloque
}?>

<?php foreach ($unArreglo as $key=>$value): ?>
<?php endforeach;?>
Iterador – FOREACH

<?php
$arreglo = array();
$arreglo[] = 44;
$arreglo['hello'] = 'World!';
$arreglo[5] = 'Chau!!';
foreach ($arreglo as $key=>$value) {
echo $key . ' ===>>> ' . $value;
}
;?>
function name ([[&]param[=default_value]]) {
//sentencias
return “anObject()”;
}

Ejemplo:

function hello($name = 'World!'){
return "Hello $name";
}
echo hello(); // Imprime: Hello World!
echo hello('Santiago'); //Imprime: Hello Santiago
Funciones
➢ Soporta la definición de clases y objetos
➢ Jerarquía de clases por medio de herencia simple
➢ Se utiliza la palabra “class” para la definición

class Nombre [ extends Superclase ]{
//Variables de Instancia
//Variables de clase
//Métodos
}
Programación Orientada a Objetos
Instancias, Constructores y Destructores

class ClaseBase {
function __construct() {
echo "Constructor de ClaseBase";
}
function __destruct() {
echo "Destructor de ClaseBase";
}
}

class SubClase extends ClaseBase {
function __construct() {
parent::__construct();
echo "Constructor de SubClase";
}
}

$obj1 = new ClaseBase();
$obj2 = new SubClase();
Variables de instancia y visibilidad

class Persona{
public $nombre = "Juan Martín";
protected $mascota;
private $dni;
}
class Estudiante extends Persona{
public $legajo;
function __construct($nombre, $mascota, $dni)
{
$this->nombre = $nombre;
// OK
$this->mascota = $mascota; //OK
$this->dni = $dni;
// ERROR
}
}
Links de Interes
Web Site de Symfony
www.symfony-project.org versiones 1.x
www.symfony.com version 2.0

Web Site de PHP
www.php.net

Web Site de MySql
www.mysql.com

Web Site para instalación de Lamp
www.howtoforge.com/ubuntu_lamp_for_newbies

Web Site de Netbeans
www.netbeans.org/
¿Consultas?
Gracias!
Programación Orientada a Objetos (POO)
Variables de instancia y visibilidad (Cont.)

class Estudiante{
public function getNombre(){
return $this->nombre;
}
protected function setNombre($nombre='Pedro'){
$this->nombre = $nombre;
}
private function setDni($dni){
$this->dni = $dni;
}
}
Miembros y métodos de clase

class Foo {
public static $my_static = 'foo';
const NAME = 'Symfony';
public function staticValue() {
return self::$my_static;}
}
class Bar extends Foo {
public function fooStatic() {
return parent::$my_static;
}
public static function aStaticMethod() {
return Foo::$my_static; }
}
echo Bar::aStaticMethod(); echo Foo::NAME;
Clases Abstractas

No se pueden crear instancias.
Pueden tener métodos abstractos y no abstractos
Si contienen al menos un método abstracto la clase debe ser abstracta
Todos los métodos abstractos deben ser definidos en las subclases con igual o menor visibilidad
abstract class ClaseAbstracta {
abstract protected function getValue();
abstract protected function prefixValue($prefix);
public function printOut() {
print $this->getValue() . "\n";}
}

class ClaseConcreta extends ClaseAbstracta {
/*
* Se debe implementar getValue()
* y prefixValue();
* Se puede usar printOut()
*/
}
Interfaces

Permiten definir un conjunto de métodos que deben ser implementados por toda clase que la implemente
Todos los métodos de la interface deben ser públicos
Una clase puede implementar cero, una o más interfaces (separadas por “,” coma)
interface encendible{
public function encender();
public function apagar();
}

class lampara implements encendible{
public function encender(){
echo 'Se hizo la luz...';
}
public function apagar(){
echo 'Estamos a oscuras...';
}
}
Exepciones
Una excepción es una situación que se produce en “run-time” y altera el flujo normal de ejecución de un programa.
Es necesario controlarlas para evitar la finalización inesperada de un programa.
Es posible también lanzar excepciones cuando detectamos alguna situación anormal en el programa
try {
//Código que puede generar una excepción
}
catch (MyException $e) {
//Código de manejo de una excepción de clase
MyException
//que es subclase de Exception
}
catch (Exception $e) {
//Código de manejo de una excepción general
}
try {
$anObject->setAProperty($aProperty);
$anObject->save();
} catch (Exception $e) {
echo 'Excepción atrapada: '. $e->getMessage(). "\n";
}
// Continua la ejecución acá
echo 'Hello World!';
Los diferentes requerimientos Web de un cliente a un servidor se realizan de manera “desconectada”.

Hay situaciones en las cuales se requiere mantener información entre los diferentes requerimientos del cliente “mientras navega el sitio por ejemplo”.

Pensar: “Carrito de compras”
Sesiones
Las sesiones permiten mantener en el servidor información entre los diferentes requerimientos de un cliente.
Cuando un cliente accede por primera se le otorga un “session_id”.
Comunmente se guarda en una cookie en el cliente o se agrega a las URL.
<?php
//Debe ir al comienzo de archivo en el que se quiere usar la sesión
session_start();
Existe un arreglo global que podemos usar en el script para guardar/obtener datos de la sesión.

$_SESSION

if(isset($_SESSION['user'])){
//El usuario ingreso al sistema
$user = $_SESSION['user'];
}
else
{
//Mostramos mensaje a invitados y el formulario para el login
}
Variables Globales
Existe un conjunto de variables que podemos usar
en los scripts para obtener diferentes conjuntos de
información. Ya vimos un ejemplo con $_SESSION
Algunos ejemplos:
GLOBALS: Referencia a todas las variables disponibles
$_SERVER: Información del servidor y el entorno de ejecución.
$_GET: variables HTTP GET
$_POST: variables HTTP POST
$_COOKIE: cookies HTTP
$_REQUEST: variables de petición HTTP
Include() e include_once()
Incluyen un archivo al script

Si el archivo no existe se eleva un mensaje de
alerta (warning) _once indica que si el archivo ya se incluyo no lo haga nuevamente

<?php
include('clases.php');
include('clases.php'); // Se incluye nuevamente
include_once('datos.php');
include_once('datos.php'); // No se incluye
include_once('noexiste.php'); //Warning
Incluir archivos
require() y require_once()
Si el archivo no existe la ejecución del script se
detiene (Error) _once indica que si el archivo ya se incluyó, no se haga nuevamente
<?php
require('clases.php');
require('clases.php'); // Se incluye nuevamente
require_once('datos.php'); // No se incluye
require_once('noexiste.php'); //Error
require_once('datos.php');
PHP incluye funciones para el acceso a diferentes motores de bases de datos MySQL, SQLServer, Sysbase, SQLite, etc.
Se deben habilitar las extensiones correspondientes en el archivo php.ini.
Cada motor tiene su propio conjunto de funciones:
mysql_connect()
mysql_select_db()
mssql_connect()
mssql_select_db()
Conexion con bases de datos
Es común utilizar extensiones que permitan la abstracción del motor de base de datos que estamos utilizando
Utilizar ODBC
Utilizar PEAR::DB

Conjunto de objetos que permiten la abstracción
del acceso de datos
Propel + Creole
Utilizado por Symfony!
Código desorganizado: Se mezcla lógica de
aplicación con la de presentación
<?php
$con = mysql_connect('localhost','user','pass');
$data = mysql_query('select * from persona', $con);
?>
<table>
<?php while($row = mysql_fetch_row($data)):?>
<tr>
<td><?php echo $row['nombre'];?></td>
</tr>
<?php endwhile;?>
</table>
Problemas de PHP crudo
Complejidad en la configuración de las aplicaciones
Podriamos utilizar numeros archivos con información de configuración

Complejidad en el mantenimiento
Un cambio en el modelo nos podría llevar a revisar numerosos archivos de código

Desarrollo lento
Nuevos participantes en el equipo de desarrollo utilizarían mucho tiempo en entender la lógica utilizada
Framework para el desarrollo de aplicaciones con PHP5

¿Que es un framework?
Estructura para desarrollar nuevas aplicaciones
sobre ella. Incluye librerias, clases, programas, documentación de ayuda.
Provee una estructura y una metodología de
trabajo que es totalmente extensible.
Es open source
Publicado bajo la licencia MTI

Es totalmente extensible
Miles de “bundles” agregan o modifican funcionalidad en el framework

Gran comunidad de usuarios
Extensa documentación
Manuales
Tutoriales guiados
Implementa el modelo MVC

Model: Capa que define la lógica de negocios

View: Determina como el usuario interactua con la aplicación.

Controller: Utiliza el modelo para obtener
los datos y la vista para representarlos.
¿Que es Symfony?
Symfony nos provee una forma de mantener código de la aplicación organizado de manera natural.

Una forma de llevar la configuración de manera organizada y centralizada.

Mantenimiento sencillo y rápido de la aplicación
Las “cosas” están ubicadas en lugares
“conocidos”.

Desarrollo ágil de las aplicaciones
Contamos con un conjunto de herramientas que
reutilizamos
Full transcript