Slide 1: symfony
symfony 1.1 goodness
Fabien Potencier
Slide 2: Who am I?
• Founder of Sensio
– Web Agency – Since 1998 – 45 people – Open-Source Specialists – Big corporate customers
• Creator and lead developer of symfony
Slide 3: symfony
• PHP Web framework • Based on
– 10 years of Sensio experience – Existing Open-Source projects
• MIT license • Documentation is Open-Source • Great community
Slide 4: Maintainability Standardization Faster & Better
Slide 5: « entreprise » version
Slide 6: Version 1.0 released early 2007
– Maintained for 3 years (early 2010) – ~1 release a month (1.0.16 now)
• Bug and security fixes, compatibility with new PHP versions fixes • No new features (even small ones) • Upgrading is simple and safe
Slide 7: Version 1.1 to be released this month
– Maintained for 1 year – Same release cycle as 1.0
Roadmap
– Version 1.2 Q4 2008 – Version 1.3 Q1 2009
Slide 8: symfony is a set of cohesive but decoupled classes
Slide 9: symfony platform
Slide 14: http://localhost/index.php?name=Fabien!
Hello Fabien
http://localhost/index.php!
Hello World
Slide 16: http://localhost/index.php?name=Fabien!
http://localhost/index.php/hello /Fabien!
http://localhost/hello/Fabien!
Hello Fabien
Slide 17: sfEventDispatcher
// sfPatternRouting! $callback = array($this, ’filterParameters‘);! $dispatcher->connect(’request.filter_parameters‘, $callback);! // sfWebRequest! $event = new sfEvent($this, ‘request.filter_parameters’);! $dispatcher->filter($event, $parameters);!
• sfPatternRouting and sfWebRequest are decoupled • « Anybody » can listen to any event • You can notify existing events or create new ones
Slide 18: Some events
application.log application.throw_exception context.load_factories request.filter_parameters user.change_culture controller.page_not_found response.filter_content view.cache.filter_content *.method_not_found
Slide 19: symfony platform
Slide 20: the symfony MVC framework is based on the symfony platform
Slide 24: symfony 1.1 new features and enhancements
Slide 25: CLI
• Rewritten from scratch
– OOP – Arguments and options management – Extensible – Built-it help
Slide 29: Tests
• Better m2m support in fixtures • File upload support • CSS3 selectors • New shortcuts (isUserCulture, isRequestFormat)
Slide 30: m2m fixtures
Slide 31: m2m fixtures
Slide 32: m2m fixtures
Slide 33: File upload support
Slide 34: CSS3 selectors
Slide 35: Forms
• OOP • Flexible and customizable • MVC based (Validator, Widget, Form) • Easy to embed forms • Secure • Fully integrated with Propel and Doctrine • Useable without symfony
Slide 36: Propel Form
The model is introspected to generate form classes
Slide 53: Native multi-format support
• A request has a format (HTML by default)
css, js, xml, atom, json, …
• Same controller and model • Different templates (layouts/partials/components) • Easy to implement a new format (iPhone)
http://www.symfony-project.org/cookbook/1_1/en/iphone!
Slide 62: xml json css js
text/xml, application/xml, application/x-xml application/json, application/x-json text/css application/javascript, application/x-javascript
Slide 63: Questions?
Slide 64: Sensio S.A. 26, rue Salomon de Rothschild 92 286 Suresnes Cedex FRANCE Tél. : +33 1 40 99 80 80 Contact Fabien Potencier fabien.potencier@sensio.com
http://www.sensiolabs.com/
http://www.symfony-project.org/