SlideShare ist ein Scribd-Unternehmen logo
1 von 31
Downloaden Sie, um offline zu lesen
PHP 5.3 masterclass
Desde el CGI al OOP




                      Ángel Luis Quesada Nieto
                              CEO at Kubide.es
PHP 5.3 masterclass




                                    Indice
                           -   Sobre el que habla
                           -   PHP en el tiempo
                           -   Del CGI al OOP
                           -   Unos pequeños trucos
                           -   Enlaces y preguntas
                           -   Cervecitas networking




Ángel Luis Quesada Nieto
CEO at Kubide.es
PHP 5.3 masterclass




                                    Ahhmm!!!
                           Hoy competimos contra #comunicat
                           Developers! Consigamos ese TT!
                                   #adwe_mad

                                       @peppersanblai te queremos!




Ángel Luis Quesada Nieto
CEO at Kubide.es
PHP 5.3 masterclass




                           Sobre el que habla
                           AKA:
                           •       Ángel Luis Quesada Nieto
                           •       gelito
                           •       alquesada

                           Mi proyecto actual:
                           •       Kubide
                               •    Advanced web Development
                               •    Developer Angels



Ángel Luis Quesada Nieto
CEO at Kubide.es
PHP 5.3 masterclass




                              PHP en el tiempo

                           En 1994 Rasmus Lerdorf decidió
                           poner en su web la fecha actual*.

                           Aparece PHP.
                              Personal Home Page Tools

                             <htm><body>
                                Today is:
                                <?php echo date(); ?>
                             </body></html>

Ángel Luis Quesada Nieto
CEO at Kubide.es
PHP 5.3 masterclass




                                 PHP en el tiempo
        No es hasta PHP 3.0 que se deciden tomar las cosas en serio.
        •     Aparece en 1998
        •     Se reescribe por completo el parser (y después todo el código).
        •     Se crea Zend Technologies.
        •     Empieza a aposentarse como alternativa web.
        •     Se le cambia al nombre actual:
            •  Php Hipertext Pre-procesor




Ángel Luis Quesada Nieto
CEO at Kubide.es
PHP 5.3 masterclass




                                     PHP en el tiempo
                     En el 2000 llegó PHP 4.0
                     •     Aparece la versión reescrita completamente
                     •     Incorpora ya el motor Zend.
                     •     Sin ser los dueños, Zend Technologies, se destaca
                     •     Aparece The PHP Group.
                     •     Se adentra en la OOP
                     •     Se hace completamente con el mercado web
                           •   Posiblemente por su flexibilidad y facilidad de uso
                             •  Esto nos lleva al “caos del PHP”
                           •   Posiblemente por la falta de competencia real
                             •  ASP
                             •  JAVA
                             •  Ruby (RoR surge en 2004)
                             •  Perl
Ángel Luis Quesada Nieto
CEO at Kubide.es
PHP 5.3 masterclass




                                     PHP en el tiempo
                En el 2004 llegó la gran chapuza PHP 5.0
                •       Deciden cambiar de mentalidad y apostar en serio por OOP
                    •    PseudoPolimorfiso
                    •    PseudoThreads
                    •    Autoload y Magic methods
                    •    Manejo de excepciones
                •       La aceptación en la web es escasa o nula.
                    •    Crea rechazo entre developers y Sysadmins
                    •    El nivel de Bugs es brutal
                    •    En 2006 era difícil encontrar un hosting con PHP 5.0
                •       Y la competencia aparece fuerte.
                    •    Aparecen los frameworks para otros lenguajes
                    •    En PHP el cacao es tan grande que tardan más en aparecer

Ángel Luis Quesada Nieto
CEO at Kubide.es
PHP 5.3 masterclass




                                  PHP en el tiempo
               A finales del 2009 llega el presente PHP 5.3
               •     Mas de 550 bugs solventados desde 5.0 hasta 5.3
                     •   Sobretodo en el ambito de la seguridad y la estabilidad
               •     Los hostings no tardan ni unos meses en incorporar PHP 5.3
               •     Empiezan a incorporar buenas funcionalidades OOP
                   •   Namespacing
                   •   Clase DateTime (por fin!)
                   •   Phar (JAR)
                   •   ...
                   •   Y … ejem... goto
               •     Todavía queda mucho por delante, pero ya va siendo OOP


Ángel Luis Quesada Nieto
CEO at Kubide.es
PHP 5.3 masterclass




                           PHP en el tiempo




Ángel Luis Quesada Nieto
CEO at Kubide.es
PHP 5.3 masterclass




                                  PHP en el tiempo
                           El futuro PHP 6 ¿?
                           •   PHP 5.3 + UNICODE
                           •   Limpieza y reestructuración.
                           •   Enfoque eminentemente OOP

                           Lo veremos? Lo dudo … PHP 7 ¿?




Ángel Luis Quesada Nieto
CEO at Kubide.es
PHP 5.3 masterclass




                                  Os acordáis?!!
                           Hoy competimos contra #comunicat
                           Developers! Consigamos ese TT
                                   #adwe_mad

                                       @gersonbeltran te queremos!




Ángel Luis Quesada Nieto
CEO at Kubide.es
PHP 5.3 masterclass




                           PHP del CGI al OOP
                               Pasamos del date()


                           <htm><body>
                              Today is:
                              <?php echo date(); ?>
                           </body></html>




Ángel Luis Quesada Nieto
CEO at Kubide.es
PHP 5.3 masterclass




                                 PHP del CGI al OOP
                                        … al DateTime
                           <?php
                           try {
                               $date = new DateTime('2000-01-01');
                           } catch (Exception $e) {
                               echo $e->getMessage();
                               exit(1);
                           }

                           print $date->format('Y-m-d');
                           ?>
Ángel Luis Quesada Nieto
CEO at Kubide.es
PHP 5.3 masterclass




                                     PHP del CGI al OOP
                  Lo primero es:
                  •   Pensar OOP, “pensar en Java”
                    •  No hay funciones sueltas.
                    •  No hay defines sueltos
                    •  Las clases se encapsulan (y se usan los namespaces)
                    •  Gestión de errores try {} catch(e) {}
                  •   Y por su puesto, no olvidar los patrones de diseño!
                    •  I'm a GoF fanboy
                   •       Patron Façade
                       •    Un único archivo de entrada (index.php)
                   •       Patron MVC
                       •    Separamos los Modelos (el vehículo – el usuario)
                       •    De la Vista (la carretera – el html)
                       •    Y lo gestionamos con el Controlador (las reglas de tráfico)
Ángel Luis Quesada Nieto
CEO at Kubide.es
PHP 5.3 masterclass




                           PHP del CGI al OOP




Ángel Luis Quesada Nieto
CEO at Kubide.es
PHP 5.3 masterclass




                              PHP del CGI al OOP
                                       index.php

                       <?php
                       require_once ZonaSegura. "Bootstrap.php";
                       Bootstrap::main();

                       $con = new Controller();
                       $con->main();
                       print $con->toHTML();
                       ?>



Ángel Luis Quesada Nieto
CEO at Kubide.es
PHP 5.3 masterclass




                             PHP del CGI al OOP
                index.php
                •   Zona Segura
                  •  No accesible desde el DocumentRoot
                  •  Las clases nunca deberían ser accesibles.
                •   Un solo require
                  •  Cargamos el Bootstrap (antiguamente la conf.php)
                  •  Cargamos el autoload
                •   Cargamos y ejecutamos el main del controller principal
                  •  Recordar, “piensa en Java”
                •   Un solo print*
                  •  Aquí Java nos gana.
                  •  No es obligatorio, para optimizar se pueden usar varios
Ángel Luis Quesada Nieto
CEO at Kubide.es
PHP 5.3 masterclass




                             PHP del CGI al OOP
                           Bootstrap (la correa de arranque)
                           class PWT_Bootstrap {
                             /** @staticvar bool Static private var charge of singleton pattern
                              * @access private
                              * @var bool
                              */
                             protected static $singleton = false;
                             public static final function main()
                             {
                                if (self::$singleton)
                                  return TRUE;
                                try {
                                  self::$singleton = true
                                  self::setupProjectConf(); self::setupAutoload();
                                  self::setupEnvironment(); self::setupDatabase();
                                  self::setupLanguageEnvironment(); self::setupView();
                                } catch (Exception $e) {
                                  PWT_Notice::catchException($e);
                                }
Ángel Luis Quesada Nieto
CEO at Kubide.es             }
                           }
PHP 5.3 masterclass




                                PHP del CGI al OOP
                              __autoload (bye, bye requires)
                           private final static function setupAutoload()
                           {
                             $includePath = ROOT . DIRECTORY_SEPARATOR . PATH_SEPARATOR;
                             $includePath .= get_include_path();
                             set_include_path($includePath); // Add the directories in path
                             spl_autoload_register("self::_autoload", true); // Registry the _autoload()
                           }
                           private static function _autoload($classname)
                           {
                             $zend = preg_replace ("/_/",DIRECTORY_SEPARATOR,$classname).".php";
                             if ($fh = @fopen($zend, "r", 1)){
                                fclose($fh); require_once($zend); return;
                             }
                             try {
                                throw new PWT_Exception(104, $classname);
                             } catch (PWT_Exception $e) {
                                PWT_Notice::catchException($e);
Ángel Luis Quesada Nieto     }
CEO at Kubide.es           }
PHP 5.3 masterclass




                             PHP del CGI al OOP
               Autoload
               •    Nos olvidamos de requires e includes
               •    Las funciones autoload no devuelven ningún valor
               •    Se pueden añadir tantas funciones como sean necesarias
                 •   Solo podemos sobreescribir una vez la función __autoload
                 •   Deben insertarse con spl_autoload_register
               •
                    Existen varias funciones spl_autololad* de ayuda
                   •
                     spl_ autoload_ call
                   •
                     spl_ autoload_ extensions
                   •
                     spl_ autoload_ functions
                   •
                     spl_ autoload_ register
                   •
                     spl_ autoload_ unregister
Ángel Luis Quesada Nieto
CEO at Kubide.es
PHP 5.3 masterclass




                           PHP del CGI al OOP




Ángel Luis Quesada Nieto
CEO at Kubide.es
PHP 5.3 masterclass




                            PHP del CGI al OOP
                               Limpiando datos - satinize
     // PHP 5.2
     //Validar URL
     ereg('^[a-zA-Z]+://([.]?[a-zA-Z0-9_/-])*([/?|&|=|;]?[a-zA-Z0-9_/-/%])*$',
     $url,$res))
     // Satinizar URL
     filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_SCHEME_REQUIRED));

     //Validar Mail
     ereg('(^[0-9a-zA-Z]+(.[0-9a-zA-Z]+)*)@([0-9a-zA-Z]+(.[0-9a-zA-Z]+)*.[0-9a-zA-Z]{2,3})$',
     $mail,$res)
     //Satinizar Mail
     filter_var($mail, FILTER_VALIDATE_EMAIL)




Ángel Luis Quesada Nieto
CEO at Kubide.es
PHP 5.3 masterclass




                                   PHP del CGI al OOP
                                       Pseudo polimorfismo
                           class poli
                           {
                             public function suma()
                             {
                                $ret = 0;
                                switch(func_num_args())
                                {
                                  case 1 :
                                     $ret = func_get_arg(1);
                                     break;
                                  case 2 :
                                     $ret = $this->suma2(func_get_arg(1),func_get_arg(2));
                                     break;
                                  default :
                                     foreach(func_get_arg() as $a) $ret+= is_numeric($a)?$a:0;
                                     $ret = func_get_arg(1);
                                     Break;
                                  }
Ángel Luis Quesada Nieto
                                return $ret;
CEO at Kubide.es
                             }
                           }
PHP 5.3 masterclass




                             PHP del CGI al OOP
             PseudoPolimorfismo

             •   Un método recoge las variables
             •   Con func_num_args() sabe cuantas variables ha recibido
             •   En función del numero de args decide a que método reenviar
             •   Puedes acceder a todas las variables con func_get_args()
             •   O solo a una con func_get_arg($i)




Ángel Luis Quesada Nieto
CEO at Kubide.es
PHP 5.3 masterclass




                            PHP del CGI al OOP
               Sesiones en Bases de datos
               •   Vale, esto no es de PHP5.3, pero seguro que no lo usáis.
               •   Existe la función session_set_save_handler
               •   Esta función recibe 6 argumentos
                 •  $open → función similar al constructor
                 •  $close → función al destructor
                 •  $read → que sucede cuando se van a leer datos de sesión
                 •  $write → que sucede cuando se van a escribir datos
                 •  $destroy → que sucede con session_destroy()
                 •  $gc → recolector de basura
                    • Normalmente tiene probabilidad 1/100
                       –session.gc_probability
                       –session.gc_divisor
Ángel Luis Quesada Nieto
CEO at Kubide.es
PHP 5.3 masterclass




                                PHP del CGI al OOP
                                       Pseudo polimorfismo
                           static function main() {
                             $class = get_called_class();

                             session_module_name('user');
                             session_set_save_handler(
                                array($class, 'open'),
                                array($class, 'close'),
                                array($class, 'read'),
                                array($class, 'write'),
                                array($class, 'destroy'),
                                array($class, 'gc')
                             );
                           }
                           static   function   open($save_path, $session_name, $persist = null)
                           static   function   close()
                           static   function   read($key)
                           static   function   write($key, $oval)
Ángel Luis Quesada Nieto   static   function   destroy($key)
CEO at Kubide.es           static   function   gc($maxlifetime)
PHP 5.3 masterclass




                            PHP del CGI al OOP
               Recordar que no hay mejor manual que http://php.net
               Otras cositas que deberíais conocer
               •    Magic Methods
                 •   __construct / __destruct / __call / __callStatic
                 •   __get / __set / __isset / __unset /
                 •   __sleep / __wakeup
                 •   __toString
               •
                    SPL classes
               •
                    DirectoryIterator
               •
                    Phar (JAR para PHP)
               •
                    Tricondicional simplificado
                   •
                     $a = $b ? $b : $c; => $a = $b? : $c;
               •
                    Y otra cosa más
Ángel Luis Quesada Nieto
CEO at Kubide.es
PHP 5.3 masterclass




                              PHP del CGI al OOP
                            Y no os olvidéis de los try catch!
                       try {
                         if (algo falla)
                           throw new PWT_Exception(104, $classname);
                         } catch (PWT_Exception $e) {
                           PWT_Notice::catchException($e);
                         }
                       }




Ángel Luis Quesada Nieto
CEO at Kubide.es
PHP 5.3 masterclass




                               Ya se acaba!!!

                           Developers! Lo conseguimos?
                                 #adwe_mad




Ángel Luis Quesada Nieto
CEO at Kubide.es
Título de la Conferencia




   MUCHAS GRACIAS!!!!

       Ángel Luis Quesada
           CEO at Kubide

Twitter: @gelito
Twitter: @kubide_es
Personal Site: www.alquesada.com
Company: www.kubide.es
Mail: hola@kubide.es

Weitere ähnliche Inhalte

Ähnlich wie Masterclass adwe madrid

BilboStack - Php en el 2012
BilboStack - Php en el 2012BilboStack - Php en el 2012
BilboStack - Php en el 2012Asier Marqués
 
Masterclass ADWE Madrid
Masterclass ADWE MadridMasterclass ADWE Madrid
Masterclass ADWE MadridKubide
 
El futuro de PHP y Drupal
El futuro de PHP y DrupalEl futuro de PHP y Drupal
El futuro de PHP y DrupalCristian Mamani
 
Webinar - Radiografía actual del lenguaje PHP
Webinar - Radiografía actual del lenguaje PHPWebinar - Radiografía actual del lenguaje PHP
Webinar - Radiografía actual del lenguaje PHPArsys
 
Introducción a los Frameworks PHP
Introducción a los Frameworks PHP  Introducción a los Frameworks PHP
Introducción a los Frameworks PHP Aprende PHP
 
Swift sin hype y su importancia en el 2017
 Swift sin hype y su importancia en el 2017  Swift sin hype y su importancia en el 2017
Swift sin hype y su importancia en el 2017 Software Guru
 
.NET Core 1.0 y ASP.NET Core 1.0
.NET Core 1.0 y ASP.NET Core 1.0.NET Core 1.0 y ASP.NET Core 1.0
.NET Core 1.0 y ASP.NET Core 1.0Luis Ruiz Pavón
 
Python y la POO, en una clase, UNNe-Corrientes
Python y la POO, en una clase, UNNe-CorrientesPython y la POO, en una clase, UNNe-Corrientes
Python y la POO, en una clase, UNNe-Corrientesalexis ibarra
 
Symfony2 Introducción
Symfony2 IntroducciónSymfony2 Introducción
Symfony2 Introducciónstrate
 
Desarrollando con PHP en Windows
Desarrollando con PHP en WindowsDesarrollando con PHP en Windows
Desarrollando con PHP en WindowsAntonio Ognio
 
Mariano Iglesias: Lithium - Un framework que pega como piña
Mariano Iglesias: Lithium - Un framework que pega como piñaMariano Iglesias: Lithium - Un framework que pega como piña
Mariano Iglesias: Lithium - Un framework que pega como piñaGrupo PHP Argentina
 
Patrones de diseño y Orientación a Objetos en PHP5 - v0.2.9
Patrones de diseño y Orientación a Objetos en PHP5 - v0.2.9Patrones de diseño y Orientación a Objetos en PHP5 - v0.2.9
Patrones de diseño y Orientación a Objetos en PHP5 - v0.2.9Leonardo J. Caballero G.
 
Programacion iv sesion6 php
Programacion iv sesion6 phpProgramacion iv sesion6 php
Programacion iv sesion6 phpRoberto Garcia
 
WordPress para programadores
WordPress para programadoresWordPress para programadores
WordPress para programadoreswpargentina
 

Ähnlich wie Masterclass adwe madrid (20)

BilboStack - Php en el 2012
BilboStack - Php en el 2012BilboStack - Php en el 2012
BilboStack - Php en el 2012
 
Masterclass ADWE Madrid
Masterclass ADWE MadridMasterclass ADWE Madrid
Masterclass ADWE Madrid
 
El futuro de PHP y Drupal
El futuro de PHP y DrupalEl futuro de PHP y Drupal
El futuro de PHP y Drupal
 
Curso Php
Curso PhpCurso Php
Curso Php
 
Webinar - Radiografía actual del lenguaje PHP
Webinar - Radiografía actual del lenguaje PHPWebinar - Radiografía actual del lenguaje PHP
Webinar - Radiografía actual del lenguaje PHP
 
Introducción a los Frameworks PHP
Introducción a los Frameworks PHP  Introducción a los Frameworks PHP
Introducción a los Frameworks PHP
 
Swift sin hype y su importancia en el 2017
 Swift sin hype y su importancia en el 2017  Swift sin hype y su importancia en el 2017
Swift sin hype y su importancia en el 2017
 
.NET Core 1.0 y ASP.NET Core 1.0
.NET Core 1.0 y ASP.NET Core 1.0.NET Core 1.0 y ASP.NET Core 1.0
.NET Core 1.0 y ASP.NET Core 1.0
 
Python y la POO, en una clase, UNNe-Corrientes
Python y la POO, en una clase, UNNe-CorrientesPython y la POO, en una clase, UNNe-Corrientes
Python y la POO, en una clase, UNNe-Corrientes
 
Symfony2 Introducción
Symfony2 IntroducciónSymfony2 Introducción
Symfony2 Introducción
 
Desarrollando con PHP en Windows
Desarrollando con PHP en WindowsDesarrollando con PHP en Windows
Desarrollando con PHP en Windows
 
Mariano Iglesias: Lithium - Un framework que pega como piña
Mariano Iglesias: Lithium - Un framework que pega como piñaMariano Iglesias: Lithium - Un framework que pega como piña
Mariano Iglesias: Lithium - Un framework que pega como piña
 
Curso php desde_cero
Curso php desde_ceroCurso php desde_cero
Curso php desde_cero
 
Lenguaje PHP
Lenguaje PHPLenguaje PHP
Lenguaje PHP
 
Patrones de diseño y Orientación a Objetos en PHP5 - v0.2.9
Patrones de diseño y Orientación a Objetos en PHP5 - v0.2.9Patrones de diseño y Orientación a Objetos en PHP5 - v0.2.9
Patrones de diseño y Orientación a Objetos en PHP5 - v0.2.9
 
PHP en el 2015
PHP en el 2015PHP en el 2015
PHP en el 2015
 
Plataforma joomla
Plataforma joomlaPlataforma joomla
Plataforma joomla
 
Programacion iv sesion6 php
Programacion iv sesion6 phpProgramacion iv sesion6 php
Programacion iv sesion6 php
 
WordPress para programadores
WordPress para programadoresWordPress para programadores
WordPress para programadores
 
BD_EQ6_INV_PHP
BD_EQ6_INV_PHPBD_EQ6_INV_PHP
BD_EQ6_INV_PHP
 

Mehr von tucamon

Diseño emocional
Diseño emocional Diseño emocional
Diseño emocional tucamon
 
Taller Wordpress Nivel II
Taller Wordpress Nivel IITaller Wordpress Nivel II
Taller Wordpress Nivel IItucamon
 
Analítica web 2.0
Analítica web 2.0Analítica web 2.0
Analítica web 2.0tucamon
 
Sesión 1. Taller Wordpress CAMON Madrid.
Sesión 1. Taller Wordpress CAMON Madrid.Sesión 1. Taller Wordpress CAMON Madrid.
Sesión 1. Taller Wordpress CAMON Madrid.tucamon
 
Haiku en CAMON Madrid
Haiku en CAMON MadridHaiku en CAMON Madrid
Haiku en CAMON Madridtucamon
 
Creación fácil de videojuegos
Creación fácil de videojuegosCreación fácil de videojuegos
Creación fácil de videojuegostucamon
 
Usos, abusos y disfrute de la cultura digital
Usos, abusos y disfrute de la cultura digitalUsos, abusos y disfrute de la cultura digital
Usos, abusos y disfrute de la cultura digitaltucamon
 
Muestra De Cortos Alicantinos
Muestra De Cortos AlicantinosMuestra De Cortos Alicantinos
Muestra De Cortos Alicantinostucamon
 
Programa General Festival de Cine de Elche
Programa General Festival de Cine de ElchePrograma General Festival de Cine de Elche
Programa General Festival de Cine de Elchetucamon
 

Mehr von tucamon (9)

Diseño emocional
Diseño emocional Diseño emocional
Diseño emocional
 
Taller Wordpress Nivel II
Taller Wordpress Nivel IITaller Wordpress Nivel II
Taller Wordpress Nivel II
 
Analítica web 2.0
Analítica web 2.0Analítica web 2.0
Analítica web 2.0
 
Sesión 1. Taller Wordpress CAMON Madrid.
Sesión 1. Taller Wordpress CAMON Madrid.Sesión 1. Taller Wordpress CAMON Madrid.
Sesión 1. Taller Wordpress CAMON Madrid.
 
Haiku en CAMON Madrid
Haiku en CAMON MadridHaiku en CAMON Madrid
Haiku en CAMON Madrid
 
Creación fácil de videojuegos
Creación fácil de videojuegosCreación fácil de videojuegos
Creación fácil de videojuegos
 
Usos, abusos y disfrute de la cultura digital
Usos, abusos y disfrute de la cultura digitalUsos, abusos y disfrute de la cultura digital
Usos, abusos y disfrute de la cultura digital
 
Muestra De Cortos Alicantinos
Muestra De Cortos AlicantinosMuestra De Cortos Alicantinos
Muestra De Cortos Alicantinos
 
Programa General Festival de Cine de Elche
Programa General Festival de Cine de ElchePrograma General Festival de Cine de Elche
Programa General Festival de Cine de Elche
 

Kürzlich hochgeladen

Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 

Kürzlich hochgeladen (10)

Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 

Masterclass adwe madrid

  • 1. PHP 5.3 masterclass Desde el CGI al OOP Ángel Luis Quesada Nieto CEO at Kubide.es
  • 2. PHP 5.3 masterclass Indice - Sobre el que habla - PHP en el tiempo - Del CGI al OOP - Unos pequeños trucos - Enlaces y preguntas - Cervecitas networking Ángel Luis Quesada Nieto CEO at Kubide.es
  • 3. PHP 5.3 masterclass Ahhmm!!! Hoy competimos contra #comunicat Developers! Consigamos ese TT! #adwe_mad @peppersanblai te queremos! Ángel Luis Quesada Nieto CEO at Kubide.es
  • 4. PHP 5.3 masterclass Sobre el que habla AKA: • Ángel Luis Quesada Nieto • gelito • alquesada Mi proyecto actual: • Kubide • Advanced web Development • Developer Angels Ángel Luis Quesada Nieto CEO at Kubide.es
  • 5. PHP 5.3 masterclass PHP en el tiempo En 1994 Rasmus Lerdorf decidió poner en su web la fecha actual*. Aparece PHP. Personal Home Page Tools <htm><body> Today is: <?php echo date(); ?> </body></html> Ángel Luis Quesada Nieto CEO at Kubide.es
  • 6. PHP 5.3 masterclass PHP en el tiempo No es hasta PHP 3.0 que se deciden tomar las cosas en serio. • Aparece en 1998 • Se reescribe por completo el parser (y después todo el código). • Se crea Zend Technologies. • Empieza a aposentarse como alternativa web. • Se le cambia al nombre actual: • Php Hipertext Pre-procesor Ángel Luis Quesada Nieto CEO at Kubide.es
  • 7. PHP 5.3 masterclass PHP en el tiempo En el 2000 llegó PHP 4.0 • Aparece la versión reescrita completamente • Incorpora ya el motor Zend. • Sin ser los dueños, Zend Technologies, se destaca • Aparece The PHP Group. • Se adentra en la OOP • Se hace completamente con el mercado web • Posiblemente por su flexibilidad y facilidad de uso • Esto nos lleva al “caos del PHP” • Posiblemente por la falta de competencia real • ASP • JAVA • Ruby (RoR surge en 2004) • Perl Ángel Luis Quesada Nieto CEO at Kubide.es
  • 8. PHP 5.3 masterclass PHP en el tiempo En el 2004 llegó la gran chapuza PHP 5.0 • Deciden cambiar de mentalidad y apostar en serio por OOP • PseudoPolimorfiso • PseudoThreads • Autoload y Magic methods • Manejo de excepciones • La aceptación en la web es escasa o nula. • Crea rechazo entre developers y Sysadmins • El nivel de Bugs es brutal • En 2006 era difícil encontrar un hosting con PHP 5.0 • Y la competencia aparece fuerte. • Aparecen los frameworks para otros lenguajes • En PHP el cacao es tan grande que tardan más en aparecer Ángel Luis Quesada Nieto CEO at Kubide.es
  • 9. PHP 5.3 masterclass PHP en el tiempo A finales del 2009 llega el presente PHP 5.3 • Mas de 550 bugs solventados desde 5.0 hasta 5.3 • Sobretodo en el ambito de la seguridad y la estabilidad • Los hostings no tardan ni unos meses en incorporar PHP 5.3 • Empiezan a incorporar buenas funcionalidades OOP • Namespacing • Clase DateTime (por fin!) • Phar (JAR) • ... • Y … ejem... goto • Todavía queda mucho por delante, pero ya va siendo OOP Ángel Luis Quesada Nieto CEO at Kubide.es
  • 10. PHP 5.3 masterclass PHP en el tiempo Ángel Luis Quesada Nieto CEO at Kubide.es
  • 11. PHP 5.3 masterclass PHP en el tiempo El futuro PHP 6 ¿? • PHP 5.3 + UNICODE • Limpieza y reestructuración. • Enfoque eminentemente OOP Lo veremos? Lo dudo … PHP 7 ¿? Ángel Luis Quesada Nieto CEO at Kubide.es
  • 12. PHP 5.3 masterclass Os acordáis?!! Hoy competimos contra #comunicat Developers! Consigamos ese TT #adwe_mad @gersonbeltran te queremos! Ángel Luis Quesada Nieto CEO at Kubide.es
  • 13. PHP 5.3 masterclass PHP del CGI al OOP Pasamos del date() <htm><body> Today is: <?php echo date(); ?> </body></html> Ángel Luis Quesada Nieto CEO at Kubide.es
  • 14. PHP 5.3 masterclass PHP del CGI al OOP … al DateTime <?php try { $date = new DateTime('2000-01-01'); } catch (Exception $e) { echo $e->getMessage(); exit(1); } print $date->format('Y-m-d'); ?> Ángel Luis Quesada Nieto CEO at Kubide.es
  • 15. PHP 5.3 masterclass PHP del CGI al OOP Lo primero es: • Pensar OOP, “pensar en Java” • No hay funciones sueltas. • No hay defines sueltos • Las clases se encapsulan (y se usan los namespaces) • Gestión de errores try {} catch(e) {} • Y por su puesto, no olvidar los patrones de diseño! • I'm a GoF fanboy • Patron Façade • Un único archivo de entrada (index.php) • Patron MVC • Separamos los Modelos (el vehículo – el usuario) • De la Vista (la carretera – el html) • Y lo gestionamos con el Controlador (las reglas de tráfico) Ángel Luis Quesada Nieto CEO at Kubide.es
  • 16. PHP 5.3 masterclass PHP del CGI al OOP Ángel Luis Quesada Nieto CEO at Kubide.es
  • 17. PHP 5.3 masterclass PHP del CGI al OOP index.php <?php require_once ZonaSegura. "Bootstrap.php"; Bootstrap::main(); $con = new Controller(); $con->main(); print $con->toHTML(); ?> Ángel Luis Quesada Nieto CEO at Kubide.es
  • 18. PHP 5.3 masterclass PHP del CGI al OOP index.php • Zona Segura • No accesible desde el DocumentRoot • Las clases nunca deberían ser accesibles. • Un solo require • Cargamos el Bootstrap (antiguamente la conf.php) • Cargamos el autoload • Cargamos y ejecutamos el main del controller principal • Recordar, “piensa en Java” • Un solo print* • Aquí Java nos gana. • No es obligatorio, para optimizar se pueden usar varios Ángel Luis Quesada Nieto CEO at Kubide.es
  • 19. PHP 5.3 masterclass PHP del CGI al OOP Bootstrap (la correa de arranque) class PWT_Bootstrap { /** @staticvar bool Static private var charge of singleton pattern * @access private * @var bool */ protected static $singleton = false; public static final function main() { if (self::$singleton) return TRUE; try { self::$singleton = true self::setupProjectConf(); self::setupAutoload(); self::setupEnvironment(); self::setupDatabase(); self::setupLanguageEnvironment(); self::setupView(); } catch (Exception $e) { PWT_Notice::catchException($e); } Ángel Luis Quesada Nieto CEO at Kubide.es } }
  • 20. PHP 5.3 masterclass PHP del CGI al OOP __autoload (bye, bye requires) private final static function setupAutoload() { $includePath = ROOT . DIRECTORY_SEPARATOR . PATH_SEPARATOR; $includePath .= get_include_path(); set_include_path($includePath); // Add the directories in path spl_autoload_register("self::_autoload", true); // Registry the _autoload() } private static function _autoload($classname) { $zend = preg_replace ("/_/",DIRECTORY_SEPARATOR,$classname).".php"; if ($fh = @fopen($zend, "r", 1)){ fclose($fh); require_once($zend); return; } try { throw new PWT_Exception(104, $classname); } catch (PWT_Exception $e) { PWT_Notice::catchException($e); Ángel Luis Quesada Nieto } CEO at Kubide.es }
  • 21. PHP 5.3 masterclass PHP del CGI al OOP Autoload • Nos olvidamos de requires e includes • Las funciones autoload no devuelven ningún valor • Se pueden añadir tantas funciones como sean necesarias • Solo podemos sobreescribir una vez la función __autoload • Deben insertarse con spl_autoload_register • Existen varias funciones spl_autololad* de ayuda • spl_ autoload_ call • spl_ autoload_ extensions • spl_ autoload_ functions • spl_ autoload_ register • spl_ autoload_ unregister Ángel Luis Quesada Nieto CEO at Kubide.es
  • 22. PHP 5.3 masterclass PHP del CGI al OOP Ángel Luis Quesada Nieto CEO at Kubide.es
  • 23. PHP 5.3 masterclass PHP del CGI al OOP Limpiando datos - satinize // PHP 5.2 //Validar URL ereg('^[a-zA-Z]+://([.]?[a-zA-Z0-9_/-])*([/?|&|=|;]?[a-zA-Z0-9_/-/%])*$', $url,$res)) // Satinizar URL filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_SCHEME_REQUIRED)); //Validar Mail ereg('(^[0-9a-zA-Z]+(.[0-9a-zA-Z]+)*)@([0-9a-zA-Z]+(.[0-9a-zA-Z]+)*.[0-9a-zA-Z]{2,3})$', $mail,$res) //Satinizar Mail filter_var($mail, FILTER_VALIDATE_EMAIL) Ángel Luis Quesada Nieto CEO at Kubide.es
  • 24. PHP 5.3 masterclass PHP del CGI al OOP Pseudo polimorfismo class poli { public function suma() { $ret = 0; switch(func_num_args()) { case 1 : $ret = func_get_arg(1); break; case 2 : $ret = $this->suma2(func_get_arg(1),func_get_arg(2)); break; default : foreach(func_get_arg() as $a) $ret+= is_numeric($a)?$a:0; $ret = func_get_arg(1); Break; } Ángel Luis Quesada Nieto return $ret; CEO at Kubide.es } }
  • 25. PHP 5.3 masterclass PHP del CGI al OOP PseudoPolimorfismo • Un método recoge las variables • Con func_num_args() sabe cuantas variables ha recibido • En función del numero de args decide a que método reenviar • Puedes acceder a todas las variables con func_get_args() • O solo a una con func_get_arg($i) Ángel Luis Quesada Nieto CEO at Kubide.es
  • 26. PHP 5.3 masterclass PHP del CGI al OOP Sesiones en Bases de datos • Vale, esto no es de PHP5.3, pero seguro que no lo usáis. • Existe la función session_set_save_handler • Esta función recibe 6 argumentos • $open → función similar al constructor • $close → función al destructor • $read → que sucede cuando se van a leer datos de sesión • $write → que sucede cuando se van a escribir datos • $destroy → que sucede con session_destroy() • $gc → recolector de basura • Normalmente tiene probabilidad 1/100 –session.gc_probability –session.gc_divisor Ángel Luis Quesada Nieto CEO at Kubide.es
  • 27. PHP 5.3 masterclass PHP del CGI al OOP Pseudo polimorfismo static function main() { $class = get_called_class(); session_module_name('user'); session_set_save_handler( array($class, 'open'), array($class, 'close'), array($class, 'read'), array($class, 'write'), array($class, 'destroy'), array($class, 'gc') ); } static function open($save_path, $session_name, $persist = null) static function close() static function read($key) static function write($key, $oval) Ángel Luis Quesada Nieto static function destroy($key) CEO at Kubide.es static function gc($maxlifetime)
  • 28. PHP 5.3 masterclass PHP del CGI al OOP Recordar que no hay mejor manual que http://php.net Otras cositas que deberíais conocer • Magic Methods • __construct / __destruct / __call / __callStatic • __get / __set / __isset / __unset / • __sleep / __wakeup • __toString • SPL classes • DirectoryIterator • Phar (JAR para PHP) • Tricondicional simplificado • $a = $b ? $b : $c; => $a = $b? : $c; • Y otra cosa más Ángel Luis Quesada Nieto CEO at Kubide.es
  • 29. PHP 5.3 masterclass PHP del CGI al OOP Y no os olvidéis de los try catch! try { if (algo falla) throw new PWT_Exception(104, $classname); } catch (PWT_Exception $e) { PWT_Notice::catchException($e); } } Ángel Luis Quesada Nieto CEO at Kubide.es
  • 30. PHP 5.3 masterclass Ya se acaba!!! Developers! Lo conseguimos? #adwe_mad Ángel Luis Quesada Nieto CEO at Kubide.es
  • 31. Título de la Conferencia MUCHAS GRACIAS!!!! Ángel Luis Quesada CEO at Kubide Twitter: @gelito Twitter: @kubide_es Personal Site: www.alquesada.com Company: www.kubide.es Mail: hola@kubide.es