Symfony (Dutch PHP Conference)

Post on 29-Nov-2014

6.766 views 2 download

description

The presentation on Symfony I did at the Dutch PHP Conference organized by iBuildings and Zend.

Transcript of Symfony (Dutch PHP Conference)

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/