16 juni 2007 DUTCH OPEN PROJECTS 1 www.dop.nu Symfony Dutch PHP Conference 16 juni 2007 Stefan Koopmanschap, Dutch Open Projects
Nov 29, 2014
16 juni 2007 DUTCH OPEN PROJECTS 1www.dop.nu
Symfony
Dutch PHP Conference 16 juni 2007
Stefan Koopmanschap, Dutch Open Projects
16 juni 2007 DUTCH OPEN PROJECTS 2www.dop.nu
Deze presentatie● Over mij● Wat is Symfony?● De geschiedenis van Symfony● Hoe werkt het?● Jongeren in Beeld
16 juni 2007 DUTCH OPEN PROJECTS 3www.dop.nu
Over mij● 16 Juni 1978● Communicatiesystemen● PHP door zelfstudie● phpBB● Dutch Open Projects
16 juni 2007 DUTCH OPEN PROJECTS 4www.dop.nu
Over Symfony● MVC Framework● PHP 5● Open Source (MIT! Dus geen GPL!)● Professioneel ontwikkelen
● Stabiel● Documentatie● OO● Testen
● Geen Ruby on Rails
16 juni 2007 DUTCH OPEN PROJECTS 5www.dop.nu
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
16 juni 2007 DUTCH OPEN PROJECTS 6www.dop.nu
Wat is het?
Compleet framework inclusief utilities
Geen “component library” maar volledige “environment”
CLI commando's voor standaard taken
initialisatie van applicatie, module, projectlog purge en log rotateplugin installatie, upgrade en deinstallatiepropel (model/db) takenunit en functional testingdebugging en gedeeltelijk profilingdeployment (!!)
16 juni 2007 DUTCH OPEN PROJECTS 7www.dop.nu
Hoe werkt het?
/apps/myapp
/config/i18n/lib/modules/templates
/batch/cache/config/data/doc/lib
/model/map/om
/log/plugins/test/web
/css/images/js/uploads
Duidelijke directory structuur
16 juni 2007 DUTCH OPEN PROJECTS 8www.dop.nu
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
16 juni 2007 DUTCH OPEN PROJECTS 9www.dop.nu
Hoe werkt het?/modules
/mymodule/actions
/actions.class.php/config/lib/templates/validate
Duidelijke MVC structuur metFront Controller
Controller handelt request af
Model handelt data af
View handelt layout af
16 juni 2007 DUTCH OPEN PROJECTS 10www.dop.nu
Hoe werkt het?
Hoe beginnen we?
symfony init-projectsymfony init-app (he! het werkt!)symfony init-module
Uitstapje naar Yaml: schema.yml, databases.yml
Propel configureren: propel.ini
symfony propel-build-modelsymfony propel-build-sqlsymfony propel-insert-sqlsymfony propel-generate-crudsymfony propel-init-admin
16 juni 2007 DUTCH OPEN PROJECTS 11www.dop.nu
Hoe werkt het?
Layout: hoe werkt dat?
templates voor individuele pagina'slayout.php op applicatieniveauview.yml op applicatieniveau
16 juni 2007 DUTCH OPEN PROJECTS 12www.dop.nu
Configuratie van je applicatie
Heel veel controle, een paar highlights:
logging.ymlrouting.ymlsecurity.ymlsettings.ymlview.yml
16 juni 2007 DUTCH OPEN PROJECTS 13www.dop.nu
Routing: SEO en meer
mod_rewrite optioneel
nog mooiere URL's
/post/view/id/1 wordt /post/1
URL's worden door link_to() en url_for() gegenereerd
16 juni 2007 DUTCH OPEN PROJECTS 14www.dop.nu
Debugging
Frontend applicatie bevat index.php maar ook frontend_dev.php
Debug toolbar
logs en systeemberichtenconfiguratie en variabelendatabase queriesperformance informatie
16 juni 2007 DUTCH OPEN PROJECTS 15www.dop.nu
Uitbreidingsmogelijkheden
Plugins
sfFeed2 – RSS en Atom makkelijksfControlPanel – Symfony applicatie beheersfSugarCRM – Koppeling met SugarCRM SOAPsfOpenID – Distributed SSO ondersteuningsfSmartyView – Gebruik Smarty voor templatingsfOptimizer – Nog meer geoptimaliseerd
16 juni 2007 DUTCH OPEN PROJECTS 16www.dop.nu
Niet genoeg?
Framework bridges: Gebruik andere frameworks
Zend FrameworkezComponents
Ajax integratie zonder javascript programmeren
Caching
I18n en l10n
Form validation
......
16 juni 2007 DUTCH OPEN PROJECTS 17www.dop.nu
Jongeren in Beeld
16 juni 2007 DUTCH OPEN PROJECTS 18www.dop.nu
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
16 juni 2007 DUTCH OPEN PROJECTS 19www.dop.nu
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!
16 juni 2007 DUTCH OPEN PROJECTS 20www.dop.nu
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
16 juni 2007 DUTCH OPEN PROJECTS 21www.dop.nu
De keus voor Symfony
PHP5 (dus geen CakePHP)
Stabiele API (dus geen Zend Framework)
Grote community
Goede documentatie
16 juni 2007 DUTCH OPEN PROJECTS 22www.dop.nu
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
16 juni 2007 DUTCH OPEN PROJECTS 23www.dop.nu
Waar was ik iets minder blij mee?
Propel (wanneer het complex wordt)
De screencasts zijn geen goede introductie maar intimideren
16 juni 2007 DUTCH OPEN PROJECTS 24www.dop.nu
Waar kan je meer vinden?
http://www.symfony-project.com/
http://www.symfony-forge.com/
http://www.leftontheweb.com/
http://groups.google.com/group/symfony-users
http://beta.bookmarks.yahoo.com/