W3cubDocs

/Symfony 4.1

AnnotationClassLoader

abstract class AnnotationClassLoader implements LoaderInterface

AnnotationClassLoader loads routing information from a PHP class and its methods.

You need to define an implementation for the getRouteDefaults() method. Most of the time, this method should define some PHP callable to be called for the route (a controller in MVC speak).

The @Route annotation can be set on the class (for global parameters), and on each method.

The @Route annotation main value is the route path. The annotation also recognizes several parameters: requirements, options, defaults, schemes, methods, host, and name. The name parameter is mandatory. Here is an example of how you should be able to use it:

/**
 * @Route("/Blog")
 * /
class Blog
{
    /**
     * @Route("/", name="blog_index")
     * /
    public function index()
    {
    }

    /**
     * @Route("/{id}", name="blog_post", requirements = {"id" = "\d+"})
     * /
    public function show()
    {
    }
}

Properties

protected $reader
protected string $routeAnnotationClass
protected int $defaultRouteIndex

Methods

__construct(Reader $reader)
setRouteAnnotationClass(string $class)

Sets the annotation class to read route properties from.

load(string $class, string|null $type = null)

Loads from annotations from a class.

addRoute(RouteCollection $collection, $annot, $globals, ReflectionClass $class, ReflectionMethod $method)
bool supports(mixed $resource, string|null $type = null)

Returns whether this class supports the given resource.

setResolver(LoaderResolverInterface $resolver)

Sets the loader resolver.

LoaderResolverInterface getResolver()

Gets the loader resolver.

string getDefaultRouteName(ReflectionClass $class, ReflectionMethod $method)

Gets the default route name for a class method.

getGlobals(ReflectionClass $class)
createRoute($path, $defaults, $requirements, $options, $host, $schemes, $methods, $condition)
configureRoute(Route $route, ReflectionClass $class, ReflectionMethod $method, $annot)

Details

__construct(Reader $reader)

Parameters

Reader $reader

setRouteAnnotationClass(string $class)

Sets the annotation class to read route properties from.

Parameters

string $class A fully-qualified class name

load(string $class, string|null $type = null)

Loads from annotations from a class.

Parameters

string $class A class name
string|null $type The resource type or null if unknown

Exceptions

InvalidArgumentException When route can't be parsed

protected addRoute(RouteCollection $collection, $annot, $globals, ReflectionClass $class, ReflectionMethod $method)

Parameters

RouteCollection $collection
$annot
$globals
ReflectionClass $class
ReflectionMethod $method

bool supports(mixed $resource, string|null $type = null)

Returns whether this class supports the given resource.

Parameters

mixed $resource A resource
string|null $type The resource type or null if unknown

Return Value

bool True if this class supports the given resource, false otherwise

setResolver(LoaderResolverInterface $resolver)

Sets the loader resolver.

Parameters

LoaderResolverInterface $resolver

LoaderResolverInterface getResolver()

Gets the loader resolver.

Return Value

LoaderResolverInterface A LoaderResolverInterface instance

protected string getDefaultRouteName(ReflectionClass $class, ReflectionMethod $method)

Gets the default route name for a class method.

Parameters

ReflectionClass $class
ReflectionMethod $method

Return Value

string

protected getGlobals(ReflectionClass $class)

Parameters

ReflectionClass $class

protected createRoute($path, $defaults, $requirements, $options, $host, $schemes, $methods, $condition)

Parameters

$path
$defaults
$requirements
$options
$host
$schemes
$methods
$condition

abstract protected configureRoute(Route $route, ReflectionClass $class, ReflectionMethod $method, $annot)

Parameters

Route $route
ReflectionClass $class
ReflectionMethod $method
$annot

© 2004–2017 Fabien Potencier
Licensed under the MIT License.
https://api.symfony.com/4.1/Symfony/Component/Routing/Loader/AnnotationClassLoader.html