Jelajahi Sumber

renamed request path property to request attributes

Fabien Potencier 15 tahun lalu
induk
melakukan
7dc5ae3808

+ 5 - 5
src/Symfony/Bundle/FrameworkBundle/Controller/ControllerManager.php

@@ -128,7 +128,7 @@ class ControllerManager implements ControllerManagerInterface
      */
     public function getController(Request $request)
     {
-        if (!$controller = $request->path->get('_controller')) {
+        if (!$controller = $request->attributes->get('_controller')) {
             if (null !== $this->logger) {
                 $this->logger->err('Unable to look for the controller as the "_controller" parameter is missing');
             }
@@ -192,16 +192,16 @@ class ControllerManager implements ControllerManagerInterface
      */
     public function getMethodArguments(Request $request, $controller)
     {
-        $event = $this->container->get('event_dispatcher')->filter(new Event($this, 'controller_manager.filter_controller_arguments', array('controller' => $controller, 'request' => $request)), $request->path->all());
-        $path = $event->getReturnValue();
+        $event = $this->container->get('event_dispatcher')->filter(new Event($this, 'controller_manager.filter_controller_arguments', array('controller' => $controller, 'request' => $request)), $request->attributes->all());
+        $attributes = $event->getReturnValue();
 
         list($controller, $method) = $controller;
 
         $r = new \ReflectionObject($controller);
         $arguments = array();
         foreach ($r->getMethod($method)->getParameters() as $param) {
-            if (array_key_exists($param->getName(), $path)) {
-                $arguments[] = $path[$param->getName()];
+            if (array_key_exists($param->getName(), $attributes)) {
+                $arguments[] = $attributes[$param->getName()];
             } elseif ($param->isDefaultValueAvailable()) {
                 $arguments[] = $param->getDefaultValue();
             } else {

+ 4 - 4
src/Symfony/Bundle/FrameworkBundle/Controller/InternalController.php

@@ -26,12 +26,12 @@ class InternalController extends Controller
     {
         $request = $this->getRequest();
 
-        if ('none' !== $request->path->get('path'))
+        if ('none' !== $request->attributes->get('path'))
         {
-            parse_str($request->path->get('path'), $tmp);
-            $request->path->add($tmp);
+            parse_str($request->attributes->get('path'), $tmp);
+            $request->attributes->add($tmp);
         }
 
-        return $this->forward($request->path->get('controller'), $request->path->all(), $request->query->all());
+        return $this->forward($request->attributes->get('controller'), $request->attributes->all(), $request->query->all());
     }
 }

+ 1 - 1
src/Symfony/Bundle/FrameworkBundle/DataCollector/AppDataCollector.php

@@ -35,7 +35,7 @@ class AppDataCollector extends DataCollector
         $request = $this->container->getRequestService();
 
         $this->data = array(
-            'route'        => $request->path->get('_route') ? $request->path->get('_route') : '<span style="color: #a33">NONE</span>',
+            'route'        => $request->attributes->get('_route') ? $request->attributes->get('_route') : '<span style="color: #a33">NONE</span>',
             'format'       => $request->getRequestFormat(),
             'content_type' => $this->profiler->getResponse()->headers->get('Content-Type') ? $this->profiler->getResponse()->headers->get('Content-Type') : 'text/html',
             'code'         => $this->profiler->getResponse()->getStatusCode(),

+ 2 - 2
src/Symfony/Bundle/FrameworkBundle/RequestListener.php

@@ -63,7 +63,7 @@ class RequestListener
             ));
         }
 
-        if ($request->path->has('_controller')) {
+        if ($request->attributes->has('_controller')) {
             return;
         }
 
@@ -72,7 +72,7 @@ class RequestListener
                 $this->logger->info(sprintf('Matched route "%s" (parameters: %s)', $parameters['_route'], str_replace("\n", '', var_export($parameters, true))));
             }
 
-            $request->path->replace($parameters);
+            $request->attributes->replace($parameters);
         } elseif (null !== $this->logger) {
             $this->logger->err(sprintf('No route found for %s', $request->getPathInfo()));
         }

+ 36 - 33
src/Symfony/Components/HttpFoundation/Request.php

@@ -22,7 +22,10 @@ use Symfony\Components\HttpFoundation\SessionStorage\NativeSessionStorage;
  */
 class Request
 {
-    public $path;
+    /**
+     * @var \Symfony\Components\HttpFoundation\ParameterBag
+     */
+    public $attributes;
 
     /**
      * @var \Symfony\Components\HttpFoundation\ParameterBag
@@ -70,16 +73,16 @@ class Request
     /**
      * Constructor.
      *
-     * @param array $query   The GET parameters
-     * @param array $request The POST parameters
-     * @param array $path    The parameters parsed from the PATH_INFO (see Router)
-     * @param array $cookies The COOKIE parameters
-     * @param array $files   The FILES parameters
-     * @param array $server  The SERVER parameters
+     * @param array $query      The GET parameters
+     * @param array $request    The POST parameters
+     * @param array $attributes The request attributes (parameters parsed from the PATH_INFO, ...)
+     * @param array $cookies    The COOKIE parameters
+     * @param array $files      The FILES parameters
+     * @param array $server     The SERVER parameters
      */
-    public function __construct(array $query = null, array $request = null, array $path = null, array $cookies = null, array $files = null, array $server = null)
+    public function __construct(array $query = null, array $request = null, array $attributes = null, array $cookies = null, array $files = null, array $server = null)
     {
-        $this->initialize($query, $request, $path, $cookies, $files, $server);
+        $this->initialize($query, $request, $attributes, $cookies, $files, $server);
     }
 
     /**
@@ -87,18 +90,18 @@ class Request
      *
      * This method also re-initializes all properties.
      *
-     * @param array $query   The GET parameters
-     * @param array $request The POST parameters
-     * @param array $path    The parameters parsed from the PATH_INFO
-     * @param array $cookies The COOKIE parameters
-     * @param array $files   The FILES parameters
-     * @param array $server  The SERVER parameters
+     * @param array $query      The GET parameters
+     * @param array $request    The POST parameters
+     * @param array $attributes The request attributes (parameters parsed from the PATH_INFO, ...)
+     * @param array $cookies    The COOKIE parameters
+     * @param array $files      The FILES parameters
+     * @param array $server     The SERVER parameters
      */
-    public function initialize(array $query = null, array $request = null, array $path = null, array $cookies = null, array $files = null, array $server = null)
+    public function initialize(array $query = null, array $request = null, array $attributes = null, array $cookies = null, array $files = null, array $server = null)
     {
         $this->request = new ParameterBag(null !== $request ? $request : $_POST);
         $this->query = new ParameterBag(null !== $query ? $query : $_GET);
-        $this->path = new ParameterBag(null !== $path ? $path : array());
+        $this->attributes = new ParameterBag(null !== $attributes ? $attributes : array());
         $this->cookies = new ParameterBag(null !== $cookies ? $cookies : $_COOKIE);
         $this->files = new ParameterBag($this->convertFileInformation(null !== $files ? $files : $_FILES));
         $this->server = new ParameterBag(null !== $server ? $server : $_SERVER);
@@ -176,20 +179,20 @@ class Request
     /**
      * Clones a request and overrides some of its parameters.
      *
-     * @param array $query   The GET parameters
-     * @param array $request The POST parameters
-     * @param array $path    The parameters parsed from the PATH_INFO
-     * @param array $cookies The COOKIE parameters
-     * @param array $files   The FILES parameters
-     * @param array $server  The SERVER parameters
+     * @param array $query      The GET parameters
+     * @param array $request    The POST parameters
+     * @param array $attributes The request attributes (parameters parsed from the PATH_INFO, ...)
+     * @param array $cookies    The COOKIE parameters
+     * @param array $files      The FILES parameters
+     * @param array $server     The SERVER parameters
      */
-    public function duplicate(array $query = null, array $request = null, array $path = null, array $cookies = null, array $files = null, array $server = null)
+    public function duplicate(array $query = null, array $request = null, array $attributes = null, array $cookies = null, array $files = null, array $server = null)
     {
         $dup = clone $this;
         $dup->initialize(
             null !== $query ? $query : $this->query->all(),
             null !== $request ? $request : $this->request->all(),
-            null !== $path ? $path : $this->path->all(),
+            null !== $attributes ? $attributes : $this->attributes->all(),
             null !== $cookies ? $cookies : $this->cookies->all(),
             null !== $files ? $files : $this->files->all(),
             null !== $server ? $server : $this->server->all()
@@ -200,13 +203,13 @@ class Request
 
     public function __clone()
     {
-        $this->query   = clone $this->query;
-        $this->request = clone $this->request;
-        $this->path    = clone $this->path;
-        $this->cookies = clone $this->cookies;
-        $this->files   = clone $this->files;
-        $this->server  = clone $this->server;
-        $this->headers = clone $this->headers;
+        $this->query      = clone $this->query;
+        $this->request    = clone $this->request;
+        $this->attributes = clone $this->attributes;
+        $this->cookies    = clone $this->cookies;
+        $this->files      = clone $this->files;
+        $this->server     = clone $this->server;
+        $this->headers    = clone $this->headers;
     }
 
     /**
@@ -234,7 +237,7 @@ class Request
     // This method is mainly useful for libraries that want to provide some flexibility
     public function get($key, $default = null)
     {
-        return $this->query->get($key, $this->path->get($key, $this->request->get($key, $default)));
+        return $this->query->get($key, $this->attributes->get($key, $this->request->get($key, $default)));
     }
 
     public function getSession()

+ 3 - 3
tests/Symfony/Tests/Components/HttpFoundation/RequestTest.php

@@ -37,7 +37,7 @@ class RequestTest extends \PHPUnit_Framework_TestCase
         $this->assertEquals('bar', $request->request->get('foo'), '->initialize() takes an array of request parameters as its second argument');
 
         $request->initialize(null, null, array('foo' => 'bar'));
-        $this->assertEquals('bar', $request->path->get('foo'), '->initialize() takes an array of path parameters as its thrid argument');
+        $this->assertEquals('bar', $request->attributes->get('foo'), '->initialize() takes an array of attributes as its thrid argument');
 
         $request->initialize(null, null, null, null, null, array('HTTP_FOO' => 'bar'));
         $this->assertEquals('bar', $request->headers->get('FOO'), '->initialize() takes an array of HTTP headers as its fourth argument');
@@ -53,14 +53,14 @@ class RequestTest extends \PHPUnit_Framework_TestCase
 
         $this->assertEquals($request->query->all(), $dup->query->all(), '->duplicate() duplicates a request an copy the current query parameters');
         $this->assertEquals($request->request->all(), $dup->request->all(), '->duplicate() duplicates a request an copy the current request parameters');
-        $this->assertEquals($request->path->all(), $dup->path->all(), '->duplicate() duplicates a request an copy the current path parameters');
+        $this->assertEquals($request->attributes->all(), $dup->attributes->all(), '->duplicate() duplicates a request an copy the current attributes');
         $this->assertEquals($request->headers->all(), $dup->headers->all(), '->duplicate() duplicates a request an copy the current HTTP headers');
 
         $dup = $request->duplicate(array('foo' => 'foobar'), array('foo' => 'foobar'), array('foo' => 'foobar'), array(), array(), array('HTTP_FOO' => 'foobar'));
 
         $this->assertEquals(array('foo' => 'foobar'), $dup->query->all(), '->duplicate() overrides the query parameters if provided');
         $this->assertEquals(array('foo' => 'foobar'), $dup->request->all(), '->duplicate() overrides the request parameters if provided');
-        $this->assertEquals(array('foo' => 'foobar'), $dup->path->all(), '->duplicate() overrides the path parameters if provided');
+        $this->assertEquals(array('foo' => 'foobar'), $dup->attributes->all(), '->duplicate() overrides the attributes if provided');
         $this->assertEquals(array('foo' => array('foobar')), $dup->headers->all(), '->duplicate() overrides the HTTP header if provided');
     }