Symfony
Dutch PHP Conference
16 juni 2007
Stefan Koopmanschap, Dutch Open Projects
www.dop.nu
16 juni 2007 DUTCH OPEN PROJECTS 1
Deze presentatie
Over mij
●
Wat is Symfony?
●
De geschiedenis van Symfony
●
Hoe werkt het?
●
Jongeren in Beeld
●
www.dop.nu
16 juni 2007 DUTCH OPEN PROJECTS 2
Over mij
16 Juni 1978
●
Communicatiesystemen
●
PHP door zelfstudie
●
phpBB
●
Dutch Open Projects
●
www.dop.nu
16 juni 2007 DUTCH OPEN PROJECTS 3
Over Symfony
MVC Framework
●
PHP 5
●
Open Source (MIT! Dus geen GPL!)
●
Professioneel ontwikkelen
●
Stabiel
●
● Documentatie
● OO
● Testen
Geen Ruby on Rails
●
www.dop.nu
16 juni 2007 DUTCH OPEN PROJECTS 4
Geschiedenisles
Frankrijk: Sensio Labs
●
Fork van Mojavi (puur) MVC framework
●
Combinatie met Propel, prototype, phing, pake, creole,
●
lime, phpmailer
2005: eerste versie Symfony
●
November 2006: eerste beta
●
19 Februari 2007: stabiele 1.0.0
●
Nu: Symfony 1.0.3
●
www.dop.nu
16 juni 2007 DUTCH OPEN PROJECTS 5
Wat is het?
Compleet framework inclusief utilities
Geen “component library” maar volledige “environment”
CLI commando's voor standaard taken
initialisatie van applicatie, module, project
log purge en log rotate
plugin installatie, upgrade en deinstallatie
propel (model/db) taken
unit en functional testing
debugging en gedeeltelijk profiling
deployment (!!)
www.dop.nu
16 juni 2007 DUTCH OPEN PROJECTS 6
Hoe werkt het?
Applicaties zijn globale eenheden
Voorbeeld: frontend en backend
Decorator pattern: Globale layout.php voor
veelvoorkomende elementen
Globale library en configuratie
Kunnen worden overruled in modules
Binnen applicaties: modules
/modules
/mymodule
/actions
/actions.class.php
/config
/lib
/templates
/validate
www.dop.nu
16 juni 2007 DUTCH OPEN PROJECTS 8
Hoe werkt het?
/modules
/mymodule
/actions
/actions.class.php
/config
/lib
/templates
/validate
Duidelijke MVC structuur met
Front Controller
Controller handelt request af
Model handelt data af
View handelt layout af
www.dop.nu
16 juni 2007 DUTCH OPEN PROJECTS 9
Hoe werkt het?
Layout: hoe werkt dat?
templates voor individuele pagina's
layout.php op applicatieniveau
view.yml op applicatieniveau
www.dop.nu
16 juni 2007 DUTCH OPEN PROJECTS 11
Debugging
Frontend applicatie bevat index.php maar ook
frontend_dev.php
Debug toolbar
logs en systeemberichten
configuratie en variabelen
database queries
performance informatie
www.dop.nu
16 juni 2007 DUTCH OPEN PROJECTS 14
Uitbreidingsmogelijkheden
Plugins
sfFeed2 – RSS en Atom makkelijk
sfControlPanel – Symfony applicatie beheer
sfSugarCRM – Koppeling met SugarCRM SOAP
sfOpenID – Distributed SSO ondersteuning
sfSmartyView – Gebruik Smarty voor templating
sfOptimizer – Nog meer geoptimaliseerd
www.dop.nu
16 juni 2007 DUTCH OPEN PROJECTS 15
Niet genoeg?
Framework bridges: Gebruik andere frameworks
Zend Framework
ezComponents
Ajax integratie zonder javascript programmeren
Caching
I18n en l10n
Form validation
......
www.dop.nu
16 juni 2007 DUTCH OPEN PROJECTS 16
Wat is Jongeren in Beeld?
Applicatie voor gemeente en hulpverleningsinstanties
Bijhouden van gegevens over “probleemjeugd”
Bijna 30 gemeentes
Ongeveer 150 gebruikers
Wisselende wensen (authorisatie, opslaan gegevens, e.d.)
De toekomst wordt een uitdaging
www.dop.nu
16 juni 2007 DUTCH OPEN PROJECTS 18
Waar komen we vandaan?
Applicatie opgezet met Mambo voor 1 gemeente
Interesse vanuit meer gemeentes
Gebrek aan structuur in Mambo, waardoor alle
aanpassingen van 3-4 jaar gebruik leidden tot spaghetti-
code
Database met 1500+ tabellen (iedere gemeente eigen
tabellen)
Maar ... het werkte!
www.dop.nu
16 juni 2007 DUTCH OPEN PROJECTS 19
En toen?
Oktober 2006: Ik kom bij DOP
Beheersbaarheid van code blijkt nagenoeg verdwenen
Belangrijker: Het is geen website maar een applicatie
Tijd voor een volwassen applicatie
www.dop.nu
16 juni 2007 DUTCH OPEN PROJECTS 20
De keus voor Symfony
PHP5 (dus geen CakePHP)
Stabiele API (dus geen Zend Framework)
Grote community
Goede documentatie
www.dop.nu
16 juni 2007 DUTCH OPEN PROJECTS 21
Waar was ik erg blij mee?
De Askeet tutorial om snel up to speed te zijn
Automatische model generatie
De duidelijkste MVC implementatie in PHP
Goede PHPDoc documentatie (voor in Zend Studio)
symfony freeze
Duidelijke scheiding tussen dev en productie
www.dop.nu
16 juni 2007 DUTCH OPEN PROJECTS 22