init without trunk
This commit is contained in:
parent
ed24ac4994
commit
bb809e7233
14652 changed files with 177862 additions and 94817 deletions
95
vendor/sensio/framework-extra-bundle/Routing/AnnotatedRouteControllerLoader.php
vendored
Normal file
95
vendor/sensio/framework-extra-bundle/Routing/AnnotatedRouteControllerLoader.php
vendored
Normal file
|
|
@ -0,0 +1,95 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Symfony package.
|
||||
*
|
||||
* (c) Fabien Potencier <fabien@symfony.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Sensio\Bundle\FrameworkExtraBundle\Routing;
|
||||
|
||||
use Symfony\Component\Routing\Loader\AnnotationClassLoader;
|
||||
use Symfony\Component\Routing\Route;
|
||||
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route as FrameworkExtraBundleRoute;
|
||||
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
|
||||
|
||||
/**
|
||||
* AnnotatedRouteControllerLoader is an implementation of AnnotationClassLoader
|
||||
* that sets the '_controller' default based on the class and method names.
|
||||
*
|
||||
* It also parse the @Method annotation.
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
*/
|
||||
class AnnotatedRouteControllerLoader extends AnnotationClassLoader
|
||||
{
|
||||
/**
|
||||
* Configures the _controller default parameter and eventually the HTTP method
|
||||
* requirement of a given Route instance.
|
||||
*
|
||||
* @param Route $route A route instance
|
||||
* @param \ReflectionClass $class A ReflectionClass instance
|
||||
* @param \ReflectionMethod $method A ReflectionClass method
|
||||
* @param mixed $annot The annotation class instance
|
||||
*
|
||||
* @throws \LogicException When the service option is specified on a method
|
||||
*/
|
||||
protected function configureRoute(Route $route, \ReflectionClass $class, \ReflectionMethod $method, $annot)
|
||||
{
|
||||
// controller
|
||||
$classAnnot = $this->reader->getClassAnnotation($class, $this->routeAnnotationClass);
|
||||
if ($classAnnot instanceof FrameworkExtraBundleRoute && $service = $classAnnot->getService()) {
|
||||
$route->setDefault('_controller', $service.':'.$method->getName());
|
||||
} else {
|
||||
$route->setDefault('_controller', $class->getName().'::'.$method->getName());
|
||||
}
|
||||
|
||||
// requirements (@Method)
|
||||
foreach ($this->reader->getMethodAnnotations($method) as $configuration) {
|
||||
if ($configuration instanceof Method) {
|
||||
$route->setMethods(implode('|', $configuration->getMethods()));
|
||||
} elseif ($configuration instanceof FrameworkExtraBundleRoute && $configuration->getService()) {
|
||||
throw new \LogicException('The service option can only be specified at class level.');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected function getGlobals(\ReflectionClass $class)
|
||||
{
|
||||
$globals = parent::getGlobals($class);
|
||||
|
||||
foreach ($this->reader->getClassAnnotations($class) as $configuration) {
|
||||
if ($configuration instanceof Method) {
|
||||
$globals['methods'] = array_merge($globals['methods'], $configuration->getMethods());
|
||||
}
|
||||
}
|
||||
|
||||
return $globals;
|
||||
}
|
||||
|
||||
/**
|
||||
* Makes the default route name more sane by removing common keywords.
|
||||
*
|
||||
* @param \ReflectionClass $class A ReflectionClass instance
|
||||
* @param \ReflectionMethod $method A ReflectionMethod instance
|
||||
*
|
||||
* @return string The default route name
|
||||
*/
|
||||
protected function getDefaultRouteName(\ReflectionClass $class, \ReflectionMethod $method)
|
||||
{
|
||||
$routeName = parent::getDefaultRouteName($class, $method);
|
||||
|
||||
return preg_replace(array(
|
||||
'/(bundle|controller)_/',
|
||||
'/action(_\d+)?$/',
|
||||
'/__/',
|
||||
), array(
|
||||
'_',
|
||||
'\\1',
|
||||
'_',
|
||||
), $routeName);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue