-
1.
Primeras charlas del Grupo PHP Lithium Un framework que pega como piña Mariano Iglesias – Coding Ninja http://marianoiglesias.com.ar http://twitter.com/mgiglesias
-
2.
Algunas cosas sobre mi... <ul><li>C -> C++ -> Java -> PHP & Python
-
3.
Equipo CakePHP desde el 2007
-
4.
Equipo Lithium desde su fundación
-
5.
CRICAVA, la mejor compañía del mundo
-
6.
AMO Seinfeld (...y El Eternauta)
-
7.
ODIO Apple
-
8.
¡Voy a ser miramarense! Ya sé... se mueren de envidia </li></ul>
-
9.
¿WTF? <ul><li>¡¿¡¿¡¿¡¿¡¿ Otro framework ?!?!?!?!?! </li></ul>
-
10.
Usemos los anteojos de Mariano PHP4 y 5.3??
-
11.
¿Y entonces? <ul></MalaOnda> </ul>
-
12.
PHP 5.3 <ul>PHP 5.3 </ul>
-
13.
PHP 5.3 <ul><li>Performance, pero ¡posta posta!
-
14.
mysqlnd (= abran la cabeza: Mongo, Couch)
-
15.
Late static binding
-
16.
Namespaces
-
17.
Funciones lambda
-
18.
Closures (CALIENTE!)
-
19.
Autoloaders (5.1) </li><ul><li>Pero con namespaces... ¡qué placer! </li></ul></ul>
-
20.
El credo Lithium <ul><li>Creemos en la interoperabilidad </li><ul><li>PHP Standards Group (Symfony, Zend, Lithium) </li></ul><li>Creemos en la meritocracia </li><ul><li>A ver... Ni democracia, ni dictadura </li></ul><li>Creemos en la comunidad
-
21.
Creemos en lo RAD </li><ul><li>Iteration-Friday.net </li></ul></ul>
-
22.
El dream team <ul><li>Nate Abele - Ex-lead CakePHP – Lead
-
23.
Garrett Woodworth – Ex PM CakePHP – Project Manager
-
24.
Joël Perras – Ex Core CakePHP – Core Dev
-
25.
Wil Sinclair – Ex Lead Zend Framework – Core Dev
-
26.
John Anderson – Ex Doc Lead en CakePHP - Documentación Lead
-
27.
David Persson – Ex Core CakePHP - G11 Dev </li></ul>
-
28.
El dream team <ul><li>Sean Coates – Core PHP (Documentación)
-
29.
Ben Ramsey – Libros, PHP Architect, fundador PHPCommunity
-
30.
Jon Adams – Design Lead
-
31.
Matt Harris – Core dev
-
32.
Jeff Loiselle – Ex Core dev CakePHP - Core dev
-
33.
Marke Hallowell – Core Dev </li></ul>
-
34.
El dream team <ul><li>Alexander Morland – Ex promotor CakePHP - Core Dev y promotor de la comunidad
-
35.
Y yo... Focalizado en integraciones </li><ul><li>li3_doctrine
-
36.
li3_solar </li></ul></ul>
-
37.
¿Hay mujeres en la sala? <ul><li>Lithium, partner principal de PHP Women </li><ul><li>http://www.phpwomen.org/wordpress/partnerships-with-os-projects </li></ul></ul>
-
38.
Características de Lithium <ul>El mejor framework PHP 5.3 </ul>
-
39.
Características de Lithium <ul><li>Modularidad
-
40.
Interoperabilidad
-
41.
Namespaces y lambdas
-
42.
Extensibilidad
-
43.
Inyección de dependencia
-
44.
Filtros
-
45.
API sencilla y ordenada </li></ul>
-
46.
Modularidad <ul><li>¿Querés moduralidad? ¡Ahí te va! </li></ul>
-
47.
Modularidad <ul><li>Todo en lithium son módulos </li></ul>
-
48.
Interoperabilidad <ul><li>¿Hay una clase Zend que te rompe el bocho, y la querés usar? ¡Animate! </li></ul>
-
49.
Namespaces y lambdas <ul><li>Extendiendo helpers
-
50.
Validator::add()
-
51.
¡Incorporá lambdas en tu código! </li></ul><ul>PHP != Java </ul>
-
52.
Extensibilidad <ul><li>Plugins, Plugins y ¡más plugins!
-
53.
Que google ni google... Para los vagos (como yo), un repositorio central </li></ul>
-
54.
Extensibilidad
-
55.
Extensibilidad <ul><li>Y ya está... usá lo que quieras, cuando quieras, donde quieras...
-
56.
Si esto no es extensibilidad, ¿qué es? </li></ul>
-
57.
Extensibilidad <ul><li>¿Doctrine2 es el mejor ORM del universo? </li></ul>
-
58.
Inyección de dependencia <ul><li>Le decimos a una clase qué otras clases puede usar </li></ul>
-
59.
Filtros <ul>Bueno ahora prepárense... ¿Callbacks? Pfff... para los dinosaurios quizás </ul>
-
60.
Filtros <ul>Lambdas / Closures -> ¡Filtros! </ul>
-
61.
API sencilla y ordenada <ul><li>Nombres y namespaces lógicos y sencillos
-
62.
Menos de 3 parámetros por método
-
63.
Object::__construct($config) </li><ul><li>Object::$_autoConfig
-
64.
Object::$_config </li></ul><li>Chequeamos nuestro propio código </li><ul><li>lithium_qa </li></ul></ul>
-
65.
Lithium es mucho más <ul><li>Test Suite
-
66.
Línea de Comandos
-
67.
Data sources para BD basadas en documentos
-
68.
ORM basado en objetos
-
69.
g11n
-
70.
Autenticación
-
71.
Sesión y Cookies
-
72.
Autorización (1.0) </li></ul>
-
73.
Lithium es mucho más <ul><li>Validator
-
74.
Logging
-
75.
Debugger
-
76.
Parser
-
77.
Inspector
-
78.
Collections
-
79.
Sockets </li></ul>
-
80.
Andá y probalo che <ul><li>http://lithify.me
-
81.
http://lab.lithify.me
-
82.
#li3
-
83.
#li3-core
-
84.
http://marianoiglesias.com.ar
-
85.
twitter: </li><ul><li>UnionOfRad
-
86.
mgiglesias </li></ul></ul>
-
87.
¿Preguntas? <ul>Lithium Un framework que pega como piña </ul><ul>¿Pegó o no pegó? </ul>
Desarrollar en PHP sin frameworks es suicida Esto produjo una avalancha de frameworks Los big three: CakePHP, ZF, Symfony Realmente era necesario otro framework?
– CakePHP Trabajo desde 2007 Escribiendo un libro PHP4 support -> PHP5 en Cake 2.0 – Zend Framework PEAR mezclado con algunos conceptos FW Se empezo a ordenar con el tiempo ZF 2.0 recien empieza a usar namespaces – Symfony Sin closures ni lambdas! One man show: Fabien Potencier Symfony Reloaded: ”El framework mas Fabien” – Code Igniter PHP4 support No hay plan visible para adopcion 5.3 – Solar Tomy, el hijo del vasko Cosas muy interesantes Demasiado joven todavia One man show: Paul M. Jones
PHP4 cumplio con su cometido PHP5 trajo mas conceptos de OOP – Yay! PHP5.3 nos hace sentir la diferencia No se bien quien es el de la foto, pero lo envidio Aunque pronto yo voy a estar en su lugar
Performance: 20% en aplicaciones migradas Mysqlnd nativo en PHP, más rápido! NoSQL: Couch y Mongo Late static binding: sobrecarga de métodos estáticos Funciones lambda: del cálculo lambda Autoloader del PHP Interoperability Group
PHP Standards Group = PHP Interoperability Group
No hay mejor framework basado realmente en PHP 5.3 que Lithium Obviamente habrá gente que no opina lo mismo, y frente a ellos voy a dejar que Simba responda
Los únicos módulos necesarios para utilizar otros módulos son core y util El resto de los módulos puede funcionar independientemente Así podemos construir aplicaciones basadas en micro-frameworks hechos con Lithium
Un concepto bien AOP (Aspect Oriented Programming) Funciones secundarias aisladas de la lógica principal Más modularidad
Cuando hay más de 3 parámetros, usamos array $_autoConfig especifica qué keys de __construct($config) debieran ser procesados, y cómo Por defecto, las keys que están en $_autoConfig y son especificadas en __construct($config) se vuelven disponibles como $this->_var lithium_qa usa los estándares de lithium y chequea la sintaxis, mostrando violaciones Gracias a lithium_qa podríamos automatizar el chequeo en un post commit hook y así rechazar código que no cumpla con los estándares
Línea de comandos: li3_bot y Tito en #php-ar
Logging: parte del módulo analysis. Gracias a los filtros, podríamos utilizarlo para loguear consultas SQL Debugger: parte del módulo analysis, tiene métodos como trace() y export(), para los que no tienen xdebug y su versión de var_dump() Parser: también del módulo analysis. Parser::tokenize(CODIGO) devuelve el código fuentes dividido en tokens (T_VARIABLE, etc.) Inspector: también del módulo analysis. Utiliza Reflection para obtener propiedades, métodos, líneas de código, y más Collections: del paquete util, utilizada en RecordSet y todo lugar con colexiones iterables. Collection::each(LAMBDA)