Let’s play with Symfony2 Noël GUILBERT2010.rmll.info/IMG/pdf/lets_play_with_sf2.pdf · •...

23
Let’s play with Symfony2 Noël GUILBERT

Transcript of Let’s play with Symfony2 Noël GUILBERT2010.rmll.info/IMG/pdf/lets_play_with_sf2.pdf · •...

Let’s play with Symfony2Noël GUILBERT

Symfony2 introduced a lot a new features, let’s discover some of them:

• Dependency Injection Container• The form framework• Doctrine2 integration

Dependency Injection Container

• Dependency Injection Container–a way to organize dependencies–Define services

services:zend.translator:class: Userarguments: [@user.storage]

user.storage:class: SessionStorage

• How to use it in a Symfony2 project ?

• Create your own service–Symfony2 offer a simple and effective way to create

services

– It’s called an extension

–An extension can receive some configuration parameter from the application config.yml file (i.e. databases connections, passwords, etc.)

• Create your own service–Define your services:

# src/Bundle/TwitterBundle/Resources/config/user.ymlparameters:

twitter.username: ~twitter.password: ~

services:twitter:class: Twitterarguments: [%twitter.username%, %twitter.password%]

# src/Bundle/TwitterBundle/DependencyInjectionContainer/TwitterExtension.php

• Create the extension class

# src/Bundle/TwitterBundle/DependencyInjectionContainer/TwitterExtension.php

• Load your service

• Enable the extension–Add these lines in the application config.yml file:

# hello/config/config.ymltwitter.twitter:username: noelguilbertpassword: mysecretpassword

• That’s all, the service is now available:

The Form Framework

• A brand new piece of code• A layer on top of the domain models• Allows you to easily create HTML forms

Your first form

Write a simple Request class

Let’s add some validators

And you are ready to use it!

Doctrine 2 integration

• Fully integrated:– DBAL– ORM– MongoDb mapper– Migrations

DBAL: configure your database connection

DBAL command lines

• Create configured database$ php console doctrine:database:create

• Drop configured database$ php console doctrine:database:drop

• Query the database$ php console doctrine:sql:query ‘SELECT * FROM User’

ORM: persisting and retrieving entities

• An Entity is a regularPHP class that has been mapped to Doctrine 2

ORM: Defining entities

• Entities can be mapped with:

• Regular PHP class• XML Definition schemas• YML Definition schemas

ORM: command lines• Convert Doctrine1 schemas to Doctrine 2:

$ php console doctrine:mapping:convert-d1-schema

• Generate entities:$ php console doctrine:generate:entities

• Create or update the database schema$ php console doctrine:schema:create$ php console doctrine:schema:update

• Load fixtures$ php console doctrine:schema:update

What’s next ?

Questions?Noël GUILBERT

[email protected]

Sensio S.A.92-98, boulevard Victor Hugo

92 115 Clichy CedexFRANCE

Tél. : +33 1 40 99 80 80

www.sensiolabs.com - www.symfony-project.org - www.noelguilbert.com