• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Masterclass PHP 5.3
 

Masterclass PHP 5.3

on

  • 3,147 views

Presentación de Ángel Quesada (@gelito) sobre el nuevo PHP 5.3 para ADWE Madrid

Presentación de Ángel Quesada (@gelito) sobre el nuevo PHP 5.3 para ADWE Madrid

Statistics

Views

Total Views
3,147
Views on SlideShare
2,997
Embed Views
150

Actions

Likes
2
Downloads
31
Comments
1

7 Embeds 150

http://www.jsanchez.es 95
http://www.techgig.com 45
http://a0.twimg.com 4
http://paper.li 3
http://twitter.com 1
http://test.idoc.vn 1
https://twitter.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-NonCommercial LicenseCC Attribution-NonCommercial License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

11 of 1 previous next

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • Nuestra parte más 'developer' :-)
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Masterclass PHP 5.3 Masterclass PHP 5.3 Presentation Transcript

    • PHP 5.3 masterclassDesde 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 NietoCEO at Kubide.es
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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 + UNICODE • Limpieza y reestructuración. • Enfoque eminentemente OOP Lo veremos? Lo dudo … PHP 7 ¿?Ángel Luis Quesada NietoCEO 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 NietoCEO 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 NietoCEO 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 NietoCEO 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! • 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
    • 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 require_once ZonaSegura. "Bootstrap.php"; Bootstrap::main(); $con = new Controller(); $con->main(); print $con->toHTML(); ?>Ángel Luis Quesada NietoCEO 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 NietoCEO 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 NietoCEO 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 NietoCEO at Kubide.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 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
    • 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 NietoCEO 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 NietoCEO 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 NietoCEO 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 NietoCEO at Kubide.es
    • PHP 5.3 masterclass Ya se acaba!!! Developers! Lo conseguimos? #adwe_madÁngel Luis Quesada NietoCEO at Kubide.es
    • 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