Symfony framework (pfCongrez 12 april 2008)

27
Ibuildings Het symfony framework Stefan Koopmanschap

description

My presentation as given at the pfCongrez in Maarssen, april 12th 2008

Transcript of Symfony framework (pfCongrez 12 april 2008)

Page 1: Symfony framework (pfCongrez 12 april 2008)

Ibuildings

Het symfony framework

Stefan Koopmanschap

Page 2: Symfony framework (pfCongrez 12 april 2008)

Zaterdag 12 April 2008 2

Wat gaan we doen vandaag?

• Wie is Stefan?• PHP Frameworks 101• Symfony

Page 3: Symfony framework (pfCongrez 12 april 2008)

Zaterdag 12 April 2008

Wie is Stefan?

• 16-06-1978• Software Engineer en Consultant bij Ibuildings• PHP sinds 1997• Professioneel sinds 2001

3

Page 4: Symfony framework (pfCongrez 12 april 2008)

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

Page 5: Symfony framework (pfCongrez 12 april 2008)

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

Page 6: Symfony framework (pfCongrez 12 april 2008)

Zaterdag 12 April 2008

Oude situatie

• Applicaties worden direct gebouwd op PHP

• Iedere applicatie bevat eigen logica voor alles

6

Page 7: Symfony framework (pfCongrez 12 april 2008)

Zaterdag 12 April 2008

Nieuwe situatie

• Framework als extra laag• Applicaties hebben eigen logica• Maar delen gezamenlijke

functionaliteit

7

Page 8: Symfony framework (pfCongrez 12 april 2008)

Zaterdag 12 April 2008

Oude situatie

8

creative common attribution license - Yusuke Kawasaki - http://www.flickr.com/photos/u-suke/138067687/

Page 9: Symfony framework (pfCongrez 12 april 2008)

Zaterdag 12 April 2008

Nieuwe situatie

9

creative common attribution license - cardoso - http://www.flickr.com/photos/cardoso/2197492398/

Page 10: Symfony framework (pfCongrez 12 april 2008)

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

Page 11: Symfony framework (pfCongrez 12 april 2008)

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

Page 12: Symfony framework (pfCongrez 12 april 2008)

Zaterdag 12 April 2008

Een symfony project

12

Page 13: Symfony framework (pfCongrez 12 april 2008)

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

Page 14: Symfony framework (pfCongrez 12 april 2008)

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

Page 15: Symfony framework (pfCongrez 12 april 2008)

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

Page 16: Symfony framework (pfCongrez 12 april 2008)

Zaterdag 12 April 2008

Nieuw project

16

Een nieuw symfony projectin bewegend beeld

Page 17: Symfony framework (pfCongrez 12 april 2008)

Zaterdag 12 April 2008

En in je IDE

17

Een nieuw symfony projectmaar dan in je IDE

Page 18: Symfony framework (pfCongrez 12 april 2008)

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

Page 19: Symfony framework (pfCongrez 12 april 2008)

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

Page 20: Symfony framework (pfCongrez 12 april 2008)

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

Page 21: Symfony framework (pfCongrez 12 april 2008)

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

Page 22: Symfony framework (pfCongrez 12 april 2008)

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

Page 23: Symfony framework (pfCongrez 12 april 2008)

Zaterdag 12 April 2008

Meer automatisering

23

Page 24: Symfony framework (pfCongrez 12 april 2008)

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

Page 25: Symfony framework (pfCongrez 12 april 2008)

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

Page 26: Symfony framework (pfCongrez 12 april 2008)

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

Page 27: Symfony framework (pfCongrez 12 april 2008)

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)