1. 22 Sep, 2011 2 commits
    • Fabien Potencier's avatar
      replaced the current way to create reusable applications · c006b758
      Fabien Potencier authored
      The main idea is the move of all controller-related code from Application to
      ControllerCollection. Reusable applications are now instances of
      ControllerCollection instead of Application instances. That way, there is only
      one "true" Application instance, and thus only one Pimple container.
      
      Reusable applications can now be packaged as classes, like Extensions. It
      allows to package services and controllers into one extension.
      
      Benefits:
      
       * less hackish (proper wrapping in a class, no need to add a temporary route, no need for the LazyApplication anymore)
       * less code
       * simple and straightforward code (no magic anymore)
       * less side-effects
       * fix most severe/annoying limitations of the current implementation (from what I've read in the mailing-list and the Github issues)
       * better encapsulation of "reusable" applications
       * better separation of concerns
       * simple usage is exactly the same as before (as Application proxies the ControllerCollection methods for the "default" app)
      
      Upgrading is as simple as replacing Application with ControllerCollection for
      reusable apps (note that a reusable app is not "standalone" anymore):
      
          $mounted = new ControllerCollection();
          $mounted->get('/bar', function() { return 'foo'; });
      
          $app->mount('/foo', $mounted);
      
      A better way now is to create a class:
      
          use Silex\ApplicationExtensionInterface;
      
          class FooApplication implements ApplicationExtensionInterface
          {
              public function connect(Application $app)
              {
                  $controllers = new ControllerCollection();
                  $controllers->get('/bar', function() { return 'foo'; });
      
                  return $controllers;
              }
          }
      
          $app->mount('/foo', new FooApplication());
      
      Note that you get the "master" application, so that you have access to the
      services defined here.
      
      If you want to register services, you can do so in the same extension:
      
          use Silex\ApplicationExtensionInterface;
          use Silex\ExtensionInterface;
      
          class FooApplication implements ApplicationExtensionInterface, ExtensionInterface
          {
              public function register(Application $app)
              {
                  $app['some_service'] = ...;
              }
      
              public function connect(Application $app)
              {
                  $controllers = new ControllerCollection();
                  $controllers->get('/bar', function(Application $app) {
                      $app['some_service']->...;
      
                      return 'foo';
                  });
      
                  return $controllers;
              }
          }
      
          $ext = new FooApplication();
          $app->register($ext);
          $app->mount('/foo', $ext);
      c006b758
    • Fabien Potencier's avatar
      made the flush mechanism more flexible · 24e01cf2
      Fabien Potencier authored
      24e01cf2
  2. 21 Sep, 2011 1 commit
  3. 20 Sep, 2011 2 commits
    • Fabien Potencier's avatar
      merged branch igorw/symfony-bridges-docs (PR #173) · 3d14ac4e
      Fabien Potencier authored
      Commits
      -------
      
      394ea192 [docs] basic documentation for the SymfonyBridgesExtension
      
      Discussion
      ----------
      
      [docs] basic documentation for the SymfonyBridgesExtension
      
      there are no extensive usage examples, but it's a start.
      3d14ac4e
    • Fabien Potencier's avatar
      merged branch igorw/swiftmailer-docs (PR #172) · 15afe4b5
      Fabien Potencier authored
      Commits
      -------
      
      d4a96c35 [docs] adjust path yet again, to point to /lib/classes
      b482107a [docs] add some missing docs for internal swiftmailer services
      c4957ef5 [docs] remove unneeded transport and mailer from swiftmailer docs
      f210d1ea Merge branch 'master' into swiftmailer-docs
      50fddd1c [docs] remove duplicate 'a'
      62a31c0f [docs] rewrite usage POST example to not use Swiftmailer
      3c92b812 [docs] documentation for SwiftmailerExtension
      
      Discussion
      ----------
      
      Swiftmailer docs
      
      Finally got round to finishing this one.
      
      * Adds documentation for the SwiftmailerExtension.
      * Changes the `POST` example in usage to use `mail()` instead of Swiftmailer.
      
      ---------------------------------------------------------------------------
      
      by igorw at 2011/09/18 07:25:43 -0700
      
      Should be complete now.
      15afe4b5
  4. 18 Sep, 2011 12 commits
  5. 15 Sep, 2011 2 commits
  6. 13 Sep, 2011 4 commits
  7. 10 Sep, 2011 2 commits
  8. 01 Sep, 2011 1 commit
  9. 29 Aug, 2011 1 commit
  10. 26 Aug, 2011 2 commits
  11. 25 Aug, 2011 2 commits
  12. 24 Aug, 2011 7 commits
  13. 21 Aug, 2011 1 commit
  14. 20 Aug, 2011 1 commit