49
Symfony2: It’s Play Time @geoffreytran www.linkedin.com/in/ geoffreytran

LoneStarPHP Symfony2, Its Play Time

Embed Size (px)

Citation preview

Page 1: LoneStarPHP Symfony2, Its Play Time

Symfony2: It’s Play Time

@geoffreytranwww.linkedin.com/in/geoffreytran

Page 2: LoneStarPHP Symfony2, Its Play Time

IAMA

– Software Engineer at RAPP–Working with PHP since 2005– Co-Founded #zftalk & #zftalk.dev– Dormant Zend Framework Contributor• Zend_Application• Zend_Navigation• Zend_Paginator• Zend_View_Helper_BaseUrl

Page 3: LoneStarPHP Symfony2, Its Play Time

What is Symfony2?

It simply solves your difficult redundant problems… and gets out of your way

Page 4: LoneStarPHP Symfony2, Its Play Time

You are not boxed in…

Page 5: LoneStarPHP Symfony2, Its Play Time

… easy to get started, yet powerful and flexible for advanced users

Page 6: LoneStarPHP Symfony2, Its Play Time

Pre Zend_Application BootstrapIndex.php

Page 7: LoneStarPHP Symfony2, Its Play Time

Post Zend_Application

Index.php

Page 8: LoneStarPHP Symfony2, Its Play Time

“The core architecture is now stable…”

– Fabien Potencier

http://symfony.com/blog/symfony2-final-version-we-are-not-there-yet

Page 9: LoneStarPHP Symfony2, Its Play Time

In development since December 2009

Page 10: LoneStarPHP Symfony2, Its Play Time

A lot can happen in a year

A baby?

Page 11: LoneStarPHP Symfony2, Its Play Time

THE NEXT BIEBER?

Page 12: LoneStarPHP Symfony2, Its Play Time

A new job?

Page 13: LoneStarPHP Symfony2, Its Play Time
Page 14: LoneStarPHP Symfony2, Its Play Time

Top 2% of projects on Ohloh

Page 15: LoneStarPHP Symfony2, Its Play Time

325 Bundles Publishedhttp://symfony2bundles.org/

Page 16: LoneStarPHP Symfony2, Its Play Time

What exactly is a bundle?

A bundle is like a plugin… except Symfony2 itself is made up of bundles

Page 17: LoneStarPHP Symfony2, Its Play Time

“I was using the same idea by organizing my code in [zend framework] modules, but this is really painful”

-- tawfekov via StackOverflow

http://stackoverflow.com/questions/5053369/do-you-think-zend-framework-misses-the-symfonys-bundle-principle

Page 18: LoneStarPHP Symfony2, Its Play Time

Nothing like Symfony1

Page 19: LoneStarPHP Symfony2, Its Play Time

Less Magicconfig_autoload.yml.php

Page 20: LoneStarPHP Symfony2, Its Play Time

Explicit Configurationapp/AppKernel.php

Page 21: LoneStarPHP Symfony2, Its Play Time

Doctrine2Doctrine2: User.php

Doctrine 1.2: User.php

Page 22: LoneStarPHP Symfony2, Its Play Time

Decoupled design

Page 23: LoneStarPHP Symfony2, Its Play Time
Page 24: LoneStarPHP Symfony2, Its Play Time
Page 25: LoneStarPHP Symfony2, Its Play Time
Page 26: LoneStarPHP Symfony2, Its Play Time
Page 27: LoneStarPHP Symfony2, Its Play Time

What makes up Symfony2?

Configuration

Kernel Directory Structure

Symfony Framework Bundles

Symfony Components

Page 28: LoneStarPHP Symfony2, Its Play Time

Getting started with Symfony2 distributions

Similar to Linux distributions

Page 29: LoneStarPHP Symfony2, Its Play Time

http://symfony.com/download

Page 30: LoneStarPHP Symfony2, Its Play Time

# cd ~/Projects/LoneStarPHP# tar xvzf /path/to/Symfony_Standard_Vendors_2.0.0BETA4.tgz

Extract to your web directory

Page 31: LoneStarPHP Symfony2, Its Play Time

Check requirements

http://yourhost/LoneStarPHP/web/config.php

Not accessing from localhost? Remove the security check from:web/config.phpweb/app_dev.php

Page 32: LoneStarPHP Symfony2, Its Play Time

Check requirements

http://yourhost/LoneStarPHP/web/config.php

Page 33: LoneStarPHP Symfony2, Its Play Time

Check requirements

http://yourhost/LoneStarPHP/web/config.php

Page 34: LoneStarPHP Symfony2, Its Play Time

Check requirements

http://yourhost/LoneStarPHP/web/config.php

Page 35: LoneStarPHP Symfony2, Its Play Time

Check requirements

http://yourhost/LoneStarPHP/web/config.php

Page 36: LoneStarPHP Symfony2, Its Play Time

Configure the database connection

http://yourhost/LoneStarPHP/web/app_dev.php/_configurator/step/0

You can write your own configuration files instead

Page 37: LoneStarPHP Symfony2, Its Play Time

Yay, Welcome to Symfony!

http://yourhost/LoneStarPHP/web/app_dev.php

Page 38: LoneStarPHP Symfony2, Its Play Time

What makes a page?

/hello/world

A Route/hello/{name}

A ControllerA PHP function

A Response“<h1>Hello World!</h1>”

Page 39: LoneStarPHP Symfony2, Its Play Time

Step 1: Create a route

/hello/world

File: app/config/routing.yml

* Routing can also be defined with XML, PHP and as annotations

AcmeDemoBundle:LoneStar:hello maps to

Acme\DemoBundle\Controller\LoneStar::helloAction()

Page 40: LoneStarPHP Symfony2, Its Play Time

Step 2: Create a controller

/hello/world

File: src/Acme/DemoBundle/Controller/LoneStarController.php

* At its simplest, a controller is just a function

Page 41: LoneStarPHP Symfony2, Its Play Time

Step 2: Create a controller

/hello/world

File: src/Acme/DemoBundle/Controller/LoneStarController.php

File: app/config/routing.yml

Page 42: LoneStarPHP Symfony2, Its Play Time

/hello/world

http://yourhost/LoneStarPHP/web/app_dev.php/hello/world

Page 43: LoneStarPHP Symfony2, Its Play Time

Great… But HTML in controllers? &@*$%!

Page 44: LoneStarPHP Symfony2, Its Play Time

Meet Twig

http://www.twig-project.org

src/Acme/DemoBundle/Resources/views/LoneStar/hello.html.twig

src/Acme/DemoBundle/Controller/LoneStarController.php

Page 45: LoneStarPHP Symfony2, Its Play Time

Hello World!

http://yourhost/LoneStarPHP/web/app_dev.php/hello/world

Page 46: LoneStarPHP Symfony2, Its Play Time

Digging Deeper

http://yourhost/LoneStarPHP/web/app_dev.php/hello/world

Page 47: LoneStarPHP Symfony2, Its Play Time

Digging Deeper

http://yourhost/LoneStarPHP/web/app_dev.php/hello/world

Page 48: LoneStarPHP Symfony2, Its Play Time

Do less work/hello/world

File: src/Acme/DemoBundle/Controller/LoneStarController.php

Page 49: LoneStarPHP Symfony2, Its Play Time

Give it a try…