annotate vendor/symfony/routing/CHANGELOG.md @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents af1871eacc83
children
rev   line source
Chris@0 1 CHANGELOG
Chris@0 2 =========
Chris@0 3
Chris@14 4 3.4.0
Chris@14 5 -----
Chris@14 6
Chris@14 7 * Added `NoConfigurationException`.
Chris@14 8 * Added the possibility to define a prefix for all routes of a controller via @Route(name="prefix_")
Chris@14 9 * Added support for prioritized routing loaders.
Chris@14 10 * Add matched and default parameters to redirect responses
Chris@14 11 * Added support for a `controller` keyword for configuring route controllers in YAML and XML configurations.
Chris@14 12
Chris@14 13 3.3.0
Chris@14 14 -----
Chris@14 15
Chris@14 16 * [DEPRECATION] Class parameters have been deprecated and will be removed in 4.0.
Chris@14 17 * router.options.generator_class
Chris@14 18 * router.options.generator_base_class
Chris@14 19 * router.options.generator_dumper_class
Chris@14 20 * router.options.matcher_class
Chris@14 21 * router.options.matcher_base_class
Chris@14 22 * router.options.matcher_dumper_class
Chris@14 23 * router.options.matcher.cache_class
Chris@14 24 * router.options.generator.cache_class
Chris@14 25
Chris@0 26 3.2.0
Chris@0 27 -----
Chris@0 28
Chris@0 29 * Added support for `bool`, `int`, `float`, `string`, `list` and `map` defaults in XML configurations.
Chris@0 30 * Added support for UTF-8 requirements
Chris@14 31
Chris@0 32 2.8.0
Chris@0 33 -----
Chris@0 34
Chris@0 35 * allowed specifying a directory to recursively load all routing configuration files it contains
Chris@0 36 * Added ObjectRouteLoader and ServiceRouteLoader that allow routes to be loaded
Chris@0 37 by calling a method on an object/service.
Chris@0 38 * [DEPRECATION] Deprecated the hardcoded value for the `$referenceType` argument of the `UrlGeneratorInterface::generate` method.
Chris@0 39 Use the constants defined in the `UrlGeneratorInterface` instead.
Chris@0 40
Chris@0 41 Before:
Chris@0 42
Chris@0 43 ```php
Chris@17 44 $router->generate('blog_show', ['slug' => 'my-blog-post'], true);
Chris@0 45 ```
Chris@0 46
Chris@0 47 After:
Chris@0 48
Chris@0 49 ```php
Chris@0 50 use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
Chris@0 51
Chris@17 52 $router->generate('blog_show', ['slug' => 'my-blog-post'], UrlGeneratorInterface::ABSOLUTE_URL);
Chris@0 53 ```
Chris@0 54
Chris@0 55 2.5.0
Chris@0 56 -----
Chris@0 57
Chris@0 58 * [DEPRECATION] The `ApacheMatcherDumper` and `ApacheUrlMatcher` were deprecated and
Chris@0 59 will be removed in Symfony 3.0, since the performance gains were minimal and
Chris@18 60 it's hard to replicate the behavior of PHP implementation.
Chris@0 61
Chris@0 62 2.3.0
Chris@0 63 -----
Chris@0 64
Chris@0 65 * added RequestContext::getQueryString()
Chris@0 66
Chris@0 67 2.2.0
Chris@0 68 -----
Chris@0 69
Chris@0 70 * [DEPRECATION] Several route settings have been renamed (the old ones will be removed in 3.0):
Chris@0 71
Chris@0 72 * The `pattern` setting for a route has been deprecated in favor of `path`
Chris@0 73 * The `_scheme` and `_method` requirements have been moved to the `schemes` and `methods` settings
Chris@0 74
Chris@0 75 Before:
Chris@0 76
Chris@0 77 ```yaml
Chris@0 78 article_edit:
Chris@0 79 pattern: /article/{id}
Chris@0 80 requirements: { '_method': 'POST|PUT', '_scheme': 'https', 'id': '\d+' }
Chris@0 81 ```
Chris@0 82
Chris@0 83 ```xml
Chris@0 84 <route id="article_edit" pattern="/article/{id}">
Chris@0 85 <requirement key="_method">POST|PUT</requirement>
Chris@0 86 <requirement key="_scheme">https</requirement>
Chris@0 87 <requirement key="id">\d+</requirement>
Chris@0 88 </route>
Chris@0 89 ```
Chris@0 90
Chris@0 91 ```php
Chris@0 92 $route = new Route();
Chris@0 93 $route->setPattern('/article/{id}');
Chris@0 94 $route->setRequirement('_method', 'POST|PUT');
Chris@0 95 $route->setRequirement('_scheme', 'https');
Chris@0 96 ```
Chris@0 97
Chris@0 98 After:
Chris@0 99
Chris@0 100 ```yaml
Chris@0 101 article_edit:
Chris@0 102 path: /article/{id}
Chris@0 103 methods: [POST, PUT]
Chris@0 104 schemes: https
Chris@0 105 requirements: { 'id': '\d+' }
Chris@0 106 ```
Chris@0 107
Chris@0 108 ```xml
Chris@0 109 <route id="article_edit" pattern="/article/{id}" methods="POST PUT" schemes="https">
Chris@0 110 <requirement key="id">\d+</requirement>
Chris@0 111 </route>
Chris@0 112 ```
Chris@0 113
Chris@0 114 ```php
Chris@0 115 $route = new Route();
Chris@0 116 $route->setPath('/article/{id}');
Chris@17 117 $route->setMethods(['POST', 'PUT']);
Chris@0 118 $route->setSchemes('https');
Chris@0 119 ```
Chris@0 120
Chris@0 121 * [BC BREAK] RouteCollection does not behave like a tree structure anymore but as
Chris@0 122 a flat array of Routes. So when using PHP to build the RouteCollection, you must
Chris@0 123 make sure to add routes to the sub-collection before adding it to the parent
Chris@0 124 collection (this is not relevant when using YAML or XML for Route definitions).
Chris@0 125
Chris@0 126 Before:
Chris@0 127
Chris@0 128 ```php
Chris@0 129 $rootCollection = new RouteCollection();
Chris@0 130 $subCollection = new RouteCollection();
Chris@0 131 $rootCollection->addCollection($subCollection);
Chris@0 132 $subCollection->add('foo', new Route('/foo'));
Chris@0 133 ```
Chris@0 134
Chris@0 135 After:
Chris@0 136
Chris@0 137 ```php
Chris@0 138 $rootCollection = new RouteCollection();
Chris@0 139 $subCollection = new RouteCollection();
Chris@0 140 $subCollection->add('foo', new Route('/foo'));
Chris@0 141 $rootCollection->addCollection($subCollection);
Chris@0 142 ```
Chris@0 143
Chris@0 144 Also one must call `addCollection` from the bottom to the top hierarchy.
Chris@0 145 So the correct sequence is the following (and not the reverse):
Chris@0 146
Chris@0 147 ```php
Chris@0 148 $childCollection->addCollection($grandchildCollection);
Chris@0 149 $rootCollection->addCollection($childCollection);
Chris@0 150 ```
Chris@0 151
Chris@0 152 * [DEPRECATION] The methods `RouteCollection::getParent()` and `RouteCollection::getRoot()`
Chris@0 153 have been deprecated and will be removed in Symfony 2.3.
Chris@0 154 * [BC BREAK] Misusing the `RouteCollection::addPrefix` method to add defaults, requirements
Chris@0 155 or options without adding a prefix is not supported anymore. So if you called `addPrefix`
Chris@0 156 with an empty prefix or `/` only (both have no relevance), like
Chris@0 157 `addPrefix('', $defaultsArray, $requirementsArray, $optionsArray)`
Chris@0 158 you need to use the new dedicated methods `addDefaults($defaultsArray)`,
Chris@0 159 `addRequirements($requirementsArray)` or `addOptions($optionsArray)` instead.
Chris@0 160 * [DEPRECATION] The `$options` parameter to `RouteCollection::addPrefix()` has been deprecated
Chris@0 161 because adding options has nothing to do with adding a path prefix. If you want to add options
Chris@0 162 to all child routes of a RouteCollection, you can use `addOptions()`.
Chris@0 163 * [DEPRECATION] The method `RouteCollection::getPrefix()` has been deprecated
Chris@0 164 because it suggested that all routes in the collection would have this prefix, which is
Chris@0 165 not necessarily true. On top of that, since there is no tree structure anymore, this method
Chris@0 166 is also useless. Don't worry about performance, prefix optimization for matching is still done
Chris@0 167 in the dumper, which was also improved in 2.2.0 to find even more grouping possibilities.
Chris@0 168 * [DEPRECATION] `RouteCollection::addCollection(RouteCollection $collection)` should now only be
Chris@0 169 used with a single parameter. The other params `$prefix`, `$default`, `$requirements` and `$options`
Chris@0 170 will still work, but have been deprecated. The `addPrefix` method should be used for this
Chris@0 171 use-case instead.
Chris@17 172 Before: `$parentCollection->addCollection($collection, '/prefix', [...], [...])`
Chris@0 173 After:
Chris@0 174 ```php
Chris@17 175 $collection->addPrefix('/prefix', [...], [...]);
Chris@0 176 $parentCollection->addCollection($collection);
Chris@0 177 ```
Chris@0 178 * added support for the method default argument values when defining a @Route
Chris@0 179 * Adjacent placeholders without separator work now, e.g. `/{x}{y}{z}.{_format}`.
Chris@0 180 * Characters that function as separator between placeholders are now whitelisted
Chris@0 181 to fix routes with normal text around a variable, e.g. `/prefix{var}suffix`.
Chris@0 182 * [BC BREAK] The default requirement of a variable has been changed slightly.
Chris@0 183 Previously it disallowed the previous and the next char around a variable. Now
Chris@0 184 it disallows the slash (`/`) and the next char. Using the previous char added
Chris@0 185 no value and was problematic because the route `/index.{_format}` would be
Chris@0 186 matched by `/index.ht/ml`.
Chris@0 187 * The default requirement now uses possessive quantifiers when possible which
Chris@0 188 improves matching performance by up to 20% because it prevents backtracking
Chris@0 189 when it's not needed.
Chris@0 190 * The ConfigurableRequirementsInterface can now also be used to disable the requirements
Chris@0 191 check on URL generation completely by calling `setStrictRequirements(null)`. It
Chris@0 192 improves performance in production environment as you should know that params always
Chris@0 193 pass the requirements (otherwise it would break your link anyway).
Chris@0 194 * There is no restriction on the route name anymore. So non-alphanumeric characters
Chris@0 195 are now also allowed.
Chris@0 196 * [BC BREAK] `RouteCompilerInterface::compile(Route $route)` was made static
Chris@0 197 (only relevant if you implemented your own RouteCompiler).
Chris@0 198 * Added possibility to generate relative paths and network paths in the UrlGenerator, e.g.
Chris@0 199 "../parent-file" and "//example.com/dir/file". The third parameter in
Chris@17 200 `UrlGeneratorInterface::generate($name, $parameters = [], $referenceType = self::ABSOLUTE_PATH)`
Chris@0 201 now accepts more values and you should use the constants defined in `UrlGeneratorInterface` for
Chris@0 202 claritiy. The old method calls with a Boolean parameter will continue to work because they
Chris@0 203 equal the signature using the constants.
Chris@0 204
Chris@0 205 2.1.0
Chris@0 206 -----
Chris@0 207
Chris@0 208 * added RequestMatcherInterface
Chris@0 209 * added RequestContext::fromRequest()
Chris@0 210 * the UrlMatcher does not throw a \LogicException anymore when the required
Chris@0 211 scheme is not the current one
Chris@0 212 * added TraceableUrlMatcher
Chris@0 213 * added the possibility to define options, default values and requirements
Chris@0 214 for placeholders in prefix, including imported routes
Chris@0 215 * added RouterInterface::getRouteCollection
Chris@0 216 * [BC BREAK] the UrlMatcher urldecodes the route parameters only once, they
Chris@0 217 were decoded twice before. Note that the `urldecode()` calls have been
Chris@0 218 changed for a single `rawurldecode()` in order to support `+` for input
Chris@0 219 paths.
Chris@0 220 * added RouteCollection::getRoot method to retrieve the root of a
Chris@0 221 RouteCollection tree
Chris@0 222 * [BC BREAK] made RouteCollection::setParent private which could not have
Chris@0 223 been used anyway without creating inconsistencies
Chris@0 224 * [BC BREAK] RouteCollection::remove also removes a route from parent
Chris@0 225 collections (not only from its children)
Chris@0 226 * added ConfigurableRequirementsInterface that allows to disable exceptions
Chris@0 227 (and generate empty URLs instead) when generating a route with an invalid
Chris@0 228 parameter value