2. 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
4. <?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..
5. ¿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.
9. <?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.
10. <?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
11. <?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.
14. <?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.
16. <?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.
18. <?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.
19. <?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
20. <?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.
21. <?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.
22. <?php 2011
• Aparece php5.4
• Mejora la sintaxis del lenguaje, se introducen
nuevas features como Traits y un servidor web
embebido.
24. Características destacables
• Interpretado
• Tipado automático
• Extensible
• Multiplataforma
• Formado por un gran catálogo de funciones, poco
a poco transformándose en Clases.
25. 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
26. 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
27. 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
28. PHP5.4
• Interfaz JSONserializable
• Servidor web integrado
• Class member access on instantiation
– {new Class}->metodo();
• Arrays como closures
39. 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é
41. 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.
45. 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.
48. 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.
50. 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.
52. 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.
53. 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..
55. 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.