PHP 5.3 masterclassDesde el CGI al OOP                      Ángel Luis Quesada Nieto                              CEO at K...
PHP 5.3 masterclass                                    Indice                           -   Sobre el que habla            ...
PHP 5.3 masterclass                                    Ahhmm!!!                           Hoy competimos contra #comunicat...
PHP 5.3 masterclass                           Sobre el que habla                           AKA:                           ...
PHP 5.3 masterclass                              PHP en el tiempo                           En 1994 Rasmus Lerdorf decidió...
PHP 5.3 masterclass                                 PHP en el tiempo        No es hasta PHP 3.0 que se deciden tomar las c...
PHP 5.3 masterclass                                     PHP en el tiempo                     En el 2000 llegó PHP 4.0     ...
PHP 5.3 masterclass                                     PHP en el tiempo                En el 2004 llegó la gran chapuza P...
PHP 5.3 masterclass                                  PHP en el tiempo               A finales del 2009 llega el presente P...
PHP 5.3 masterclass                           PHP en el tiempoÁngel Luis Quesada NietoCEO at Kubide.es
PHP 5.3 masterclass                                  PHP en el tiempo                           El futuro PHP 6 ¿?        ...
PHP 5.3 masterclass                                  Os acordáis?!!                           Hoy competimos contra #comun...
PHP 5.3 masterclass                           PHP del CGI al OOP                               Pasamos del date()         ...
PHP 5.3 masterclass                                 PHP del CGI al OOP                                        … al DateTim...
PHP 5.3 masterclass                                     PHP del CGI al OOP                  Lo primero es:                ...
PHP 5.3 masterclass                           PHP del CGI al OOPÁngel Luis Quesada NietoCEO at Kubide.es
PHP 5.3 masterclass                              PHP del CGI al OOP                                       index.php       ...
PHP 5.3 masterclass                             PHP del CGI al OOP                index.php                •   Zona Segura...
PHP 5.3 masterclass                             PHP del CGI al OOP                           Bootstrap (la correa de arran...
PHP 5.3 masterclass                                PHP del CGI al OOP                              __autoload (bye, bye re...
PHP 5.3 masterclass                             PHP del CGI al OOP               Autoload               •    Nos olvidamos...
PHP 5.3 masterclass                           PHP del CGI al OOPÁngel Luis Quesada NietoCEO at Kubide.es
PHP 5.3 masterclass                            PHP del CGI al OOP                               Limpiando datos - satinize...
PHP 5.3 masterclass                                   PHP del CGI al OOP                                       Pseudo poli...
PHP 5.3 masterclass                             PHP del CGI al OOP             PseudoPolimorfismo             •   Un métod...
PHP 5.3 masterclass                            PHP del CGI al OOP               Sesiones en Bases de datos               •...
PHP 5.3 masterclass                                PHP del CGI al OOP                                       Pseudo polimor...
PHP 5.3 masterclass                            PHP del CGI al OOP               Recordar que no hay mejor manual que http:...
PHP 5.3 masterclass                              PHP del CGI al OOP                            Y no os olvidéis de los try...
PHP 5.3 masterclass                               Ya se acaba!!!                           Developers! Lo conseguimos?    ...
Título de la Conferencia   MUCHAS GRACIAS!!!!       Ángel Luis Quesada           CEO at KubideTwitter: @gelitoTwitter: @ku...
Upcoming SlideShare
Loading in...5
×

Masterclass adwe madrid

553

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
553
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Masterclass adwe madrid

  1. 1. PHP 5.3 masterclassDesde el CGI al OOP Ángel Luis Quesada Nieto CEO at Kubide.es
  2. 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 NietoCEO at Kubide.es
  3. 3. PHP 5.3 masterclass Ahhmm!!! Hoy competimos contra #comunicat Developers! Consigamos ese TT! #adwe_mad @peppersanblai te queremos!Ángel Luis Quesada NietoCEO at Kubide.es
  4. 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 NietoCEO at Kubide.es
  5. 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 NietoCEO at Kubide.es
  6. 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 NietoCEO at Kubide.es
  7. 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 NietoCEO at Kubide.es
  8. 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 NietoCEO at Kubide.es
  9. 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 NietoCEO at Kubide.es
  10. 10. PHP 5.3 masterclass PHP en el tiempoÁngel Luis Quesada NietoCEO at Kubide.es
  11. 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 NietoCEO at Kubide.es
  12. 12. PHP 5.3 masterclass Os acordáis?!! Hoy competimos contra #comunicat Developers! Consigamos ese TT #adwe_mad @gersonbeltran te queremos!Ángel Luis Quesada NietoCEO at Kubide.es
  13. 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 NietoCEO at Kubide.es
  14. 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 NietoCEO at Kubide.es
  15. 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! • Im 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 NietoCEO at Kubide.es
  16. 16. PHP 5.3 masterclass PHP del CGI al OOPÁngel Luis Quesada NietoCEO at Kubide.es
  17. 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 NietoCEO at Kubide.es
  18. 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 NietoCEO at Kubide.es
  19. 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 NietoCEO at Kubide.es } }
  20. 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. 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 NietoCEO at Kubide.es
  22. 22. PHP 5.3 masterclass PHP del CGI al OOPÁngel Luis Quesada NietoCEO at Kubide.es
  23. 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 NietoCEO at Kubide.es
  24. 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. 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 NietoCEO at Kubide.es
  26. 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 NietoCEO at Kubide.es
  27. 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. 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 NietoCEO at Kubide.es
  29. 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 NietoCEO at Kubide.es
  30. 30. PHP 5.3 masterclass Ya se acaba!!! Developers! Lo conseguimos? #adwe_madÁngel Luis Quesada NietoCEO at Kubide.es
  31. 31. Título de la Conferencia MUCHAS GRACIAS!!!! Ángel Luis Quesada CEO at KubideTwitter: @gelitoTwitter: @kubide_esPersonal Site: www.alquesada.comCompany: www.kubide.esMail: hola@kubide.es
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×