1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- <?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 Symfony\Bundle\FrameworkBundle\Routing;
- use Symfony\Component\Routing\Loader\AnnotationClassLoader;
- use Symfony\Component\Routing\Route;
- /**
- * AnnotatedRouteControllerLoader is an implementation of AnnotationClassLoader
- * that sets the '_controller' default based on the class and method names.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
- class AnnotatedRouteControllerLoader extends AnnotationClassLoader
- {
- /**
- * Configures the _controller default parameter of a given Route instance.
- *
- * @param mixed $annot The annotation class instance
- */
- protected function configureRoute(Route $route, \ReflectionClass $class, \ReflectionMethod $method, $annot)
- {
- if ('__invoke' === $method->getName()) {
- $route->setDefault('_controller', $class->getName());
- } else {
- $route->setDefault('_controller', $class->getName().'::'.$method->getName());
- }
- }
- /**
- * Makes the default route name more sane by removing common keywords.
- *
- * @return string
- */
- protected function getDefaultRouteName(\ReflectionClass $class, \ReflectionMethod $method)
- {
- return preg_replace([
- '/(bundle|controller)_/',
- '/action(_\d+)?$/',
- '/__/',
- ], [
- '_',
- '\\1',
- '_',
- ], parent::getDefaultRouteName($class, $method));
- }
- }
|