소스 검색

added ContainerAwareInterface

Fabien Potencier 14 년 전
부모
커밋
83a64df542

+ 6 - 2
src/Symfony/Bundle/FrameworkBundle/Controller/Controller.php

@@ -3,6 +3,7 @@
 namespace Symfony\Bundle\FrameworkBundle\Controller;
 
 use Symfony\Component\HttpFoundation\Response;
+use Symfony\Component\DependencyInjection\ContainerAware;
 
 /*
  * This file is part of the Symfony framework.
@@ -14,11 +15,14 @@ use Symfony\Component\HttpFoundation\Response;
  */
 
 /**
- * FrameworkBundle Controller gives you convenient access to all commonly needed services.
+ * Controller is a simple implementation of a Controller.
+ *
+ * It provides methods to common features needed in controllers
+ * and an array access to the container services.
  *
  * @author     Fabien Potencier <fabien.potencier@symfony-project.com>
  */
-class Controller extends BaseController implements \ArrayAccess
+class Controller extends ContainerAware implements \ArrayAccess
 {
     /**
      * Creates a Response instance.

+ 2 - 2
src/Symfony/Bundle/FrameworkBundle/Controller/ControllerResolver.php

@@ -9,7 +9,7 @@ use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\EventDispatcher\Event;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 use Symfony\Bundle\FrameworkBundle\Controller\ControllerNameConverter;
-use Symfony\Bundle\FrameworkBundle\Controller\ControllerInterface;
+use Symfony\Component\DependencyInjection\ContainerAwareInterface;
 
 /*
  * This file is part of the Symfony framework.
@@ -68,7 +68,7 @@ class ControllerResolver extends BaseControllerResolver
         }
 
         $controller = new $class();
-        if ($controller instanceof ControllerInterface) {
+        if ($controller instanceof ContainerAwareInterface) {
             $controller->setContainer($this->container);
         }
 

+ 4 - 6
src/Symfony/Bundle/FrameworkBundle/Controller/BaseController.php

@@ -1,8 +1,6 @@
 <?php
 
-namespace Symfony\Bundle\FrameworkBundle\Controller;
-
-use Symfony\Component\DependencyInjection\ContainerInterface;
+namespace Symfony\Component\DependencyInjection;
 
 /*
  * This file is part of the Symfony framework.
@@ -14,11 +12,11 @@ use Symfony\Component\DependencyInjection\ContainerInterface;
  */
 
 /**
- * FrameworkBundle Controller gives you convenient access to all commonly needed services.
+ * A simple implementation of ContainerAwareInterface.
  *
  * @author     Fabien Potencier <fabien.potencier@symfony-project.com>
  */
-class BaseController implements ControllerInterface
+class ContainerAware implements ContainerAwareInterface
 {
     protected $container;
 
@@ -27,7 +25,7 @@ class BaseController implements ControllerInterface
      *
      * @param ContainerInterface $container A ContainerInterface instance
      */
-    public function setContainer(ContainerInterface $container)
+    public function setContainer(ContainerInterface $container = null)
     {
         $this->container = $container;
     }

+ 5 - 7
src/Symfony/Bundle/FrameworkBundle/Controller/ControllerInterface.php

@@ -1,8 +1,6 @@
 <?php
 
-namespace Symfony\Bundle\FrameworkBundle\Controller;
-
-use Symfony\Component\DependencyInjection\ContainerInterface;
+namespace Symfony\Component\DependencyInjection;
 
 /*
  * This file is part of the Symfony framework.
@@ -14,16 +12,16 @@ use Symfony\Component\DependencyInjection\ContainerInterface;
  */
 
 /**
- * FrameworkBundle ControllerInterface is a simple interface for controllers.
+ * ContainerAwareInterface should be implemented by classes that depends on a Container.
  *
  * @author Fabien Potencier <fabien.potencier@symfony-project.com>
  */
-interface ControllerInterface
+interface ContainerAwareInterface
 {
     /**
-     * Sets the Container associated with this Controller.
+     * Sets the Container.
      *
      * @param ContainerInterface $container A ContainerInterface instance
      */
-    function setContainer(ContainerInterface $container);
+    function setContainer(ContainerInterface $container = null);
 }

+ 2 - 13
src/Symfony/Framework/Bundle/Bundle.php

@@ -2,7 +2,7 @@
 
 namespace Symfony\Framework\Bundle;
 
-use Symfony\Component\DependencyInjection\ContainerInterface;
+use Symfony\Component\DependencyInjection\ContainerAware;
 use Symfony\Component\DependencyInjection\ContainerBuilder;
 use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
 use Symfony\Component\Console\Application;
@@ -22,24 +22,13 @@ use Symfony\Component\Finder\Finder;
  *
  * @author     Fabien Potencier <fabien.potencier@symfony-project.com>
  */
-abstract class Bundle implements BundleInterface
+abstract class Bundle extends ContainerAware implements BundleInterface
 {
-    protected $container;
     protected $name;
     protected $namespacePrefix;
     protected $path;
     protected $reflection;
 
-    /**
-     * Sets the Container associated with this bundle.
-     *
-     * @param ContainerInterface $container A ContainerInterface instance
-     */
-    public function setContainer(ContainerInterface $container = null)
-    {
-        $this->container = $container;
-    }
-
     /**
      * Boots the Bundle.
      */

+ 0 - 9
src/Symfony/Framework/Bundle/BundleInterface.php

@@ -2,8 +2,6 @@
 
 namespace Symfony\Framework\Bundle;
 
-use Symfony\Component\DependencyInjection\ContainerInterface;
-
 /*
  * This file is part of the Symfony framework.
  *
@@ -29,11 +27,4 @@ interface BundleInterface
      * Shutdowns the Bundle.
      */
     public function shutdown();
-
-    /**
-     * Sets the Container associated with this bundle.
-     *
-     * @param ContainerInterface $container A ContainerInterface instance
-     */
-    public function setContainer(ContainerInterface $container);
 }

+ 3 - 8
src/Symfony/Framework/bootstrap.php

@@ -1,18 +1,15 @@
 <?php
 namespace Symfony\Framework\Bundle;
-use Symfony\Component\DependencyInjection\ContainerInterface;
+use Symfony\Component\DependencyInjection\ContainerAware;
 use Symfony\Component\DependencyInjection\ContainerBuilder;
 use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
 use Symfony\Component\Console\Application;
 use Symfony\Component\Finder\Finder;
-abstract class Bundle implements BundleInterface {
-    protected $container;
+abstract class Bundle extends ContainerAware implements BundleInterface {
     protected $name;
     protected $namespacePrefix;
     protected $path;
     protected $reflection;
-    public function setContainer(ContainerInterface $container = null) {
-        $this->container = $container; }
     public function boot() { }
     public function shutdown() { }
     public function getName() {
@@ -58,11 +55,9 @@ abstract class Bundle implements BundleInterface {
         $this->reflection = new \ReflectionObject($this);
         $this->path = dirname($this->reflection->getFilename()); } }
 namespace Symfony\Framework\Bundle;
-use Symfony\Component\DependencyInjection\ContainerInterface;
 interface BundleInterface {
     public function boot();
-    public function shutdown();
-    public function setContainer(ContainerInterface $container); }
+    public function shutdown(); }
 namespace Symfony\Framework;
 use Symfony\Framework\Bundle\Bundle;
 class KernelBundle extends Bundle {