View
3.552
Download
1
Category
Preview:
DESCRIPTION
My presentation as given at the pfCongrez in Maarssen, april 12th 2008
Citation preview
Ibuildings
Het symfony framework
Stefan Koopmanschap
Zaterdag 12 April 2008 2
Wat gaan we doen vandaag?
• Wie is Stefan?• PHP Frameworks 101• Symfony
Zaterdag 12 April 2008
Wie is Stefan?
• 16-06-1978• Software Engineer en Consultant bij Ibuildings• PHP sinds 1997• Professioneel sinds 2001
3
Zaterdag 12 April 2008
PHP Frameworks
• Niet echt noodzakelijk voor dat ene contactformuliertje
• Websites hebben baat bij een klein framework• Grotere applicaties: een must
4
Zaterdag 12 April 2008
Maar wat is een framework?
• Component Frameworks vs Full-Stack Frameworks
• Component: ezComponents, Zend Framework Losse componenten die gebruikt kunnen worden Makkelijk in ieder project in te passen
• Special purpose frameworks: Code Igniter, Kohana, Mojavi, Propel, Doctrine
• Full-Stack: CakePHP, symfony Volledige applicatie-omgeving In elkaar verweven, dus lastig los te gebruiken
5
Zaterdag 12 April 2008
Oude situatie
• Applicaties worden direct gebouwd op PHP
• Iedere applicatie bevat eigen logica voor alles
6
Zaterdag 12 April 2008
Nieuwe situatie
• Framework als extra laag• Applicaties hebben eigen logica• Maar delen gezamenlijke
functionaliteit
7
Zaterdag 12 April 2008
Oude situatie
8
creative common attribution license - Yusuke Kawasaki - http://www.flickr.com/photos/u-suke/138067687/
Zaterdag 12 April 2008
Nieuwe situatie
9
creative common attribution license - cardoso - http://www.flickr.com/photos/cardoso/2197492398/
Zaterdag 12 April 2008
Wat is symfony?
• Web Application Framework• Open source voor de enterprise• Snellere(?), stabielere ontwikkeling• Betere structuur en
beheersbaarheid• Extreem uitbreidbaar• MIT license
10
Zaterdag 12 April 2008
Symfony hoe en wat?
• Gebaseerd op bestaande open source projecten fork van Mojavi MVC framework, gecombineerd met
andere open source projecten
• 1.0.0 op 18 februari 2007• Momenteel: 1.0.13 en 1.1.0-beta2• Model View Controller• Code generatie• Flexibele routing voor SEO• Uitbreidbaar• Unit en Functional Testing• Documentatie(!)
11
Zaterdag 12 April 2008
Een symfony project
12
Zaterdag 12 April 2008
Niet handmatig!
• Schrik niet, automatisering helpt symfony init-project maakt projectstructuur symfony init-app maakt applicationstructuur symfony init-module maakt modulestructuur symfony propel-build-model maakt je basis model
• Meer over automatisering later
13
Zaterdag 12 April 2008
MVC basis
• MVC-gebaseerd• Controller handelt request af• Model bevat business logic (en
handelt data af)• View handelt weergave af• Decorator pattern voor globale
layout
14
Zaterdag 12 April 2008
Module: Controller en view
• Module: groepering van requests
• Controllers Actions voor pagina requests Components voor “includes”
• Views *Success.php en *Error.php voor
pagina requests _*.php voor partials en
components
15
Zaterdag 12 April 2008
Nieuw project
16
Een nieuw symfony projectin bewegend beeld
Zaterdag 12 April 2008
En in je IDE
17
Een nieuw symfony projectmaar dan in je IDE
Zaterdag 12 April 2008
Configuratie
• YAML (YAML Ain’t a Markup Language) Makkelijke, leesbare bestanden
• Gebruikt voor nagenoeg alle configuratie: database schema database connectie configuratie applicatie en module configuratie admin generator
18
Zaterdag 12 April 2008
Even de praktijk bekijken
• schema.yml• propel-generate-model• propel-generate-sql• propel-insert-sql• propel-generate-crud• propel-init-admin
19
Zaterdag 12 April 2008
AJAX
• Advanced AJAX zonder een letter javascript te kunnen
• graceful degradation met if_javascript()• PHP functies genereren javascript
link_to_remote() observe_field() link_to_function() periodically_call_remote()
• mooie effecten met scriptaculous
20
Zaterdag 12 April 2008
Extend!
• Symfony is een basis. Het is niet genoeg• DRY, dus hergebruiken. Plugins zijn krachtig• factories.yml bepaalt welke classes key features
gebruiken, dus extend maar raak• Gebruik andere frameworks! Ze zijn ervoor
21
Zaterdag 12 April 2008
Extend: plugins
• Plugins kunnen alles bevatten libraries helpers volledige modules
• Makkelijk te installeren symfony plugin-install [url naar plugin package]
• Voorbeelden sfGuardPlugin, sfOpenIDPlugin sfSimpleCMSPlugin, sfSimpleBlogPlugin sfPropel13Plugin, sfDoctrinePlugin sfShoppingCartPlugin, sfPaypalDirectPlugin sfSuperCachePlugin, sfMemcachePlugin sfBBCodeParserPlugin, sfTextilePlugin ...
22
Zaterdag 12 April 2008
Meer automatisering
23
Zaterdag 12 April 2008
Automatisering dus...
• initialisatie taken• code generatie (CRUD en Model)• basis database taken (schema genereren of
inlezen, data inlezen of dumpen)• unit testing• systeemtaken (plugin beheer, “(un)freeze”,
upgrade, permissies fixen)• deployment• eigen taken
dingen die je vaak moet doen maar hetzelfde zijn dingen die vaak tot (onnodige) bugs leiden het saaie werk
24
Zaterdag 12 April 2008
Heb je er wat aan?
• Yahoo! (yahoo! bookmarks en delicious)• Air France, Peugeot, Renault• Jongeren in Beeld• Dutch Cowboys• Kliknieuws
25
Zaterdag 12 April 2008
Hoe nu verder?
• Het boek (dode bomen of online GFDL licensed)
• Tutorials op de site: My First Project, Askeet (!!), Easy Ajax
• Wiki (schat aan informatie)• #symfony op irc.freenode.net• Forum op de site
26
Ibuildings
Vragen?
http://www.symfony-project.org/http://www.symfony-framework.nl/http://www.leftontheweb.com/http://www.ibuildings.nl/http://www.phpconference.nl/Ibuildings.nl zoekt (senior) php developers!
(vraag om mijn kaartje)
Recommended