The path to symfony in the USA
This talk will examine how symfony andthe community around symfony has evolvedsince 2006. From the release of theinitial s...
Dustin Whittle  dustinwhittle.com
How I got started
Consulting        dustinwhittle.com
Yahoo        yahoo.com
delicious.com
answers.yahoo.com
pulse.yahoo.com
developer.yahoo.com
sensiolabs.com
Sensio Labs launches in USAJoining Sensio Labs in a partnership to launch services in USA  Opening an office in San Franci...
guru.sensiolabs.com
trainings.sensiolabs.com
symfony-project.org
Symfony in the beginningReleased open source by Sensio Labs in October 2005Built from years of real world experience in de...
Symfony 0.xDeveloped the core philosophy  Don’t reinvent the wheel  Keep it simple stupid  Don’t repeat yourself  Invest i...
Symfony 0.xDefined the core problem set / features  Model - View - Controller  Configuration - YAML + Multiple Environment...
Symfony 0.xThe start of an open source community  Launch of symfony-project.com    Initial tutorials / documentation    Su...
symfony-project.com
symfony 1.0
symfony-project.org/book/1_0
askeet.com
symfony 1.0 was good enough    for Yahoo! to adopt
bookmarks.yahoo.com
delicious.com
answers.yahoo.com
current.com
symfony 1.x
The path to symfony 1.2The original symfony 2!  Introduction of the event dispatcher  Introduction of new sub frameworks  ...
The path to symfony 1.2The community starts to mature    Core team has dedicated release / community managers    The commu...
jobeet.org
symfonians.org
symfony-check.org
symfony 1.4
The path to symfony 1.4A stable + tested version of symfony  Removed deprecated code (kept in 1.3 instead)  Long Term Supp...
symfony 1.4 Documentation     symfony-project.org/doc
SymfonyLive        symfony-live.com
symfonyday.com
bit.ly/sf-symfony-meetup
symfony 1.x is used on many web     applications from large  companies to small startups
pulse.yahoo.com
ted.com
plancast.com
dogster.com
demo.apostrophenow.com
symfony-reloaded.org
symfony-reloaded.org
Symfony 2.xLearning from experience  Developed from scratch for performance and flexibility  PHP 5.3 - Support for namespa...
Symfony 2.xEvolved the philosophy  Dependency Injection Container + Event Dispatcher  Design by interface for a stable API...
Symfony 2.xMore flexibility  Configuration: YAML, XML, PHP  Templating: Twig or PHP  ORM: Doctrine or PropelMore features ...
Symfony 2.xNoSQL via Doctrine 2  MongoDB  CouchDBBetter testing via PHPUnit  Jenkins / phpUnderControl Integration  Seleni...
Symfony 2.xGitHub vs SVNBetter core team management  Weekly IRC Meetings  Hackdays / Sprints / Meetups
github.com/symfony/symfony
docs.symfony-reloaded.org
symfony2bundles.org
Symfony 2 is so good it is already used in production
dailymotion.com
lexpress.fr
shopopensky.com
exercise.com
weka-entertainment.com
control.servergrove.com
From symfony 1 to Symfony 2
It has never been easier to get started with symfony
aws.amazon.com/free
zerigo.com
cloudflare.com
The symfony 1.x sandboxwget symfony-project.org/get/sf_sandbox_1_4.tgz          tar -xzf sf_sandbox_1_4.tgz
./symfony
Available tasks:  :help                         Displays help for a task  :list                         Lists tasksapp  :r...
Sandbox/apps/frontend/config/settings.yml# You can find more information about this file on the symfony website:# http://w...
./symfony generate:module frontend hello
localhost/sandbox/frontend_dev.php/hello/sf
sandbox/apps/frontend/config/routing.yml# You can find more information about this file on the symfony website:# http://ww...
sandbox/apps/frontend/modules/hello/actions/actions.class.php<?phpclass helloActions extends sfActions{  /**   * Executes ...
sandbox/apps/frontend/modules/hello/templates/indexSuccess.php<h1>Hello Application</h1>Hello <?php echo $name; ?>!
sandbox/apps/frontend/templates/layout.php<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org...
sandbox/test/functional/frontend/helloActionsTest.php<?phpinclude(dirname(__FILE__)./../../bootstrap/functional.php);$brow...
./symfony test:all
The symfony 2.x sandboxwget symfony-reloaded.org/downloads/sandbox_2_0_PR6.tgz            tar -xzf sandbox_2_0_PR6.tgz
localhost/sandbox/check.php
localhost/sandbox/app_dev.php/
./app/console
Available commands:  help                          Displays help for a command (?)  list                          Lists co...
sandbox/app/config/config.ymlapp.config:    charset:        UTF-8    error_handler: null    csrf_protection:        enable...
localhost/sandbox/app_dev.php/hello/sf
sandbox/app/config/routing.ymlhomepage:    pattern: /    defaults: { _controller: FrameworkBundle:Default:index }hello:   ...
sandbox/src/Sensio/HelloBundle/Controller/HelloController.php<?phpnamespace SensioHelloBundleController;use SymfonyBundleF...
sandbox/app/views/base.html.twig<!DOCTYPE html><html>    <head>        <meta http-equiv="Content-Type" content="text/html;...
sandbox/src/Sensio/HelloBundle/Resources/views/layout.html.twig{% extends "::base.html.twig" %}{% block body %}    <h1>Hel...
localhost/sandbox/app_dev.php/_profiler/{token}
sandbox/src/Sensio/HelloBundle/Tests/Controller/HelloController.php<?phpnamespace SensioHelloBundleTestsController;use Sym...
phpunit -c app/phpunit.xml.dist
A community of symfony specialists
punkave.com
knplabs.com
liip.ch
clever-age.fr
interlutions.de
ideato.it
osscube.com
solutionset.com
servergrove.com
pagodabox.com/private-beta
symfonyexperts.com
SymfonyLive        symfony-live.com
Having a large community ofspecialists means more contributorsand better services.The community moves the projectfaster.
Want to contribute?Join the community!  http://github.com/symfonyContribute: code, documentation, tests, translations, bun...
Everyone is Hiring!
Questions?
Enjoy Symfony Live 2011
See you in Paris!
The Path to Symfony in the USA
The Path to Symfony in the USA
The Path to Symfony in the USA
Upcoming SlideShare
Loading in...5
×

The Path to Symfony in the USA

13,474

Published on

This talk will examine how symfony and the community around symfony has evolved since 2006. From the release of the initial symfony code to symfony 2.0, and all of the community milestones along the way. The focus of this talk is on how application development has evolved and how symfony and the community have kept pace over the years.

- symfony-reloaded.org
- symfony-project.org
- http://joind.in/2592

Published in: Technology, News & Politics
1 Comment
12 Likes
Statistics
Notes
No Downloads
Views
Total Views
13,474
On Slideshare
0
From Embeds
0
Number of Embeds
19
Actions
Shares
0
Downloads
167
Comments
1
Likes
12
Embeds 0
No embeds

No notes for slide

The Path to Symfony in the USA

  1. 1. The path to symfony in the USA
  2. 2. This talk will examine how symfony andthe community around symfony has evolvedsince 2006. From the release of theinitial symfony code to symfony 2.0, andall of the community milestones alongthe way. The focus of this talk is onhow application development has evolvedand how symfony and the community havekept pace over the years.
  3. 3. Dustin Whittle dustinwhittle.com
  4. 4. How I got started
  5. 5. Consulting dustinwhittle.com
  6. 6. Yahoo yahoo.com
  7. 7. delicious.com
  8. 8. answers.yahoo.com
  9. 9. pulse.yahoo.com
  10. 10. developer.yahoo.com
  11. 11. sensiolabs.com
  12. 12. Sensio Labs launches in USAJoining Sensio Labs in a partnership to launch services in USA Opening an office in San Francisco Project Consulting Best Practices Consulting / Audits Security Audits Training from open source experts symfony 1, Symfony 2, Doctrine 1, Doctrine 2, PHPUnit
  13. 13. guru.sensiolabs.com
  14. 14. trainings.sensiolabs.com
  15. 15. symfony-project.org
  16. 16. Symfony in the beginningReleased open source by Sensio Labs in October 2005Built from years of real world experience in developing webapplicationsBuilt to improve developer productivity by solving commonweb problems
  17. 17. Symfony 0.xDeveloped the core philosophy Don’t reinvent the wheel Keep it simple stupid Don’t repeat yourself Invest in unit + functional testing Invest in quality documentation Favor convention over configuration
  18. 18. Symfony 0.xDefined the core problem set / features Model - View - Controller Configuration - YAML + Multiple Environments ORM Integration - CRUD / Admin Generators Routing, Forms, Security, I18n, Caching Developer tools - logging, exceptions, debug toolbar
  19. 19. Symfony 0.xThe start of an open source community Launch of symfony-project.com Initial tutorials / documentation Support channels on IRC, Forum, Mailing lists Established a core team with distinct leadership from Fabien A way to contribute back on Trac - feedback, bugs, patches
  20. 20. symfony-project.com
  21. 21. symfony 1.0
  22. 22. symfony-project.org/book/1_0
  23. 23. askeet.com
  24. 24. symfony 1.0 was good enough for Yahoo! to adopt
  25. 25. bookmarks.yahoo.com
  26. 26. delicious.com
  27. 27. answers.yahoo.com
  28. 28. current.com
  29. 29. symfony 1.x
  30. 30. The path to symfony 1.2The original symfony 2! Introduction of the event dispatcher Introduction of new sub frameworks Forms / Caching / Tasks Swiftmailer Refactored major components Configuration, Routing, I18n, Admin Generator, Plugins Added support for Doctrine ORM
  31. 31. The path to symfony 1.2The community starts to mature Core team has dedicated release / community managers The community gives back to symfony Plugins + Patches + Documentation + Translations Case studies + Evangelism Community events Our first official meetup at SymfonyCamp
  32. 32. jobeet.org
  33. 33. symfonians.org
  34. 34. symfony-check.org
  35. 35. symfony 1.4
  36. 36. The path to symfony 1.4A stable + tested version of symfony Removed deprecated code (kept in 1.3 instead) Long Term SupportA healthy community supports itself Active mailing lists where users support each other Documentation - Translated into six languages Events - SymfonyLive + SymfonyDay
  37. 37. symfony 1.4 Documentation symfony-project.org/doc
  38. 38. SymfonyLive symfony-live.com
  39. 39. symfonyday.com
  40. 40. bit.ly/sf-symfony-meetup
  41. 41. symfony 1.x is used on many web applications from large companies to small startups
  42. 42. pulse.yahoo.com
  43. 43. ted.com
  44. 44. plancast.com
  45. 45. dogster.com
  46. 46. demo.apostrophenow.com
  47. 47. symfony-reloaded.org
  48. 48. symfony-reloaded.org
  49. 49. Symfony 2.xLearning from experience Developed from scratch for performance and flexibility PHP 5.3 - Support for namespaces and lambdasBetter Development Model A collection of independent components A framework for frameworks / full-stack frameworkBetter Community Github enables collaboration + contributions
  50. 50. Symfony 2.xEvolved the philosophy Dependency Injection Container + Event Dispatcher Design by interface for a stable API Less Magic = Favor explicit over implicitDon’t reinvent the wheel Doctrine 2 (DBAL / ORM / ODM) Zend Framework 2 (Logger) PHPUnit 3.5.x
  51. 51. Symfony 2.xMore flexibility Configuration: YAML, XML, PHP Templating: Twig or PHP ORM: Doctrine or PropelMore features HTTP Cache ACL Security Asset Management
  52. 52. Symfony 2.xNoSQL via Doctrine 2 MongoDB CouchDBBetter testing via PHPUnit Jenkins / phpUnderControl Integration Selenium Support Code Coverage Reporting
  53. 53. Symfony 2.xGitHub vs SVNBetter core team management Weekly IRC Meetings Hackdays / Sprints / Meetups
  54. 54. github.com/symfony/symfony
  55. 55. docs.symfony-reloaded.org
  56. 56. symfony2bundles.org
  57. 57. Symfony 2 is so good it is already used in production
  58. 58. dailymotion.com
  59. 59. lexpress.fr
  60. 60. shopopensky.com
  61. 61. exercise.com
  62. 62. weka-entertainment.com
  63. 63. control.servergrove.com
  64. 64. From symfony 1 to Symfony 2
  65. 65. It has never been easier to get started with symfony
  66. 66. aws.amazon.com/free
  67. 67. zerigo.com
  68. 68. cloudflare.com
  69. 69. The symfony 1.x sandboxwget symfony-project.org/get/sf_sandbox_1_4.tgz tar -xzf sf_sandbox_1_4.tgz
  70. 70. ./symfony
  71. 71. Available tasks: :help Displays help for a task :list Lists tasksapp :routes Displays current routes for an applicationcache :clear Clears the cache (cc)configure :author Configure project author :database Configure database DSNdoctrine :build Generate code based on your schema :build-db Creates database for current model (doctrine:create-db) :build-filters Creates filter form classes for the current model :build-forms Creates form classes for the current model :build-model Creates classes for the current model :build-schema Creates a schema from an existing database :build-sql Creates SQL for the current model :clean-model-files Delete all generated model classes for models which no longer exist in your YAML :create-model-tables Drop and recreate tables for specified models. :data-dump Dumps data to the fixtures directory :data-load Loads YAML fixture data :delete-model-files Delete all the related auto generated files for a given model name. :dql Execute a DQL query and view the results :drop-db Drops database for current model :generate-admin Generates a Doctrine admin module :generate-migration Generate migration class :generate-migrations-db Generate migration classes from existing database connections :generate-migrations-diff Generate migration classes by producing a diff between your old and new schema. :generate-migrations-models Generate migration classes from an existing set of models :generate-module Generates a Doctrine module :generate-module-for-route Generates a Doctrine module for a route definition :insert-sql Inserts SQL for current model :migrate Migrates database to current/specified versiongenerate :app Generates a new application :module Generates a new module :project Generates a new project :task Creates a skeleton class for a new task
  72. 72. Sandbox/apps/frontend/config/settings.yml# You can find more information about this file on the symfony website:# http://www.symfony-project.org/reference/1_4/en/04-Settingsprod: .settings: no_script_name: true logging_enabled: falsedev: .settings: error_reporting: <?php echo (E_ALL | E_STRICT)."n" ?> web_debug: true cache: false no_script_name: false etag: falsetest: .settings: error_reporting: <?php echo ((E_ALL | E_STRICT) ^ E_NOTICE)."n" ?> cache: false web_debug: false no_script_name: false etag: falseall: .settings: # Form security secret (CSRF protection) csrf_secret: 1b1783c5ae00e1d90926fb970d5df01c40c8ab98 # Output escaping settings escaping_strategy: true escaping_method: ESC_SPECIALCHARS # Enable the database manager use_database: true
  73. 73. ./symfony generate:module frontend hello
  74. 74. localhost/sandbox/frontend_dev.php/hello/sf
  75. 75. sandbox/apps/frontend/config/routing.yml# You can find more information about this file on the symfony website:# http://www.symfony-project.org/reference/1_4/en/10-Routing# hello module ruleshello: url: /hello/:name param: { module: hello, action: index }# default ruleshomepage: url: / param: { module: default, action: index }
  76. 76. sandbox/apps/frontend/modules/hello/actions/actions.class.php<?phpclass helloActions extends sfActions{ /** * Executes index action * * @param sfRequest $request A request object */ public function executeIndex(sfWebRequest $request) { $this->name = $request->getParameter(name, World); }}
  77. 77. sandbox/apps/frontend/modules/hello/templates/indexSuccess.php<h1>Hello Application</h1>Hello <?php echo $name; ?>!
  78. 78. sandbox/apps/frontend/templates/layout.php<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <?php include_http_metas() ?> <?php include_metas() ?> <?php include_title() ?> <link rel="shortcut icon" href="/favicon.ico" /> <?php include_stylesheets() ?> <?php include_javascripts() ?> </head> <body> <?php echo $sf_content ?> </body></html>
  79. 79. sandbox/test/functional/frontend/helloActionsTest.php<?phpinclude(dirname(__FILE__)./../../bootstrap/functional.php);$browser = new sfTestFunctional(new sfBrowser());$browser-> get(/hello/sf)-> with(request)->begin()-> isParameter(module, hello)-> isParameter(action, index)-> end()-> with(response)->begin()-> isStatusCode(200)-> checkElement(body, /Hello sf!/)-> end();
  80. 80. ./symfony test:all
  81. 81. The symfony 2.x sandboxwget symfony-reloaded.org/downloads/sandbox_2_0_PR6.tgz tar -xzf sandbox_2_0_PR6.tgz
  82. 82. localhost/sandbox/check.php
  83. 83. localhost/sandbox/app_dev.php/
  84. 84. ./app/console
  85. 85. Available commands: help Displays help for a command (?) list Lists commandsassets :installcache :warmup Warms up an empty cachedoctrine :ensure-production-settings Verify that Doctrine is properly configured for a production environment.doctrine:cache :clear-metadata Clear all metadata cache for a entity manager. :clear-query Clear all query cache for a entity manager. :clear-result Clear result cache for a entity manager.doctrine:data :load Load data fixtures to your database.doctrine:database :create Create the configured databases. :drop Drop the configured databases.doctrine:generate :entities Generate entity classes and method stubs from your mapping information. :entity Generate a new Doctrine entity inside a bundle. :proxies Generates proxy classes for entity classes. :repositories Generate repository classes from your mapping information.doctrine:mapping :convert Convert mapping information between supported formats. :import Import mapping information from an existing database. :info Show basic information about all mapped entities.doctrine:query :dql Executes arbitrary DQL directly from the command line. :sql Executes arbitrary SQL directly from the command line.doctrine:schema :create Processes the schema and either create it directly on EntityManager Storage Connection :drop Drop the complete database schema of EntityManager Storage Connection :update Processes the schema and either update the database schema of EntityManager Storageinit :bundlerouter :debug Displays current routes for an application :dump-apache Dumps all routes as Apache rewrite rules
  86. 86. sandbox/app/config/config.ymlapp.config: charset: UTF-8 error_handler: null csrf_protection: enabled: true secret: xxxxxxxxxx router: { resource: "%kernel.root_dir%/config/routing.yml" } validation: { enabled: true, annotations: true } templating: { engines: [twig], assets_version: 1.0 } session: default_locale: en lifetime: 3600 auto_start: truetwig.config: debug: %kernel.debug% strict_variables: %kernel.debug%doctrine.dbal: dbname: xxxxxxxx user: xxxxxxxx password: ~ logging: %kernel.debug%doctrine.orm: auto_generate_proxy_classes: %kernel.debug% mappings: HelloBundle: ~swiftmailer.config: transport: gmail username: xxxxxxxx password: xxxxxxxx
  87. 87. localhost/sandbox/app_dev.php/hello/sf
  88. 88. sandbox/app/config/routing.ymlhomepage: pattern: / defaults: { _controller: FrameworkBundle:Default:index }hello: resource: @HelloBundle/Resources/config/routing.ymlsandbox/src/Sensio/HelloBundle/Resources/config/routing.ymlhello: pattern: /hello/{name} defaults: { _controller: HelloBundle:Hello:index }
  89. 89. sandbox/src/Sensio/HelloBundle/Controller/HelloController.php<?phpnamespace SensioHelloBundleController;use SymfonyBundleFrameworkBundleControllerController;class HelloController extends Controller{ public function indexAction($name) { return $this->render(‘HelloBundle:Hello:index.html.twig,array(name => $name)); }}
  90. 90. sandbox/app/views/base.html.twig<!DOCTYPE html><html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <title>{% block title %}Hello Application{% endblock %}</title> </head> <body> {% block body %}{% endblock %} </body></html>
  91. 91. sandbox/src/Sensio/HelloBundle/Resources/views/layout.html.twig{% extends "::base.html.twig" %}{% block body %} <h1>Hello Application</h1> {% block content %}{% endblock %}{% endblock %}sandbox/src/Sensio/HelloBundle/Resources/views/Hello/index.html.twig{% extends "HelloBundle::layout.html.twig" %}{% block content %} Hello {{ name }}!{% endblock %}
  92. 92. localhost/sandbox/app_dev.php/_profiler/{token}
  93. 93. sandbox/src/Sensio/HelloBundle/Tests/Controller/HelloController.php<?phpnamespace SensioHelloBundleTestsController;use SymfonyBundleFrameworkBundleTestWebTestCase;class HelloControllerTest extends WebTestCase{ public function testIndex() { $client = $this->createClient(); $crawler = $client->request(GET, /hello/Fabien); $this->assertTrue($crawler->filter(html:contains("Hello Fabien"))->count() > 0); }}
  94. 94. phpunit -c app/phpunit.xml.dist
  95. 95. A community of symfony specialists
  96. 96. punkave.com
  97. 97. knplabs.com
  98. 98. liip.ch
  99. 99. clever-age.fr
  100. 100. interlutions.de
  101. 101. ideato.it
  102. 102. osscube.com
  103. 103. solutionset.com
  104. 104. servergrove.com
  105. 105. pagodabox.com/private-beta
  106. 106. symfonyexperts.com
  107. 107. SymfonyLive symfony-live.com
  108. 108. Having a large community ofspecialists means more contributorsand better services.The community moves the projectfaster.
  109. 109. Want to contribute?Join the community! http://github.com/symfonyContribute: code, documentation, tests, translations, bundles
  110. 110. Everyone is Hiring!
  111. 111. Questions?
  112. 112. Enjoy Symfony Live 2011
  113. 113. See you in Paris!
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×