bilbostack - php en el 2012
TRANSCRIPT
![Page 1: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/1.jpg)
<?php en el 2012
@asiermarques
![Page 2: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/2.jpg)
Asier @asiermarques
Programador en php desde 2002# Fundador de Simettric# Socio y director técnico en 4visionsmanager.com# Web Architect, Geek.
linkedin.com/in/asier
![Page 3: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/3.jpg)
Hechos
![Page 4: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/4.jpg)
<?php es
• Usado por el 77.8% de los sitios web existentes según W3Techs
• El sexto lenguaje con más proyectos en github
• El tercer lenguaje con más proyectos en sourceforge
• Usado en sitios de alto tráfico como wikipedia.org, facebook.com, baidu.com, vk.com, flickr.com, mail.ru, dailymotion.com..
![Page 5: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/5.jpg)
¿por qué <?php
• Es un lenguaje que te permite hacer scripts funcionales en poco tiempo.
• Está soportado por prácticamente el 100% de todos los proveedores de internet.
• Dispone de una comunidad INCREÍBLEMENTE grande.
• No sólo lo pueden usar programadores.
• No es un lenguaje para perfeccionistas, pero programadores perfeccionistas pueden usarlo.
![Page 6: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/6.jpg)
![Page 7: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/7.jpg)
![Page 8: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/8.jpg)
Programadores
![Page 9: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/9.jpg)
<?php programadores
Matt Mullenweg
Creó WordPress con php en el 2004
Actualmente dirige Automattic, empresa en la que además de wordpress.com, han salido proyectos como gravatar.com o akismet.com.
![Page 10: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/10.jpg)
<?php programadores
Fabien Potencier
Creador del framework symfony1 con php5 en el 2005
En el 2010 crea Symfony2, el proyecto php con más comunidad en github.
Es creador y mantiene otros proyectos open source relevantes como Swiftmailer o Doctrine.
Actualmente CEO de Sensio Labs
![Page 11: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/11.jpg)
<?php programadores
Derek Sivers
Sin ser programador (era músico) creó cdbaby.com en 1998, con php. Se convirtió en el mayor vendedor de música de internet con 100 millones de dólares en ventas con más de 150.000 artistas.
En 2005 intentó reescribir cdbaby en RubyOnRails, pero cambió de idea y lo reescribió en php sin frameworks en dos meses.
![Page 12: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/12.jpg)
<?php programadores
![Page 13: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/13.jpg)
Historia
![Page 14: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/14.jpg)
<?php 1994
• Se estrena Stargate y Pulp Fiction
• Rasmus Lerdorf (@rasmus), crea un toolkit CGI en C llamado “Personal Home Page Tools” para hacer su currículum online.
![Page 15: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/15.jpg)
Personal Home Page Tools
![Page 16: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/16.jpg)
<?php 1995-1996
• Rasmus Lerdorf, reescribe en dos ocasiones completamente PHPTools y crea lo que se conoce como PHP/FI.
• En 1998 había 60.000 dominios utilizando php, el 1% de todo internet.
![Page 17: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/17.jpg)
PHP/FI
![Page 18: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/18.jpg)
<?php 1998
• Andi Gutmans y Zeev Suraski se unen al proyecto de Rasmus Lerdorf, creando un lenguaje independiente y no sólo un Toolkit de librerías.
• PHP es conocido ahora como Hypertext Preprocessor y comenzaría con la versión 3
• PHP3 es extensible, por lo que miles de programadores se unen al proyecto aportando módulos de todo tipo
• El proyecto PHP/FI desaparece, PHP3 está instalado ya en el 10% de servidores de internet.
![Page 19: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/19.jpg)
<?php 2000
• Andi Gutmans y Zeev Suraski crean el motor Zend, que da vida a php4.
• PHP4 introduce algunas características importantes como una aproximación a la Orientación a Objetos.
• Aparecen canales donde conseguir extensiones y librerías como PECLy PEAR
![Page 20: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/20.jpg)
<?php 2004
• Aparece php5 con un potente y renovado motor Zend.
• La orientación a objetos es la característica y mejora principal de este lenguaje.
• Se consolidan motores de templates como Smarty, que permite eliminar el código spaguetti
• Se introduce Reflection.
![Page 21: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/21.jpg)
<?php 2008
• Aparece php5.3.
• Mejora el rendimiento e introduce características nuevas como los namespaces y los closures.
• Maduran y se establecen frameworks que hacen uso de patrones de diseño y buenas prácticas como Symfony, CakePHP o ZendFramework.
![Page 22: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/22.jpg)
<?php 2011
• Aparece php5.4
• Mejora la sintaxis del lenguaje, se introducen nuevas features como Traits y un servidor web embebido.
![Page 23: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/23.jpg)
El Lenguaje
![Page 24: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/24.jpg)
Características destacables
• Interpretado
• Tipado automático
• Extensible
• Multiplataforma
• Formado por un gran catálogo de funciones, poco a poco transformándose en Clases.
![Page 25: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/25.jpg)
POO en PHP
• Clases abstractas y métodos abstractos, estáticos
• Scopes finales, protected, private, public
• Interfaces
• No hay herencia múltiple, pero hay Traits (php5.4)
• Métodos mágicos
• Reflection
![Page 26: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/26.jpg)
Arrays
• array() o []
• Los arrays pueden contener elementos de todo tipo, strings, objetos, arrays, int..
• Sirven también para definir callbacks en métodos de clases– $array = array( “nombre de clave” o $instancia, “método” )– call_user_func($array); o $array() en php5.4
![Page 27: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/27.jpg)
PHP5.4
• Novedades en declaración de arrays, array dereferencing
• Traits
• Upload progress a través de variable de sessión PHP_SESSION_UPLOAD_PROGRESS
• Binary notation: 0b10110
![Page 28: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/28.jpg)
PHP5.4
• Interfaz JSONserializable
• Servidor web integrado
• Class member access on instantiation– {new Class}->metodo();
• Arrays como closures
![Page 29: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/29.jpg)
Arrays
![Page 30: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/30.jpg)
Arrays
![Page 31: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/31.jpg)
Métodos mágicos
![Page 32: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/32.jpg)
Traits
![Page 33: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/33.jpg)
Reflection
![Page 34: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/34.jpg)
Namespaces
![Page 35: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/35.jpg)
Closures
![Page 36: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/36.jpg)
Utilidades.
![Page 37: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/37.jpg)
i18n e i10n
• mb_string
• get_text
• intl– Clases Locale, Number_Format
• DateTime, DateTimezone
![Page 38: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/38.jpg)
Frameworks
• Symfony2 Framework– Symfony2 Components
• Zend Framework
• Kohana
• Microframeworks: Slim, Silex
![Page 39: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/39.jpg)
Symfony2 Components: ClassLoader
• Simplifica al máximo el autoload de clases en php.
• Sigue la convención PSR-0 y Zend para cargar los archivos.
• Permite cachear en APC y hacer nuestros propios sistemas de caché
![Page 40: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/40.jpg)
ClassLoader
![Page 41: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/41.jpg)
Symfony2 Components: Routing
• Nos permite tener un potente sistema de routing en nuestra aplicación.
• Permite volcar las reglas al .htaccess de forma automática.
• Permite manejar rutas con caracteres unicode.
![Page 42: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/42.jpg)
Routing
![Page 43: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/43.jpg)
Symfony2 Components: Console
• Permite crear aplicaciones de línea de comandos
• Cada comando es una clase
• Los menús se generan automáticamente
![Page 44: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/44.jpg)
+componentes de Symfony2
• Validator
• HttpFoundation
• Event Dispatcher
• Finder
![Page 45: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/45.jpg)
Composer
• Gestión de dependencias de paquetes para php
• Dispone de un servicio online de provisión de paquetes (packagist.org), pero también se integra con git, svn y con accesos ftp.
![Page 46: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/46.jpg)
Composer
![Page 47: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/47.jpg)
Composer
![Page 48: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/48.jpg)
PHPUnit
• La herramienta más utilizada en php para realizar tests unitarios.
• Integrado en la mayoría de IDEs y servidores de integración continua.
![Page 49: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/49.jpg)
PHPUnit
![Page 50: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/50.jpg)
Twig
• Motor de templates inspirada en el sistema de templates del framework para Python django.
• El perfecto sustituto de Smarty.
• Dispone de extensión C para dotarle de mayor rendimiento.
• Es simple, extensible, elegante y potente.
![Page 51: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/51.jpg)
Twig
![Page 52: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/52.jpg)
Monolog
• Potente sistema de log para PHP
• Dispone de varios handlers para escribir los logs al disco, enviarlos por email, enviarlos a firebug mediante headers en los http response, al syslog, a ChromePHP
• Nos da la opción de crear nuestros propios handlers.
![Page 53: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/53.jpg)
SwiftMailer
• La mejor opción para enviar emails desde PHP
• Permite autenticación SMTP, envío de adjuntos, correos como HTML..
• Nos da la opción de crear nuevos sistemas de envío, por defecto nos permite enviar por SMTP, con la función mail de php, atacar a la MTA de sendmail..
![Page 54: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/54.jpg)
SwiftMailer
![Page 55: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/55.jpg)
Doctrine2
• El ORM y DBAL más serio para PHP
• Se basa en Entidades
• Permite trabajar con los motores de datos soportados por PDO y MongoDB
• Es extensible y personalizable para otros motores de base de datos.
• Trae una herramienta de consola que permite crear el esquema de la base de datos desde las Entidades y operar directamente con la base de datos e incluso hacer ingeniería inversa de un esquema existente.
![Page 56: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/56.jpg)
Doctrine2
![Page 57: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/57.jpg)
APC
• Opcode cache para PHP. Optimiza y cache el código intermedio en memoria.
• Permite también almacenar de forma local información en caché.
![Page 58: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/58.jpg)
Entre otras muchas..
![Page 59: BilboStack - Php en el 2012](https://reader033.vdocuments.mx/reader033/viewer/2022052904/557ae36fd8b42a63778b51d4/html5/thumbnails/59.jpg)
Gracias, ¿preguntas?
Asier Marqués @asiermarques