1. for non-techies
Ibuildings Presentation
Ibuildings
The PHP Professionals
www.ibuildings.nl
+31 118 429 550
info@ibuildings.nl
Ibuildings
Version 10
2. Contents of this presentation
• What is symfony?
• Symfony timeline
History
Present
Future
• Technology for non-techies
Buzzwords
But is it that interesting?
And what does it do?
Monday, December 10, 2007 2
3. What is symfony?
• PHP5 Web Application Framework
Aims at bringing open source to the enterprise
Wants to speed up development of web applications
Wants to offer maintainability and structure
Wants to offer professionalism
Supports “agile” development
Is easily extendable
Provides standard web security options
Not written from scratch, but based on existing open source
projects
But ... it’s french ;)
Monday, December 10, 2007 3
4. Symfony timeline: History
• Symfony is relatively young
2005 saw the first release
2007: first stable release (1.0.0)
• Ideas floating in the head of Fabien Potencier
since 2003
• Since early releases, a community began to grow
Monday, December 10, 2007 4
5. Symfony timeline: Present
• Symfony version 1.0.9
• A lot of development for symfony 1.1
• 100’s of open source plugins
• Big community spread out over forums, Google
groups and local symfony portals
• An ever-growing list of applications build with
symfony
• An ever-growing list of companies using symfony
Monday, December 10, 2007 5
6. Symfony timeline: Future
• Coming soon: Symfony 1.1
The first step towards a leaner, meaner 2.0
Mainly optimization and a few new features
• 2008: Symfony 2.0
Completely rewritten
Less magic, clearer code
Faaaaasssstttteeeerrrrr
• But...
Symfony 1.0 will be supported with bugfixes and
security patches for a long time to come
Upgrade path from symfony 1.0 to 1.1
Monday, December 10, 2007 6
9. But is it that interesting?
• Very free license: MIT
Do whatever you want with it
Just leave the copyrights
• Stable
Minor releases only contain bugfixes or very minor
additions
Only major releases *may* break backwards
compatibility
Monthly release schedule
• Based on best practices
• Aimed at the enterprise from the start
Monday, December 10, 2007 9
10. But is it that interesting?
• It wants to lower development cost
Lower cost-per-line
• Easier testing
• Simpler maintainance
– Results in lower overall cost
Less lines of code
• Configurable options
• Autoloading
• Automating standard tasks
– Results in less bugs
– Results in less code to write
– Results in lower overall cost
Monday, December 10, 2007 10
11. But is it that interesting?
• It wants to result in higher quality
PHP5
MVC and other “design patterns”
Object oriented
Documentation
Security
Unit and Functional testing
Agile approach
Monday, December 10, 2007 11
12. And what does it do?
• Complete application structure
All applications have a similar structure
Basic structure is created automatically
A lot of configurable features, such as routing, display
options, security, caching, and much more
• Applications are split into modules
For instance: news, projects, contact
Basic module structure is created automatically
Module-specific configuration as well as overruling
application-configuration
Monday, December 10, 2007 12
14. And what does it do?
• Debugging help for developers
Faster debugging and optimizing with debug toolbar
Full flow can be tracked, making it easy to find out why
certain things happen in a page
Monday, December 10, 2007 14
15. And what does it do?
• Debugging continued...
Same overlay for database queries and variables and
configuration settings
Optimization overlay: check which parts of a page takes
longer
Monday, December 10, 2007 15
16. And what does it do?
• Database abstraction and
ORM using Propel/Creole
Automation of model creation
All data logic in models, models
expose the data to the
application
Easily extendable without losing
custom code
• Easy templating
No template engine; view should
not contain any complicated
logic anyway
Global template for overall
layout
Partials, components, slots for
sharing info between modules
Monday, December 10, 2007 16
17. And what does it do?
• Form validation
No annoyingly long coding, checking all form fields
A simple configuration file is enough for standard
validation
Easily write custom validators
• Easy AJAX integration
No need to write javascript anymore for most common
AJAX uses
Everything in easy to use php functions that generate
and inject the javascript code
Can support fallback for browsers that do not support
javascript
Monday, December 10, 2007 17
18. And what does it do?
• Routing and SEO
“Friendly” URLs by default
Can be made more friendly by the routing system
• Routing based on simple configuration file
• Routing system is based on Ruby on Rails routing
• /news/article/id/536 can be /news/536 with simple
configuration
• /news/article/id/536 can be
/news/this_is_some_great_news with a little extra logic
Route changes in configuration will reflect links in the
application if the special url_for() and link_to() functions
are being used
Monday, December 10, 2007 18
19. And what does it do?
• Speed and performance
Caching of configuration
Caching of pages; even up to actually creating static
HTML pages
Caching of components, slots and partials
Caching of parts of your template
Debug mode will show which parts are cached
• i18n and i10n
Can be configured per application or module
Can be changed dynamically (for instance when a user
logs in)
Support of XML Localization Interchange File Format
(XLIFF) standard format
Monday, December 10, 2007 19
20. And what does it do?
• Generators
Admin generator will generate a basic management
interface
• Uses database relations if defined
• Highly configurable without any coding
• Can easily get a custom layout
Custom generators allow automating even more tasks
• You can easily write your own generator templates to
generate your own pieces of code
• Unit and functional testing
Built in unit and functional testing framework
Better code, easier testing
• Easy deployment
Single command for deploying application
Monday, December 10, 2007 20
21. And what does it do?
• Highly extendable
Use Zend Framework or ezComponents in symfony
without a hassle
Use plugins to instantly add new functionality to your
application
Write your own plugins to share your own functionality
across projects, or with the community
One of the most important plugins: sfZendLucene
(integrating Zend Framework Lucene search with your
symfony application)
Lots of other plugins: CMS, discussion forum, weblog,
Yahoo! UI, Urchin/Google Analytics integration, several
PDF generators, JPGraph, several payment processors
(Paypal, EchoPay, AuthorizeNet), sfGuard (full using
authentication), and many more
Monday, December 10, 2007 21