From b753ea45b24bf84c3285de91e684974006e9ef81 Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Tue, 7 Sep 2010 13:55:45 +0200 Subject: [PATCH] [Routing] added 'defaults' support in Annotation class loader --- src/Symfony/Component/Routing/Annotation/Route.php | 12 ++++++++++++ .../Routing/Loader/AnnotationClassLoader.php | 7 ++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Component/Routing/Annotation/Route.php b/src/Symfony/Component/Routing/Annotation/Route.php index 8964fa888a04..f00e084f9b5a 100644 --- a/src/Symfony/Component/Routing/Annotation/Route.php +++ b/src/Symfony/Component/Routing/Annotation/Route.php @@ -22,6 +22,7 @@ class Route protected $name; protected $requirements; protected $options; + protected $defaults; /** * Constructor. @@ -32,6 +33,7 @@ public function __construct(array $data) { $this->requirements = array(); $this->options = array(); + $this->defaults = array(); if (isset($data['value'])) { $data['pattern'] = $data['value']; @@ -86,4 +88,14 @@ public function getOptions() { return $this->options; } + + public function setDefaults($defaults) + { + $this->defaults = $defaults; + } + + public function getDefaults() + { + return $this->defaults; + } } diff --git a/src/Symfony/Component/Routing/Loader/AnnotationClassLoader.php b/src/Symfony/Component/Routing/Loader/AnnotationClassLoader.php index cc93d3497860..8611dea811d3 100644 --- a/src/Symfony/Component/Routing/Loader/AnnotationClassLoader.php +++ b/src/Symfony/Component/Routing/Loader/AnnotationClassLoader.php @@ -87,6 +87,7 @@ class_exists($annotClass = 'Symfony\\Component\\Routing\\Annotation\\Route'); 'pattern' => '', 'requirements' => array(), 'options' => array(), + 'defaults' => array(), ); if ($annot = $this->reader->getClassAnnotation($class, $annotClass)) { @@ -101,6 +102,10 @@ class_exists($annotClass = 'Symfony\\Component\\Routing\\Annotation\\Route'); if (null !== $annot->getOptions()) { $globals['options'] = $annot->getOptions(); } + + if (null !== $annot->getDefaults()) { + $globals['defaults'] = $annot->getDefaults(); + } } $this->reader->setDefaultAnnotationNamespace('Symfony\\Component\\Routing\\Annotation\\'); @@ -111,7 +116,7 @@ class_exists($annotClass = 'Symfony\\Component\\Routing\\Annotation\\Route'); $annot->setName($this->getDefaultRouteName($class, $method)); } - $defaults = $this->getRouteDefaults($class, $method, $annot); + $defaults = array_merge($globals['defaults'], $annot->getDefaults(), $this->getRouteDefaults($class, $method, $annot)); $requirements = array_merge($globals['requirements'], $annot->getRequirements()); $options = array_merge($globals['options'], $annot->getOptions());