Commit Graph

24803 Commits

Author SHA1 Message Date
Guilhem Niot
5107b94baf
[Yaml] Fix the tests 2017-03-06 21:37:41 +01:00
Fabien Potencier
323529cba6 feature #21774 [Yaml] deprecate implicit string casting of mapping keys (xabbuh)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[Yaml] deprecate implicit string casting of mapping keys

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | yes
| Tests pass?   | yes
| Fixed tickets | https://github.com/symfony/symfony/pull/21650#discussion_r101764467
| License       | MIT
| Doc PR        |

Commits
-------

3c5d9155d4 deprecate implicit string casting of mapping keys
2017-03-06 11:34:13 -08:00
Fabien Potencier
94d059d530 Merge branch '2.8' into 3.2
* 2.8:
  respect the umask argument in dumpFile()
  dumpFile(), preserve existing file permissions
  Add validate method to mockec validator in form TypeTestCase
  bumped Symfony version to 2.8.19
  updated VERSION for 2.8.18
  updated CHANGELOG for 2.8.18
  bumped Symfony version to 2.7.26
  updated VERSION for 2.7.25
  update CONTRIBUTORS for 2.7.25
  updated CHANGELOG for 2.7.25
  [HttpKernel] fixed Kernel name when stored in a directory starting with a number
  context listener: hardening user provider handling
  [Console] Do not squash input changes made from console.command event
2017-03-06 11:30:27 -08:00
Fabien Potencier
2a7e385dac Merge branch '2.7' into 2.8
* 2.7:
  respect the umask argument in dumpFile()
  dumpFile(), preserve existing file permissions
  Add validate method to mockec validator in form TypeTestCase
  bumped Symfony version to 2.7.26
  updated VERSION for 2.7.25
  update CONTRIBUTORS for 2.7.25
  updated CHANGELOG for 2.7.25
  [HttpKernel] fixed Kernel name when stored in a directory starting with a number
  context listener: hardening user provider handling
2017-03-06 11:26:34 -08:00
Christian Flothmann
3c5d9155d4 deprecate implicit string casting of mapping keys 2017-03-06 20:18:14 +01:00
Christian Flothmann
3a7cd08fe7 respect the umask argument in dumpFile() 2017-03-06 19:56:39 +01:00
ChS
040a9abdbf dumpFile(), preserve existing file permissions 2017-03-06 10:29:45 -08:00
Fabien Potencier
638bdc864f added a note in the CHANGELOG 2017-03-06 10:23:13 -08:00
Fabien Potencier
7638f6e3be feature #21780 [DX] [Form] Add helper method to register form extensions during unit testing (pierredup)
This PR was squashed before being merged into the 3.3-dev branch (closes #21780).

Discussion
----------

[DX] [Form] Add helper method to register form extensions during unit testing

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | N/A
| License       | MIT
| Doc PR        | symfony/symfony-docs#7578

Add helper method to register form extensions during unit testing, so it's easier to register custom form type extensions, form types, or type guessers

Commits
-------

bab562a987 [DX] [Form] Add helper method to register form extensions during unit testing
2017-03-06 10:21:35 -08:00
Pierre du Plessis
bab562a987 [DX] [Form] Add helper method to register form extensions during unit testing 2017-03-06 10:21:32 -08:00
Fabien Potencier
ae2722f046 added a note in the CHANGELOG 2017-03-06 10:19:58 -08:00
Fabien Potencier
7048fd6cba feature #21842 [HttpKernel] Allow signing URIs with a custom query string parameter (thewilkybarkid)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[HttpKernel] Allow signing URIs with a custom query string parameter

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

`UriSigner` is currently restricting to using `_hash` as the query string parameter, this makes is customisable.

Commits
-------

32301c3a30 Allow a custom query string parameter
2017-03-06 10:18:41 -08:00
HeahDude
bcda2c2d8e [Form] Fixed overridden choices option in extended choice types 2017-03-06 18:31:33 +01:00
Fabien Potencier
a42cf1bc0c feature #21705 [Bridge/Monolog] Enhance the Console Handler (lyrixx)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[Bridge/Monolog] Enhance the Console Handler

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | yes
| Tests pass?   | -
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

---

I extracted and enhanced the formatting logic from #21080.
Basically, The formatter now use the VarDumper & use more significant colors and has a more compact / readable format (IMHO).

---

I used the following code to generate before/after screenshots.

```php
    protected function execute(InputInterface $input, OutputInterface $output)
    {
        $logger = $this->getContainer()->get('logger');
        $filesystem = $this->getContainer()->get('filesystem');

        $anObject = new \stdClass;
        $anObject->firstPpt = 'foo';
        $anObject->secondePpt = 'bar';

        $logger->log('notice', 'Hello {who}', [
            'who' => 'Wold',
            'an_object' => $anObject,
            'file_system' => $filesystem,
        ]);

        $r = new \ReflectionClass(LogLevel::class);
        foreach ($r->getConstants() as $level) {
            $logger = $logger->withName($level);
            $logger->log($level, 'log at level {level}', [
                'level' => $level,
            ]);
        }
    }
```

before:

![screenshot12](https://cloud.githubusercontent.com/assets/408368/23183075/0bb21f80-f87b-11e6-8123-f6da70f2493b.png)

After:

![screenshot11](https://cloud.githubusercontent.com/assets/408368/23182971/b4022ed8-f87a-11e6-9d3b-de1a9d4ce9aa.png)

Commits
-------

b663ab5246 [Bridge/Monolog] Enhanced the Console Handler
2017-03-06 09:12:00 -08:00
Grégoire Pineau
b663ab5246 [Bridge/Monolog] Enhanced the Console Handler
Basically, the formatter now uses the VarDumper & uses more significant
colors and has a more compact / readable format (IMHO).
2017-03-06 18:10:13 +01:00
Javier Eguiluz
3a589df5cb Added a castToArray() config helper 2017-03-06 08:50:45 -08:00
Fabien Potencier
3effed88e0 bug #21865 [Security] context listener: hardening user provider handling (xabbuh)
This PR was merged into the 2.7 branch.

Discussion
----------

[Security] context listener: hardening user provider handling

| Q             | A
| ------------- | ---
| Branch?       | 2.7
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #4498
| License       | MIT
| Doc PR        |

After the wrong fix in #21791 this is the second attempt to solve #4498. If more than one user provider support the user for the current context, all of them will be applied instead of returning prematurely when the first user provider does not find the logged in user.

Commits
-------

0fb09293fd context listener: hardening user provider handling
2017-03-06 08:15:02 -08:00
Wouter J
ba5c0f4a47 Count @expectedDeprecation as an assertion 2017-03-06 17:08:22 +01:00
Fabien Potencier
ec134c7014 bug #21883 [HttpKernel] fix Kernel name when stored in a directory starting with a number (fabpot)
This PR was merged into the 2.7 branch.

Discussion
----------

[HttpKernel] fix Kernel name when stored in a directory starting with a number

| Q             | A
| ------------- | ---
| Branch?       | 2.7
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #20489
| License       | MIT
| Doc PR        | -

replaces #20750

Commits
-------

f244eb8414 [HttpKernel] fixed Kernel name when stored in a directory starting with a number
2017-03-06 07:51:41 -08:00
Javier Eguiluz
ba6c9464ea Sort commands like a human would do 2017-03-06 11:28:26 +01:00
Javier Eguiluz
f04b1bd72f Sort alternatives alphabetically when a command is not found 2017-03-06 11:28:26 +01:00
Nicolas Grekas
372ff7ce7d [DI] Replace PHP7-conditional return-type checks by regular type-hints that work on PHP5 2017-03-06 09:56:20 +01:00
Pierre du Plessis
4013e7b998 Add validate method to mockec validator in form TypeTestCase 2017-03-06 09:20:15 +02:00
Fabien Potencier
07dfac3bc2 bumped Symfony version to 2.8.19 2017-03-05 22:36:37 -08:00
Fabien Potencier
f32f6cefdf updated VERSION for 2.8.18 2017-03-05 19:54:35 -08:00
Fabien Potencier
7311ef36e9 bumped Symfony version to 2.7.26 2017-03-05 18:34:03 -08:00
Fabien Potencier
cb24ce3b52 updated VERSION for 2.7.25 2017-03-05 17:33:35 -08:00
Fabien Potencier
f244eb8414 [HttpKernel] fixed Kernel name when stored in a directory starting with a number 2017-03-05 14:37:48 -08:00
Nicolas Grekas
fa451b2935 fix typo 2017-03-05 23:31:39 +01:00
Fabien Potencier
e4c12daa53 fixed CS 2017-03-05 13:52:44 -08:00
Nicolas Grekas
d332b37b4b [FrameworkBundle] Lazy configuration of annotations' loader and @required 2017-03-05 22:37:22 +01:00
Markus Fasselt
c7a44be4b1 Use proper error message when session write fails #20807 2017-03-05 12:27:23 -08:00
Fabien Potencier
b8b6774634 bug #21841 [Console] Do not squash input changes made from console.command event (chalasr)
This PR was merged into the 2.8 branch.

Discussion
----------

[Console] Do not squash input changes made from console.command event

| Q             | A
| ------------- | ---
| Branch?       | 2.8
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | https://github.com/symfony/symfony/issues/19441
| License       | MIT
| Doc PR        | n/a

Setting arguments/options from the `console.command` event is expected to work since https://github.com/symfony/symfony/pull/15938

Commits
-------

c8d364b721 [Console] Do not squash input changes made from console.command event
2017-03-05 12:03:23 -08:00
Fabien Potencier
c6e1a49731 feature #21770 [DI] Allow extensions to create ServiceLocator as services (nicolas-grekas)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[DI] Allow extensions to create ServiceLocator as services

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

https://github.com/symfony/symfony/pull/21770/files?w=1

With this PR, DI extensions are able to create "service locator" services.
They are easily created as such:
```php
$container->register('my_service_locator', ServiceLocator::class)
    ->addArgument(array(
        'exposed_id' => new ServiceClosureArgument(new Reference('internal_id')),
    ))
```
I already need this in two different PRs to come.

Commits
-------

1d9663326e [DI] Allow creating ServiceLocator-based services in extensions
2017-03-05 12:01:09 -08:00
Fabien Potencier
ed303489da Merge branch '3.2'
* 3.2:
  [Form] backport DependencyInjectionExtension tests
  [Form] Fixed typo in a test after #21877
2017-03-05 11:54:04 -08:00
Fabien Potencier
4d91022480 Merge branch '2.8' into 3.2
* 2.8:
  [Form] backport DependencyInjectionExtension tests
  [Form] Fixed typo in a test after #21877
2017-03-05 11:53:04 -08:00
Fabien Potencier
82790559de Merge branch '2.7' into 2.8
* 2.7:
  [Form] backport DependencyInjectionExtension tests
  [Form] Fixed typo in a test after #21877
2017-03-05 11:52:29 -08:00
Fabien Potencier
4816f65c04 minor #21882 [Form] Fixed typo in a test after #21877 (HeahDude)
This PR was merged into the 2.7 branch.

Discussion
----------

[Form] Fixed typo in a test after #21877

| Q             | A
| ------------- | ---
| Branch?       | 2.7
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | ~
| License       | MIT
| Doc PR        | ~

Reviewing the diff on GitHub, I realized I've missed some typos in a new test of #21877. Sorry!

Commits
-------

b21a0978de [Form] Fixed typo in a test after #21877
2017-03-05 11:48:05 -08:00
Fabien Potencier
0db972355b feature #21767 [DI][Router][DX] Invalidate routing cache when container parameters changed (ogizanagi)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[DI][Router][DX] Invalidate routing cache when container parameters changed

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #21426
| License       | MIT
| Doc PR        | N/A

Supersedes #21443 but only for master.

Indeed, this implementation uses a new feature: a `ContainerParametersResource` which compares cached containers parameters (collected at some point, here by the `Router`) with current ones in the container.

On the contrary of the previous PR targeting 2.7, this will only invalidate routing cache when parameters actually used in the routes changed and will avoid always rebuilding the routing cache when the container is rebuilt, just to catch the edge case of someone modifying a parameter.

Commits
-------

fad4d9e2ef [DI][Router][DX] Invalidate routing cache when container parameters changed
2017-03-05 11:44:35 -08:00
Fabien Potencier
511e0c372a minor #21868 [Form] backport DependencyInjectionExtension tests (xabbuh)
This PR was merged into the 2.7 branch.

Discussion
----------

[Form] backport DependencyInjectionExtension tests

| Q             | A
| ------------- | ---
| Branch?       | 2.7
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

Commits
-------

97361f1815 [Form] backport DependencyInjectionExtension tests
2017-03-05 11:42:52 -08:00
Maxime Steinhausser
fad4d9e2ef [DI][Router][DX] Invalidate routing cache when container parameters changed 2017-03-05 20:24:24 +01:00
Christian Flothmann
97361f1815 [Form] backport DependencyInjectionExtension tests 2017-03-05 20:15:18 +01:00
HeahDude
b21a0978de [Form] Fixed typo in a test after #21877 2017-03-05 20:10:06 +01:00
Fabien Potencier
2d4a9cd272 Merge branch '3.2'
* 3.2:
  [Form] Fixed empty conversion of Intl types
2017-03-05 10:17:03 -08:00
HeahDude
e43bfafbcc [Form] Fixed empty conversion of Intl types 2017-03-05 18:47:40 +01:00
Fabien Potencier
93810bcddf Merge branch '3.2'
* 3.2:
  [Serializer] Xml encoder throws exception for valid data
  [Form] Hardened form type tests
  fixed CS
  Added setInputStream deprecation to UPGRADE guides
  fixed CS
2017-03-05 09:43:56 -08:00
Fabien Potencier
77653d15ee Merge branch '2.8' into 3.2
* 2.8:
  [Serializer] Xml encoder throws exception for valid data
  [Form] Hardened form type tests
  fixed CS
2017-03-05 09:42:14 -08:00
Fabien Potencier
663661b30f Merge branch '2.7' into 2.8
* 2.7:
  [Serializer] Xml encoder throws exception for valid data
  [Form] Hardened form type tests
  fixed CS
2017-03-05 09:40:13 -08:00
Fabien Potencier
ea8025b863 minor #21877 [Form] Hardened form type tests (HeahDude)
This PR was merged into the 2.7 branch.

Discussion
----------

[Form] Hardened form type tests

| Q             | A
| ------------- | ---
| Branch?       | 2.7
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | ~
| License       | MIT
| Doc PR        | ~

This one the PRs to come targeting 2.7 needed to harden the code base before doing some changes in master.

It takes care of the form types tests part (even if some other tests will be added later, it will also be easier after it), and unlocks merging https://github.com/symfony/symfony/pull/21481.
It also back ports tests added in https://github.com/symfony/symfony/pull/18357 for the TextType.

Since it's very hard to merge branches when modifying tests because of BC, and making every test type extend the base type test would involve many function calls to get the tested type, the function `getTestedType` is no longer abstract and return a constant to override instead, it's much better for performance, I didn't change the call in the base type test to keep BC but I suggest to deprecate it in master. Even if those are tests I really think it is worth keeping BC here.

The constants also ease testing in the ecosystem of form related libraries that need to be compatible with Symfony 2.7 and 3. I think using "test" as both prefix and suffix on namespaces, classes and names of the constants should discourage using them in real application code. Since this is just about our test suite, I don't think this should be considered a feature, so tis change should be good for 2.7.

Two other PRs will follow to solve conflicts in 2.8 and 3.2.

I missed last month patches, I hope I won't this time :).

Commits
-------

8cfc3e92ed [Form] Hardened form type tests
2017-03-05 09:34:46 -08:00
Fabien Potencier
69bb7582ad bug #21671 [Serializer] Xml encoder throws exception for valid data (gr1ev0us)
This PR was squashed before being merged into the 2.7 branch (closes #21671).

Discussion
----------

[Serializer] Xml encoder throws exception for valid data

| Q             | A
| ------------- | ---
| Branch?       |  2.7
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #21617
| License       | MIT
| Doc PR        | None

#21617  Xml encoder throws exception for valid data

- add tests for bool and object encoding
- fix encoding for object in array and field

Commits
-------

5c2d4c671e [Serializer] Xml encoder throws exception for valid data
2017-03-05 09:23:36 -08:00
gr1ev0us
5c2d4c671e [Serializer] Xml encoder throws exception for valid data 2017-03-05 09:23:23 -08:00
HeahDude
8cfc3e92ed [Form] Hardened form type tests 2017-03-05 17:53:01 +01:00
Robin Chalas
32be16b239 Move RoutingResolverPass to the Routing component 2017-03-05 16:12:05 +01:00
Nicolas Grekas
1d9663326e [DI] Allow creating ServiceLocator-based services in extensions 2017-03-05 14:36:05 +01:00
Chris Wilkinson
32301c3a30 Allow a custom query string parameter 2017-03-05 11:22:32 +00:00
Nicolas Grekas
6bfa483712 Merge branch '3.2'
* 3.2:
  [DI] Remove unused legacy arg in XmlFileLoaderTest
2017-03-05 10:42:14 +01:00
Nicolas Grekas
db4ab9d0d6 [DI] Remove unused legacy arg in XmlFileLoaderTest 2017-03-05 01:06:55 +01:00
Christian Flothmann
5c38c4f2e5 [Form] fix BC layer for form type guessers 2017-03-04 16:52:39 +01:00
Fabien Potencier
b118c650a3 feature #21815 [FrameworkBundle][HttpKernel] Move ControllerArgumentValueResolverPass to the HttpKernel component (chalasr)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[FrameworkBundle][HttpKernel] Move ControllerArgumentValueResolverPass to the HttpKernel component

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | yes
| Tests pass?   | yes
| Fixed tickets | n/a
| License       | MIT
| Doc PR        | n/a

Commits
-------

8bad8a109c Move ControllerArgumentValueResolverPass to the HttpKernel component
2017-03-04 07:06:49 -08:00
Fabien Potencier
255b645d1b feature #21824 Add deprecation note on routing class parameters (lepiaf)
This PR was merged into the 3.3-dev branch.

Discussion
----------

Add deprecation note on routing class parameters

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | yes
| Tests pass?   | yes
| Fixed tickets | https://github.com/symfony/symfony/issues/21735
| License       | MIT
| Doc PR        | no

Create PR with note about deprecation of class parameters.

https://github.com/symfony/symfony/pull/21739#issuecomment-283413593

Commits
-------

5b0641ebe1 Add deprecation note on routing class parameters
2017-03-04 07:01:34 -08:00
Fabien Potencier
fd94048285 fixed CS 2017-03-04 06:54:02 -08:00
Christian Flothmann
0fb09293fd context listener: hardening user provider handling 2017-03-04 13:36:23 +01:00
Nicolas Grekas
ecd1ba3ef1 minor #21863 [Security] fix test class location (xabbuh)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[Security] fix test class location

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

Keeping the test file in the old location means that it is not available in the `symfony/security-http` subtree split.

Commits
-------

b4e803a [Security] fix test class location
2017-03-04 13:27:15 +01:00
Nicolas Grekas
a358675972 Merge branch '3.2'
* 3.2:
  [Security] fix Composer constraint
  Provide less state in getRequestFormat
  fix test class location
  Static code analysis with Php Inspections (EA Extended): dead code dropped, couple bugs fixed
  Adding use statement for InvalidArgumentException
2017-03-04 13:23:47 +01:00
Nicolas Grekas
4ee9d563c5 Merge branch '2.8' into 3.2
* 2.8:
  [Security] fix Composer constraint
  Provide less state in getRequestFormat
  fix test class location
  Static code analysis with Php Inspections (EA Extended): dead code dropped, couple bugs fixed
2017-03-04 13:23:14 +01:00
Nicolas Grekas
6e9d1bbf32 Merge branch '2.7' into 2.8
* 2.7:
  [Security] fix Composer constraint
  Provide less state in getRequestFormat
  fix test class location
  Static code analysis with Php Inspections (EA Extended): dead code dropped, couple bugs fixed
2017-03-04 13:20:59 +01:00
Nicolas Grekas
d75ca7fa44 minor #21864 [Security] fix Composer constraint (xabbuh)
This PR was merged into the 2.7 branch.

Discussion
----------

[Security] fix Composer constraint

| Q             | A
| ------------- | ---
| Branch?       | 2.7
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

The `MAX_USERNAME_LENGTH` constant introduced by #18733 that is used in the `UsernamePasswordFormAuthenticationListener` was first part of Symfony 2.7.13 and 2.8.6.

Commits
-------

69a572d [Security] fix Composer constraint
2017-03-04 13:01:21 +01:00
Christian Flothmann
69a572dc5d [Security] fix Composer constraint 2017-03-04 12:40:30 +01:00
Robin Chalas
c8d364b721 [Console] Do not squash input changes made from console.command event 2017-03-04 12:00:12 +01:00
Nicolas Grekas
af40fd789c minor #21862 [Security] fix test class location (xabbuh)
This PR was merged into the 2.7 branch.

Discussion
----------

[Security] fix test class location

| Q             | A
| ------------- | ---
| Branch?       | 2.7
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

Keeping the test file in the old location means that it is not available in the `symfony/security-http` subtree split.

Commits
-------

1ed0092 fix test class location
2017-03-04 11:57:10 +01:00
Daniel Wehner
1d43007f3c Provide less state in getRequestFormat 2017-03-04 11:53:31 +01:00
Christian Flothmann
b4e803a1ce [Security] fix test class location 2017-03-04 11:27:29 +01:00
Christian Flothmann
1ed0092a62 fix test class location 2017-03-04 11:20:42 +01:00
Nicolas Grekas
31b0ea3f44 bug #21860 [Form] fix BC layer of Form DependencyInjection extension (xabbuh)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[Form] fix BC layer of Form DependencyInjection extension

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

Commits
-------

ab487e4 fix BC layer of Form DependencyInjection extension
2017-03-04 10:40:37 +01:00
Christian Flothmann
ab487e48ca fix BC layer of Form DependencyInjection extension 2017-03-04 00:22:30 +01:00
Vladimir Reznichenko
e1773ee2b8 Static code analysis with Php Inspections (EA Extended): dead code dropped, couple bugs fixed 2017-03-03 17:35:37 +01:00
Tobias Nyholm
187f65bb33 Adding use statement for InvalidArgumentException 2017-03-03 07:24:16 -08:00
Jakub Zalas
344114024b
[Router] Follow symlinks and skip dots in the annotation directory loader
This will make it consistent with other loaders.
2017-03-03 16:02:38 +01:00
Robin Chalas
8bad8a109c Move ControllerArgumentValueResolverPass to the HttpKernel component 2017-03-03 13:55:06 +01:00
Nicolas Grekas
9a2b2de64f [HttpFoundation] Fix Request::getHost() when having several hosts in X_FORWARDED_HOST 2017-03-03 11:02:41 +01:00
Robin Chalas
6f84877138 [Routing] Fix AnnotationDirectionLoaderTest 2017-03-03 10:58:26 +01:00
Christian Flothmann
fdfcb220e5 [FrameworkBundle] fix a minor typo 2017-03-03 09:31:18 +01:00
Fabien Potencier
1a957100c2 Merge branch '3.2'
* 3.2:
  [Config] removed obsolete code
  [Form] Improve rounding precision
  [Routing] Ignore hidden directories when loading routes from annotations
  fixed CS
2017-03-02 13:35:04 -08:00
Fabien Potencier
86675f3faa Merge branch '2.8' into 3.2
* 2.8:
  fixed CS
2017-03-02 13:34:34 -08:00
Fabien Potencier
a19e3fe970 Merge branch '2.7' into 2.8
* 2.7:
  fixed CS
2017-03-02 13:33:27 -08:00
Fabien Potencier
cb12e323a5 minor #21814 fixed CS (fabpot)
This PR was merged into the 2.7 branch.

Discussion
----------

fixed CS

| Q             | A
| ------------- | ---
| Branch?       | 2.7
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | n/a
| License       | MIT
| Doc PR        | n/a

Commits
-------

ad0bb6ac53 fixed CS
2017-03-02 13:32:57 -08:00
Fabien Potencier
50b9126f13 feature #18193 [FrameworkBundle] Introduce autowirable ControllerTrait (dunglas)
This PR was squashed before being merged into the 3.3-dev branch (closes #18193).

Discussion
----------

[FrameworkBundle] Introduce autowirable ControllerTrait

| Q | A |
| --- | --- |
| Branch | master |
| Bug fix? | no |
| New feature? | yes |
| BC breaks? | no |
| Deprecations? | no |
| Tests pass? | yes |
| Fixed tickets | #16863 |
| License | MIT |
| Doc PR | todo |

This is the missing part of the new controller system and it's fully BC with the old one.

Used together with the existing autowiring system, #17608 and [DunglasActionBundle](https://github.com/dunglas/DunglasActionBundle) it permits to inject explicit dependencies in controllers with 0 line of config. It's a great DX improvement for Symfony.
It also has a lot of another advantages including enabling to reuse controller accros frameworks and make them easier to test. See https://dunglas.fr/2016/01/dunglasactionbundle-symfony-controllers-redesigned/ for all arguments.

Magic methods of old controllers are still available if you use this new trait in actions.

For instance, the [`BlogController::newAction`](https://github.com/symfony/symfony-demo/blob/master/src/AppBundle/Controller/Admin/BlogController.php#L70) form the `symfony-demo` can now looks like:

``` php
namespace AppBundle\Action\Admin;

use AppBundle\Form\PostType;
use AppBundle\Utils\Slugger;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\ControllerTrait;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;

class NewAction {
    use ControllerTrait;

    private $slugger;

    public function __construct(Slugger $slugger)
    {
        $this->slugger = $slugger;
    }

    /**
     * @Route("/new", name="admin_post_new")
     */
    public function __invoke(Request $request)
    {
        $post = new Post();
        $post->setAuthorEmail($this->getUser()->getEmail());

        $form = $this->createForm(PostType::class, $post)->add('saveAndCreateNew', SubmitType::class);
        $form->handleRequest($request);

        if ($form->isSubmitted() && $form->isValid()) {
            $post->setSlug($this->slugger->slugify($post->getTitle()));
            $entityManager = $this->getDoctrine()->getManager();
            $entityManager->persist($post);
            $entityManager->flush();

            $this->addFlash('success', 'post.created_successfully');
            if ($form->get('saveAndCreateNew')->isClicked()) {
                return $this->redirectToRoute('admin_post_new');
            }

            return $this->redirectToRoute('admin_post_index');
        }

        return $this->render('admin/blog/new.html.twig', array(
            'post' => $post,
            'form' => $form->createView(),
        ));
    }
}
```

As you can see, there is no need to register the `slugger` service in `services.yml` anymore and the dependency is explicitly injected. In fact the container is not injected in controllers anymore.

Convenience methods still work if the `ControllerTrait` is used (of course it's not mandatory). Here I've made the choice to use an invokable class but this is 100% optional, a class can still contain several actions if wanted.

Annotations like `@Route` still work too. The old `abstract` controller isn't deprecated. There is no valid reason to deprecate it IMO. People liking using the "old" way still can.

Unless in #16863, there is only one trait. This trait/class is basically a bunch of proxy methods to help newcomers. If you want to use only some methods, or want explicit dependencies (better), just inject the service you need in the constructor and don't use the trait.

I'll create open a PR on the standard edition soon to include ActionBundle and provide a dev version of the standard edition to be able to play with this new system.

I'll also backport tests added to the old controller test in 2.3+.

**Edit:** It now uses getter injection to benefit from lazy service loading by default.

Commits
-------

1f2521e347 [FrameworkBundle] Introduce autowirable ControllerTrait
2017-03-02 12:20:21 -08:00
Kévin Dunglas
1f2521e347 [FrameworkBundle] Introduce autowirable ControllerTrait 2017-03-02 12:20:19 -08:00
Nicolas Grekas
97a69d9e6b [Config] Fix associative sorting in FileLoader 2017-03-02 20:13:25 +01:00
Fabien Potencier
26c54c700b simplified code 2017-03-02 10:25:18 -08:00
Fabien Potencier
3b4a8f3730 feature #20680 DoctrineDataCollector: taught sanitizeParam to support classes with __toString implemented. (FractalizeR)
This PR was squashed before being merged into the 3.3-dev branch (closes #20680).

Discussion
----------

DoctrineDataCollector: taught sanitizeParam to support classes with __toString implemented.

This PR teaches \Symfony\Bridge\Doctrine\DataCollector\DoctrineDataCollector::sanitizeParam support objects, which implement __toString and therefore can be represented as a string with more sense, than "(object) ClassName". It also includes test for the feature.

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | [20673](https://github.com/symfony/symfony/issues/20673)
| License       | MIT
| Doc PR        | no

Commits
-------

f2970f22ac DoctrineDataCollector: taught sanitizeParam to support classes with __toString implemented.
2017-03-02 10:22:47 -08:00
Vladislav Rastrusny
f2970f22ac DoctrineDataCollector: taught sanitizeParam to support classes with __toString implemented. 2017-03-02 10:22:46 -08:00
Fabien Potencier
e2e9c94721 bug #21833 [Config] Sort "globbed" paths to make them predictable (nicolas-grekas)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[Config] Sort "globbed" paths to make them predictable

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

Spotted while reviewing #21832
ping @jakzal FYI

Note that glob already sorts its output, and Finder and glob skip dot dirs.

Commits
-------

ea1defff53 [Config] Sort "globbed" paths to make them predictable
2017-03-02 08:00:18 -08:00
Fabien Potencier
6aa87febf0 [Config] removed obsolete code 2017-03-02 07:58:09 -08:00
Fabien Potencier
e1558cc042 Merge branch '2.8' into 3.2
* 2.8:
  [Form] Improve rounding precision
  [Routing] Ignore hidden directories when loading routes from annotations
2017-03-02 07:57:24 -08:00
Fabien Potencier
db38c6f629 Merge branch '2.7' into 2.8
* 2.7:
  [Form] Improve rounding precision
  [Routing] Ignore hidden directories when loading routes from annotations
2017-03-02 07:56:34 -08:00
Fabien Potencier
c579b96cef bug #21832 [Routing] Ignore hidden directories when loading routes from annotations (jakzal)
This PR was merged into the 2.7 branch.

Discussion
----------

[Routing] Ignore hidden directories when loading routes from annotations

| Q             | A
| ------------- | ---
| Branch?       | 2.7
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #21497
| License       | MIT
| Doc PR        | -

The problem surfaced after implementing #18869. Therefore it doesn't exist on 2.7, but I'd still merge it there to avoid conflicts when merging between branches. Without this fix, the oldest branch the added test will fail is 3.2.

Commits
-------

ce9df0237c [Routing] Ignore hidden directories when loading routes from annotations
2017-03-02 07:54:09 -08:00
foaly-nr1
e50804cef4 [Form] Improve rounding precision 2017-03-02 07:52:21 -08:00
Jakub Zalas
ce9df0237c
[Routing] Ignore hidden directories when loading routes from annotations 2017-03-02 14:51:26 +00:00
Christian Flothmann
39c936c2a5 [PhpUnitBridge] fix merge 2017-03-02 13:54:15 +01:00
Nicolas Grekas
380cc2c28b Fix merge 2017-03-02 13:29:22 +01:00
Nicolas Grekas
fbd10f163c bug #21831 [Yaml] Fix legacy support for omitting mapping key (ogizanagi)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[Yaml] Fix legacy support for omitting mapping key

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | N/A
| License       | MIT
| Doc PR        | N/A

Quick and dirty fix for the failing legacy `InlineTest::testOmittedMappingKeyIsParsedAsColon()` test (failing since https://github.com/symfony/symfony/pull/21118).

Ping @xabbuh : I'm not used to the yaml component codebase and it's probably not the most pleasant one to read. 😄 So if you think there is a cleaner way to go, please just close this one in favor of yours.

Commits
-------

d246f2f [Yaml] Fix legacy support for omitting mapping key
2017-03-02 13:16:39 +01:00
Nicolas Grekas
18315b4922 feature #21828 [PhpUnitBridge] include expected deprecations in assertion counter (xabbuh)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[PhpUnitBridge] include expected deprecations in assertion counter

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | https://github.com/symfony/symfony/pull/21786#issuecomment-283074426
| License       | MIT
| Doc PR        |

We still need to include the changes from #21786 as we cannot increment the number of assertions in the `startTest()` method (the PHPUnit test runner resets the counter after the listeners have been executed).

Commits
-------

cdcd5ae include expected deprecations in assertion counter
2017-03-02 13:15:41 +01:00
Nicolas Grekas
ea1defff53 [Config] Sort "globbed" paths to make them predictable 2017-03-02 11:34:07 +01:00
Fabien Potencier
0413e1832f bug #21826 [PhpUnitBride] disable global test listener when not registered (xabbuh)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[PhpUnitBride] disable global test listener when not registered

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

The global test listener is always initialized to register the clock
mock and DNS mock as soon as possible. However, when the listener is
registered locally through the PHPUnit config, it will never be
registered as a listener. In thise case, the state of the local
listener must be reset to correctly report expected deprecation test
results.

Commits
-------

f4cd6708b7 disable global test listener when not registered
2017-03-01 17:50:00 -08:00
Fabien Potencier
06d150a55e Merge branch '3.2'
* 3.2:
  disable global test listener when not registered
2017-03-01 17:49:24 -08:00
Fabien Potencier
b45e99f7cc Merge branch '2.8' into 3.2
* 2.8:
  disable global test listener when not registered
2017-03-01 17:46:11 -08:00
Maxime Steinhausser
d246f2f7c5 [Yaml] Fix legacy support for omitting mapping key 2017-03-01 23:36:19 +01:00
Kévin Dunglas
8f0b629726
[DependencyInjection] Add a missing test for @required autowiring 2017-03-01 22:48:20 +01:00
Thierry Thuon
5b0641ebe1 Add deprecation note on routing class parameters 2017-03-01 21:50:23 +01:00
Fabien Potencier
3fa8a0571d feature #21763 [DI] Replace wildcard-based methods autowiring by @required annotation (nicolas-grekas)
This PR was squashed before being merged into the 3.3-dev branch (closes #21763).

Discussion
----------

[DI] Replace wildcard-based methods autowiring by `@required` annotation

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no (affects things that are only on master)
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

While playing a bit with new features in master around DI configuration, several people around me got bitten by wildcard-based autowiring. The typical example is adding `autowire: [set*]` in `_defaults`: use that on `resource: ../src/Command/` PSR4-based loading and boom, `setApplication` and `setHelperSet` will now be wrongly called. You could tell me "of course, don't to that" - but being bitten so early on a master-only feature makes me really unconfident that this will be easy enough for people after the release.

If wildcard-based autowiring is removed, then I don't see anymore the need for allowing arrays as in `autowire: [setFoo,getBar]`. Moreover, this array syntax has a core DX issue: it's a dead end as far as the learning curve is concerned. You learn it, then when becoming a more advanced dev, someone teaches you that you'd better use another syntax: explicit wiring.

And in fact, we don't need it at all, because something else already exists: just declare a method call, but don't define its arguments. If `autowire: true` is set, then the AutowiringPass already fills in the holes. There is only one tweak required to make this work: don't autowire optional arguments for method calls - or that'd be a BC break. To my PoV that's even better: this makes autowiring fit a "do the minimum to make it work" strategy. A really good one to me.

But there is still an issue: wildcard-based autowiring fits a need. Namely, it allows one to define a convention (eg. `'set*'`), and have all such methods that follow the convention be autowired. To me, this looks like doing it reverse (the DI config should adapt to the code, not reverse). So, to fill this need, let the declaration be in the source: just use an annotation!

This PR adds support for the `@required` annotation, borrowed from the Spring framework:
https://www.tutorialspoint.com/spring/spring_required_annotation.htm

Using the annotation is totally optional of course. If you do, *and if autowiring is on*, then it'll be autowired. If you don't, nothing changes: do manual wiring.

Even when not using autowiring, the annotation is still a nice hint for the consumer of your classes: it tells the reader that this method needs to be called for correct instantiation - thus lowering one drawback of setter injection (discoverability).

The implementation of the annotation parsing is done using a few regexp (no dep on any complex parser) - and works with inheritance, by leveraging the `@inheritdoc` tag (the default behavior being to *not* inherit anything from parent methods).

All in all, looking at the diff stats, it makes everything simpler. Good sign, isn't it?

Commits
-------

f286fcc25f [DI] Replace wildcard-based methods autowiring by `@required` annotation
9081699980 Revert "minor #21315 [DI][FrameworkBundle] Show autowired methods in descriptors (ogizanagi)"
2017-03-01 12:47:24 -08:00
Fabien Potencier
ad0bb6ac53 fixed CS 2017-03-01 11:43:24 -08:00
Christian Flothmann
cdcd5ae9c5 include expected deprecations in assertion counter 2017-03-01 20:29:42 +01:00
Christian Flothmann
f4cd6708b7 disable global test listener when not registered
The global test listener is always initialized to register the clock
mock and DNS mock as soon as possible. However, when the listener is
registered locally through the PHPUnit config, it will never be
registered as a listener. In thise case, the state of the local
listener must be reset to correctly report expected deprecation test
results.
2017-03-01 20:12:35 +01:00
Christian Flothmann
e068661240 disable global test listener when not registered
The global test listener is always initialized to register the clock
mock and DNS mock as soon as possible. However, when the listener is
registered locally through the PHPUnit config, it will never be
registered as a listener. In thise case, the state of the local
listener must be reset to correctly report expected deprecation test
results.
2017-03-01 20:11:57 +01:00
Fabien Potencier
8d99d5758a Merge branch '3.2'
* 3.2:
  fixed tests
  fixed tests
  revert typo fix
  [Form] Fix ChoiceType to ensure submitted data is not nested unnecessarily
  Fix phpstorm helper to the official format
  Test inline styles with non-decorated formatter
  Fix RuntimeException when an Emacs buffer is modified
  [Yaml] add tests for specific mapping keys
2017-03-01 10:19:35 -08:00
Fabien Potencier
120f29344d fixed tests 2017-03-01 10:18:36 -08:00
Fabien Potencier
203625ce07 Merge branch '2.8' into 3.2
* 2.8:
  fixed tests
  revert typo fix
  [Form] Fix ChoiceType to ensure submitted data is not nested unnecessarily
  Test inline styles with non-decorated formatter
  Fix RuntimeException when an Emacs buffer is modified
  [Yaml] add tests for specific mapping keys
2017-03-01 10:18:25 -08:00
Fabien Potencier
4b27628bca fixed tests 2017-03-01 10:16:08 -08:00
Fabien Potencier
2d174f2bc3 Merge branch '2.7' into 2.8
* 2.7:
  revert typo fix
  [Form] Fix ChoiceType to ensure submitted data is not nested unnecessarily
  Test inline styles with non-decorated formatter
  Fix RuntimeException when an Emacs buffer is modified
  [Yaml] add tests for specific mapping keys
2017-03-01 10:13:50 -08:00
Maxime STEINHAUSSER
5b7fe852aa [Security][SecurityBundle] Enhance automatic logout url generation 2017-03-01 19:01:06 +01:00
Grégoire Paris
b717d7c672 Refactor file constraint logic 2017-03-01 09:51:56 -08:00
Robin Chalas
8ba1412cdd Fix broken AddConstraintValidatorsPassTest 2017-03-01 18:23:13 +01:00
Fabien Potencier
69374daa25 feature #21730 [DependencyInjection] Use a service locator in AddConstraintValidatorsPass (GuilhemN)
This PR was squashed before being merged into the 3.3-dev branch (closes #21730).

Discussion
----------

[DependencyInjection] Use a service locator in AddConstraintValidatorsPass

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | yes
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

Use a service locator to load constraint validators: it allows them to be private.

Commits
-------

597b6bcab6 [DependencyInjection] Use a service locator in AddConstraintValidatorsPass
2017-03-01 08:17:20 -08:00
Guilhem Niot
597b6bcab6 [DependencyInjection] Use a service locator in AddConstraintValidatorsPass 2017-03-01 08:17:18 -08:00
Fabien Potencier
8734adc724 fixed typo 2017-03-01 08:03:54 -08:00
Fabien Potencier
085ba9eb8a feature #21118 [Yaml] parse omitted inlined mapping values as null (xabbuh)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[Yaml] parse omitted inlined mapping values as null

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | https://github.com/symfony/symfony/pull/20841#discussion_r91751290
| License       | MIT
| Doc PR        |

As @GuilhemN mentioned in https://github.com/symfony/symfony/pull/20841#discussion_r91751290 when using the inline YAML notation, it is currently not possible to completely omit the mapping value to have it parsed as `null` (you have to pass `~` or `null` explicitly).

Commits
-------

c473504a95 parse omitted inlined mapping values as null
2017-03-01 07:40:34 -08:00
Christian Flothmann
c473504a95 parse omitted inlined mapping values as null 2017-03-01 16:35:56 +01:00
Fabien Potencier
7f27787dd0 bug #21811 Revert "[SecurityBundle] only pass relevant user provider" (xabbuh)
This PR was merged into the 3.3-dev branch.

Discussion
----------

Revert "[SecurityBundle] only pass relevant user provider"

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #21809, #21810
| License       | MIT
| Doc PR        |

This reverts commit d97e07fd6a (applies #21798 on `master`). There is no merge commit that could be reverted.

Commits
-------

5b016cef7b Revert "[SecurityBundle] only pass relevant user provider"
2017-03-01 07:33:13 -08:00
Fabien Potencier
36dacbc4a1 added a comment to explain a method 2017-03-01 07:10:23 -08:00
gmponos
6e94ac52ab Added a convenient method inside Session for getting internally the AttributeBagInterface and have also autompletion 2017-03-01 07:09:02 -08:00
Fabien Potencier
a786b5aaaf revert typo fix 2017-03-01 06:59:13 -08:00
Fabien Potencier
817524889c bug #21267 [Form] Fix ChoiceType to ensure submitted data is not nested unnecessarily (issei-m)
This PR was squashed before being merged into the 2.7 branch (closes #21267).

Discussion
----------

[Form] Fix ChoiceType to ensure submitted data is not nested unnecessarily

| Q             | A
| ------------- | ---
| Branch?       | 2.7
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

Fixed ChoiceType to protect against some problem caused by treating of array.

Let's say we have the choice-form like:

```php
$form = $factory->create(ChoiceType, null, [
    'choices' => [
        'A',
        'B',
        'C',
    ],
    'expanded' => true,
    'multiple' => true,
]);
```

Then, submit data like this:

```php
$form->submit([
    [], // unnecessality nested
]);
```

(Yes, I agree in most cases these situation doesn't happen, but can be)

Then, we get `array_flip(): Can only flip STRING and INTEGER values!` error at [here](6babdb3296/src/Symfony/Component/Form/Extension/Core/Type/ChoiceType.php (L114)).
Even if form is not `multiple`, annoying `Array to string conversion` error occurs in [here](6babdb3296/src/Symfony/Component/Form/ChoiceList/ArrayChoiceList.php (L144)) (via [ChoicesToValuesTransformer](5129c4cf7e/src/Symfony/Component/Form/Extension/Core/DataTransformer/ChoicesToValuesTransformer.php (L74))).
(As far as I know, non-multiple and non-expanded form has no problem, thanks to [ChoiceToValueTransformer](6babdb3296/src/Symfony/Component/Form/Extension/Core/DataTransformer/ChoiceToValueTransformer.php (L43)))

To resolve these problems, I just added a simple-validation listener to choice type.

Commits
-------

64d7a82d28 [Form] Fix ChoiceType to ensure submitted data is not nested unnecessarily
2017-03-01 06:57:41 -08:00
Issei.M
64d7a82d28 [Form] Fix ChoiceType to ensure submitted data is not nested unnecessarily 2017-03-01 06:57:38 -08:00
Fabien Potencier
891f4e7311 bug #21813 Update phpstorm helper to the official format (pierredup)
This PR was merged into the 3.2 branch.

Discussion
----------

Update phpstorm helper to the official format

| Q             | A
| ------------- | ---
| Branch?       | 3.2 <!--see comment below-->
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | N/A
| License       | MIT
| Doc PR        | N/A

Commits
-------

eb09d7cc2e Fix phpstorm helper to the official format
2017-03-01 06:55:48 -08:00
Pierre du Plessis
eb09d7cc2e Fix phpstorm helper to the official format 2017-03-01 16:46:28 +02:00
Fabien Potencier
0a15eea264 minor #21650 [Yaml] add tests for specific mapping keys (xabbuh)
This PR was merged into the 2.7 branch.

Discussion
----------

[Yaml] add tests for specific mapping keys

| Q             | A
| ------------- | ---
| Branch?       | 2.7
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | see https://github.com/symfony/symfony/pull/21643#discussion_r101703130
| License       | MIT
| Doc PR        |

Commits
-------

b8e0d705f6 [Yaml] add tests for specific mapping keys
2017-03-01 06:39:50 -08:00
Fabien Potencier
431fad02c6 bug #21788 [PhpUnitBridge] do not register the test listener twice (xabbuh)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[PhpUnitBridge] do not register the test listener twice

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

If the listener is already configured through the PHPUnit config, there
is no need to also enable it explicitly in the test runner.

Commits
-------

f7bdfd068f do not register the test listener twice
2017-03-01 06:33:32 -08:00
Fabien Potencier
ffc1cd507b bug #21731 Fix emacs link (rubenrua)
This PR was merged into the 2.7 branch.

Discussion
----------

Fix emacs link

| Q             | A
| ------------- | ---
| Branch?       | 2.7
| Bug fix?      | yes (minor)
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | none
| License       | MIT
| Doc PR        | none

When an Emacs buffer is modified, by default Emacs automatically creates a
temporary symlink in the same directory as the file being edited (e.g. Controller.php):

```
.#Controller.php -> user@host.12345:1296583136
```

where '12345' is [the Emacs' PID][1].

In this case Symfony breaks with a RuntimeException:

```
SplFileInfo::getMTime(): stat failed for ...Bundle/Controller/.#APIController.php
```

in
vendor/symfony/symfony/src/Symfony/Component/Config/Resource/DirectoryResource.php
at line 89

```
$newestMTime = max($file->getMTime(), $newestMTime);
```

[1]: https://www.gnu.org/software/emacs/manual/html_node/emacs/Interlocking.html

Commits
-------

c6f7ca6fa1 Fix RuntimeException when an Emacs buffer is modified
2017-03-01 06:05:48 -08:00
Christian Flothmann
5b016cef7b Revert "[SecurityBundle] only pass relevant user provider"
This reverts commit d97e07fd6a.
2017-03-01 14:05:00 +01:00
Robin Chalas
7a7ff24a43 Move PropertyInfoPass to the PropertyInfo component 2017-03-01 09:44:14 +01:00
Fabien Potencier
28a00dac0c feature #19822 [HttpKernel] Deprecate X-Status-Code for better alternative (jameshalsall)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[HttpKernel] Deprecate X-Status-Code for better alternative

| Q | A |
| --- | --- |
| Branch? | master |
| Bug fix? | no |
| New feature? | yes |
| BC breaks? | no |
| Deprecations? | yes |
| Tests pass? | yes |
| Fixed tickets | #12343 |
| License | MIT |
| Doc PR | https://github.com/symfony/symfony-docs/pull/6948 |

This marks the X-Status-Code header method of setting a custom response status
code in exception listeners for a better alternative. There is now a new method
on the `GetResponseForExceptionEvent` that allows successful status codes in
the response sent to the client.

The old method of setting the X-Status-Code header will now throw a deprecation warning.

Instead, in your exception listener you simply call `GetResponseForExceptionEvent::allowCustomResponseCode()` which will tell the Kernel not to override the status code of the event's response object.

Currenty the `X-Status-Code` header will still be removed, so as not to change the existing behaviour, but this is something we can remove in 4.0.

TODO:
- [x] Replace usage of X-Status-Code in `FormAuthenticationEntryPoint`
- [x] Open Silex issue
- [x] Rename method on the response
- [x] Ensure correct response code is set in `AuthenticationEntryPointInterface` implementations
- [x] Ensure the exception listeners are marking `GetResponseForExceptionEvent` as allowing a custom response code
- [x] In the Security component we should only use the new method of setting a custom response code if it is available, and fall back to the `X-Status-Code` method

Commits
-------

cc0ef282cd [HttpKernel] Deprecate X-Status-Code for better alternative
2017-02-28 22:52:11 -08:00
Fabien Potencier
4aa9508ae3 feature #21228 [Console] Explicitly passed options without value (or empty) should remain empty (chalasr)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[Console] Explicitly passed options without value (or empty) should remain empty

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #21215 https://github.com/symfony/symfony/issues/11572 https://github.com/symfony/symfony/pull/12773
| License       | MIT
| Doc PR        | n/a (maybe look at updating the existing one)

This conserves empty values for options instead of returning their default values.

Code:
```php
// cli.php
$application = new Application();
$application
    ->register('echo')
    ->addOption('prefix', null, InputOption::VALUE_OPTIONAL, null, 'my-default')
    ->addArgument('value', InputArgument::REQUIRED)
    ->setCode(function ($input, $output) {
        var_dump($input->getOption('prefix'));
    });
$application->run();
```

Before:
![before](http://image.prntscr.com/image/157d9c6c054240da8b0dce54c9ce24d6.png)

After:
![after](http://image.prntscr.com/image/4aeded77f8084d3c985687fc8cc7b54e.png)

Commits
-------

80867422ac [Console] Explicitly passed options without value (or empty) should remain empty
2017-02-28 17:10:31 -08:00
Fabien Potencier
ae52490f13 minor #21808 Fix DI test (chalasr)
This PR was merged into the 3.3-dev branch.

Discussion
----------

Fix DI test

| Q             | A
| ------------- | ---
| Branch?       | master
| Tests pass?   | yes

Should fix appveyor/travis builds

Commits
-------

8740e44086 Fix DI test
2017-02-28 17:01:26 -08:00
Robin Chalas
8740e44086 Fix DI test 2017-03-01 01:03:24 +01:00
Robin Chalas
80867422ac [Console] Explicitly passed options without value (or empty) should remain empty 2017-03-01 00:35:20 +01:00
Fabien Potencier
526d396ccd bug #21627 [DependencyInjection] make the service container builder register its own self referencing definition (hhamon)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[DependencyInjection] make the service container builder register its own self referencing definition

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | ~
| License       | MIT
| Doc PR        | ~

Commits
-------

9c97496b5f [DependencyInjection] make the service container builder register the definition of its related service container service (and aliases) in order to make compiler passes be able to reference the special service_container service.
2017-02-28 14:49:08 -08:00
Fabien Potencier
4a70919cea feature #21723 [Routing][DX] Add full route definition for invokable controller/class (yceruto)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[Routing][DX] Add full route definition for invokable controller/class

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| License       | MIT
| Doc PR        | _not yet_

Currently the [`@Route`][1] annotation can be set on the class (for global parameters only). This PR allows you to define the full route annotation for _single_ controllers on the class.

Here a common use case of [ADR pattern][3] applied to Symfony:

**Before:**
```
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;

/**
 * @Route(service="AppBundle\Controller\Hello")
 */
class Hello
{
    private $logger;

    public function __construct(LoggerInterface $logger)
    {
        $this->logger = $logger;
    }

    /**
     * @Route("/hello/{name}", name="hello")
     */
    public function __invoke($name = 'World')
    {
        $this->logger->info('log entry...');

        return new Response(sprintf('Hello %s!', $name));
    }
}
```

**After:**
```
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;

/**
 * @Route("/hello/{name}", name="hello", service="AppBundle\Controller\Hello")
 */
class Hello
{
    private $logger;

    public function __construct(LoggerInterface $logger)
    {
        $this->logger = $logger;
    }

    public function __invoke($name = 'World')
    {
        $this->logger->info('log entry...');

        return new Response(sprintf('Hello %s!', $name));
    }
}
```

This feature does not break any behavior before and works under these conditions:
 * The class cannot contain other methods with `@Route` annotation (otherwise, this works as before: used for global parameters).
 *  <del>The class `@Route` must have the `name` option defined (otherwise, the route is ignored).</del> This one is auto-generated if `null`.
 * The class must be invokable: [`__invoke()` method][2] (otherwise, the route is ignored).

Btw, this PR fix the inconsistency with other route definitions (xml, yml) where the `_controller` parameter points to the class name only (i.e. without method).

  [1]: https://github.com/symfony/symfony/tree/master/src/Symfony/Component/Routing/Annotation/Route.php
  [2]: http://php.net/manual/en/language.oop5.magic.php#object.invoke
  [3]: https://github.com/pmjones/adr

Commits
-------

34e360ade3 Add full route definition to invokable class
2017-02-28 13:57:59 -08:00
Fabien Potencier
2353a34180 feature #21768 [HttpKernel] Add a ContainerControllerResolver (psr-11) (ogizanagi)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[HttpKernel] Add a ContainerControllerResolver (psr-11)

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | N/A
| License       | MIT
| Doc PR        | N/A

Extracts the controller as service resolution from the framework bundle controller resolver in a `Symfony/Component/HttpKernel/Controller/Psr11ControllerResolver`, allowing you to use `HttpKernel` with your own psr-11 container.

Commits
-------

7bbae4159b [HttpKernel] Add a ContainerControllerResolver (psr-11)
2017-02-28 12:45:21 -08:00
Maxime Steinhausser
7bbae4159b [HttpKernel] Add a ContainerControllerResolver (psr-11) 2017-02-28 21:33:09 +01:00
Fabien Potencier
d1da474f8d feature #21690 [Form] allow form types + form type extensions + form type guessers to be private services (hhamon)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[Form] allow form types + form type extensions + form type guessers to be private services

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | ~
| License       | MIT
| Doc PR        | ~

This pull request is about making internal form services (aka form types, form type extensions and form type guessers) private. They used to be public until Symfony 3.2 for one valid reason: lazyness. However, Symfony 3.3 now comes with built-in mechanism to support effective lazy loading of private services with service locators and proxies.

This PR makes the `DependencyInjectionExtension` class of the `Form` component leverage these new DI component mechanisms. Form types, form type extensions and form type guessers can now be declared private as a best practice. We decided to make these services private as of Symfony 3.3 and of course it would break BC. But this PR introduces a BC layer using a Symfony trick to keep internal form services public. The service container currently has a known issue where private services are not really private if they're referenced by at least two other services in the container. We use this trick to maintain the legacy services public even though the new API relies on private ones. This trick is done thanks to the `deprecated.form.registry` and `deprecated.form.registry.csrf` fake services that will be removed in Symfony 4.0.

Commits
-------

600e75ce88 [Form] use new service locator in DependencyInjectionExtension class, so that form types can be made private at some point.
2017-02-28 12:26:30 -08:00
Fabien Potencier
59a3b51b9c minor #21675 [Config][FrameworkBundle] Lazy load resource checkers (ogizanagi)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[Config][FrameworkBundle] Lazy load resource checkers

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | N/A
| License       | MIT
| Doc PR        | N/A

`ResourceCheckerConfigCache::isFresh()` stops on the first resource checker supporting a resource (considered authoritative). Thus no need to instantiate other checkers.

Commits
-------

5a24ee2da1 [Config][FrameworkBundle] Lazy load resource checkers
2017-02-28 12:21:05 -08:00
Fabien Potencier
9e1b567d62 feature #21755 [Routing] Optimised dumped router matcher, prevent unneeded function calls. (frankdejonge)
This PR was squashed before being merged into the 3.3-dev branch (closes #21755).

Discussion
----------

[Routing] Optimised dumped router matcher, prevent unneeded function calls.

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | none
| License       | MIT
| Doc PR        | does not apply

The application I'm working on is fairly large. Because we had a routing issue (not caused by the framework) I looked through the dumped routing code. I spotted some easy wins. These changes brought down the time for the `match` method to run from ~ 7.5ms to ~2.5ms. It's not a lot, but it's something. I've profiled it several times with blackfire to confirm. The results were very consistent. Mind you, our application has quite a serious amount of routes, a little over 900.

Commits
-------

dd647ffc8a [Routing] Optimised dumped router matcher, prevent unneeded function calls.
2017-02-28 12:11:09 -08:00
Frank de Jonge
dd647ffc8a [Routing] Optimised dumped router matcher, prevent unneeded function calls. 2017-02-28 12:11:03 -08:00
Julien Falque
8530e05574
Test inline styles with non-decorated formatter 2017-02-28 19:03:12 +01:00
Maxime Steinhausser
5a24ee2da1 [Config][FrameworkBundle] Lazy load resource checkers 2017-02-28 18:07:25 +01:00
Fabien Potencier
41fd5d1286 feature #21375 [FrameworkBundle][Config] Move ConfigCachePass from FrameworkBundle to Config (Deamon)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[FrameworkBundle][Config] Move ConfigCachePass from FrameworkBundle to Config

| Q             | A
| ------------- | ---
| Branch?       | master<!--see comment below-->
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | yes
| Tests pass?   | yes/no
| Fixed tickets | - <!-- #-prefixed issue number(s), if any -->
| License       | MIT
| Doc PR        | <!--highly recommended for new features-->

This MR is part of the #21284 todo list
<!--
- Bug fixes must be submitted against the lowest branch where they apply
  (lowest branches are regularly merged to upper ones so they get the fixes too).
- Features and deprecations must be submitted against the master branch.
- Please fill in this template according to the PR you're about to submit.
- Replace this comment by a description of what your PR is solving.
-->

Commits
-------

bce445f452 Move ConfigCachePass from FrameworkBundle to Config
2017-02-28 08:10:35 -08:00
Nicolas Grekas
3729a157b9 bug #21803 [master] Fix issues reported by static analyse (romainneutron)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[master] Fix issues reported by static analyse

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| License       | MIT

Follow-up #21802

Commits
-------

671694d [master] Fix issues reported by static analyse
2017-02-28 16:52:13 +01:00
Fabien Potencier
adc6ba5d9d bug #21797 [DI] Simplify AutowirePass and other master-only cleanups (nicolas-grekas)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[DI] Simplify AutowirePass and other master-only cleanups

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

A few minor cleanups and fixes, and an overall simplification of AutowirePass.

Commits
-------

34e5cc7698 [DI] Simplify AutowirePass and other master-only cleanups
2017-02-28 07:41:20 -08:00
Romain Neutron
671694d0d6
[master] Fix issues reported by static analyse 2017-02-28 16:38:18 +01:00
Fabien Potencier
0f4bc14797 feature #21786 [PhpUnitBridge] testing for deprecations is not risky (xabbuh)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[PhpUnitBridge] testing for deprecations is not risky

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

Commits
-------

044cc8f14e testing for deprecations is not risky
2017-02-28 07:34:28 -08:00
Nicolas Grekas
9e4f82e9cc Merge branch '3.2'
* 3.2:
  [3.2] Fix issues reported by static analyse
  [Workflow] Remove unnecessary method calls
2017-02-28 15:44:39 +01:00
Romain Neutron
a9ccaccd41
[3.2] Fix issues reported by static analyse 2017-02-28 15:39:50 +01:00
izzyp
12d91290cc [Workflow] Remove unnecessary method calls 2017-02-28 15:33:16 +01:00
Nicolas Grekas
25d17345c0 Merge branch '3.2'
* 3.2:
  fix merge
  [2.8] Fix issues reported by static analyse
2017-02-28 15:21:44 +01:00
Nicolas Grekas
f11511e300 fix merge 2017-02-28 15:19:54 +01:00
Nicolas Grekas
f03e93395e Merge branch '2.8' into 3.2
* 2.8:
  [2.8] Fix issues reported by static analyse
2017-02-28 15:10:24 +01:00
Romain Neutron
cb14bfd166
[2.8] Fix issues reported by static analyse 2017-02-28 15:08:20 +01:00
Nicolas Grekas
6bede45549 Merge branch '3.2'
* 3.2:
  [2.7] Fix issues reported by static analyse
  [Serializer] Reduce nesting in YamlFileLoader
  [DependencyInjection] add missing dumped private services list in a container frozen constructor.
2017-02-28 14:19:28 +01:00
Nicolas Grekas
4990b6ee7c Merge branch '2.8' into 3.2
* 2.8:
  [2.7] Fix issues reported by static analyse
  [Serializer] Reduce nesting in YamlFileLoader
2017-02-28 14:16:45 +01:00
Nicolas Grekas
8881221244 Merge branch '2.7' into 2.8
* 2.7:
  [2.7] Fix issues reported by static analyse
  [Serializer] Reduce nesting in YamlFileLoader
2017-02-28 14:13:45 +01:00
Romain Neutron
e473aa8bc1
[2.7] Fix issues reported by static analyse 2017-02-28 14:08:19 +01:00
Nicolas Grekas
0f353ad6c9 minor #21754 [Serializer] Reduce nesting in YamlFileLoader (gadelat)
This PR was merged into the 2.7 branch.

Discussion
----------

[Serializer] Reduce nesting in YamlFileLoader

| Q             | A
| ------------- | ---
| Branch?       | 2.7
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

We don't need to check if $this->classes is empty, because isset takes care of it in next call anyway

Diffs on GH are hard to read for this type of change, here is old and new code:

```php
public function loadClassMetadata(ClassMetadataInterface $classMetadata)
{
    if (null === $this->classes) {
        $this->classes = $this->getClassesFromYaml();
    }

    if (!$this->classes) {
        return false;
    }

    if (isset($this->classes[$classMetadata->getName()])) {
        $yaml = $this->classes[$classMetadata->getName()];

        if (isset($yaml['attributes']) && is_array($yaml['attributes'])) {
           ...
        }

        return true;
    }

    return false;
}
```

```php
public function loadClassMetadata(ClassMetadataInterface $classMetadata)
{
    if (null === $this->classes) {
        $this->classes = $this->getClassesFromYaml();
    }

    if (!isset($this->classes[$classMetadata->getName()])) {
        return false;
    }

    $yaml = $this->classes[$classMetadata->getName()];

    if (isset($yaml['attributes']) && is_array($yaml['attributes'])) {
        ...
    }

    return true;
}
```

Commits
-------

45f0b16 [Serializer] Reduce nesting in YamlFileLoader
2017-02-28 13:57:37 +01:00
Nicolas Grekas
b69ca56e1c bug #21782 [DependencyInjection] add missing dumped private services list in a container frozen constructor. (hhamon)
This PR was merged into the 3.2 branch.

Discussion
----------

[DependencyInjection] add missing dumped private services list in a container frozen constructor.

| Q             | A
| ------------- | ---
| Branch?       | 3.2
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | ~
| License       | MIT
| Doc PR        | ~

Commits
-------

838d9ca [DependencyInjection] add missing dumped private services list in a container frozen constructor.
2017-02-28 13:46:37 +01:00
Nicolas Grekas
2afd781afe Merge branch '3.2'
* 3.2:
  Revert "bug #21791 [SecurityBundle] only pass relevant user provider (xabbuh)"
  [DependencyInjection] inline conditional statements.
2017-02-28 13:42:54 +01:00
Nicolas Grekas
fcde9e689d Merge branch '2.8' into 3.2
* 2.8:
  Revert "bug #21791 [SecurityBundle] only pass relevant user provider (xabbuh)"
  [DependencyInjection] inline conditional statements.
2017-02-28 13:37:44 +01:00
Nicolas Grekas
15106bf918 Merge branch '2.7' into 2.8
* 2.7:
  Revert "bug #21791 [SecurityBundle] only pass relevant user provider (xabbuh)"
  [DependencyInjection] inline conditional statements.
2017-02-28 13:31:05 +01:00
Nicolas Grekas
5014fd2351 bug #21799 Revert "feature #21792 [Security] deprecate multiple providers in context listener (xabbuh)" (xabbuh)
This PR was merged into the 3.3-dev branch.

Discussion
----------

Revert "feature #21792 [Security] deprecate multiple providers in context listener (xabbuh)"

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #21791
| License       | MIT
| Doc PR        |

#21792 was a mistake as pointed out by @slaci (see https://github.com/symfony/symfony/pull/21791#issuecomment-282990746) and @stof (see https://github.com/symfony/symfony/pull/21792#issuecomment-282980046).

Commits
-------

3cfa0c7 Revert "feature #21792 [Security] deprecate multiple providers in context listener (xabbuh)"
2017-02-28 13:29:33 +01:00
Nicolas Grekas
9aebfad501 bug #21798 Revert "bug #21791 [SecurityBundle] only pass relevant user provider (xabbuh)" (xabbuh)
This PR was merged into the 2.7 branch.

Discussion
----------

Revert "bug #21791 [SecurityBundle] only pass relevant user provider (xabbuh)"

| Q             | A
| ------------- | ---
| Branch?       | 2.7
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #21791
| License       | MIT
| Doc PR        |

#21791 was a mistake as pointed out by @slaci (see https://github.com/symfony/symfony/pull/21791#issuecomment-282990746) and @stof (see https://github.com/symfony/symfony/pull/21792#issuecomment-282980046).

Commits
-------

f6637dd Revert "bug #21791 [SecurityBundle] only pass relevant user provider (xabbuh)"
2017-02-28 13:27:45 +01:00
Christian Flothmann
f7bdfd068f do not register the test listener twice
If the listener is already configured through the PHPUnit config, there
is no need to also enable it explicitly in the test runner.
2017-02-28 13:22:17 +01:00
Christian Flothmann
3cfa0c7ecb Revert "feature #21792 [Security] deprecate multiple providers in context listener (xabbuh)"
This reverts commit 924c1f06bf, reversing
changes made to afff0ce43e.
2017-02-28 13:21:14 +01:00
Christian Flothmann
f6637dd900 Revert "bug #21791 [SecurityBundle] only pass relevant user provider (xabbuh)"
This reverts commit eb750be851, reversing
changes made to 70be4ba3ca.
2017-02-28 13:20:26 +01:00
Nicolas Grekas
7f012b685a bug #21794 [DI] Fix ServiceLocatorArgument::setValues() for non-reference values (chalasr)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[DI] Fix ServiceLocatorArgument::setValues() for non-reference values

| Q             | A
| ------------- | ---
| Branch?       | master
| Fixed tickets | https://github.com/symfony/symfony/pull/21625#issuecomment-282938336
| Tests pass?   | yes
| License       | MIT

`ResolveInvalidReferencesPass` [calls `setValues()`](https://github.com/symfony/symfony/blob/master/src/Symfony/Component/DependencyInjection/Compiler/ResolveInvalidReferencesPass.php#L91) with resolved invalid reference (null), the `Reference` type check should occurs at construction only.

Commits
-------

256b836 [DI] Fix ServiceLocatorArgument::setValues() for non-reference values
2017-02-28 13:08:10 +01:00
Nicolas Grekas
e0568d8214 Fix dep 2017-02-28 13:05:45 +01:00
Nicolas Grekas
34e5cc7698 [DI] Simplify AutowirePass and other master-only cleanups 2017-02-28 12:39:23 +01:00
rubenrua
c6f7ca6fa1 Fix RuntimeException when an Emacs buffer is modified
When an Emacs buffer is modified, by default Emacs automatically creates a
temporary symlink in the same directory as the file being edited (e.g. Controller.php):

```
.#Controller.php -> user@host.12345:1296583136
```

where '12345' is Emacs' PID.

In this case Symfony breaks with a RuntimeException:

```
SplFileInfo::getMTime(): stat failed for ...Bundle/Controller/.#APIController.php
```

in
vendor/symfony/symfony/src/Symfony/Component/Config/Resource/DirectoryResource.php
at line 89

```
$newestMTime = max($file->getMTime(), $newestMTime);
```
2017-02-28 12:10:07 +01:00
Robin Chalas
256b836482 [DI] Fix ServiceLocatorArgument::setValues() for non-reference values 2017-02-28 10:31:03 +01:00
Hugo Hamon
600e75ce88 [Form] use new service locator in DependencyInjectionExtension class, so that form types can be made private at some point. 2017-02-28 10:16:52 +01:00
Hugo Hamon
b7b7c5433a [DependencyInjection] inline conditional statements. 2017-02-28 10:12:48 +01:00
Nicolas Grekas
f286fcc25f [DI] Replace wildcard-based methods autowiring by @required annotation 2017-02-28 10:00:46 +01:00
Nicolas Grekas
9081699980 Revert "minor #21315 [DI][FrameworkBundle] Show autowired methods in descriptors (ogizanagi)"
This reverts commit a27accf8e5, reversing
changes made to b056d40fb3.
2017-02-28 10:00:46 +01:00
Deamon
bce445f452 Move ConfigCachePass from FrameworkBundle to Config 2017-02-28 08:42:35 +01:00
Fabien Potencier
924c1f06bf feature #21792 [Security] deprecate multiple providers in context listener (xabbuh)
This PR was squashed before being merged into the 3.3-dev branch (closes #21792).

Discussion
----------

[Security] deprecate multiple providers in context listener

 Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | yes
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

Passing multiple user providers to the context listener does not make
much sense. The listener is only responsible to refresh users for a
particular firewall. Thus, it must only be aware of the user provider
for this particular firewall.

Commits
-------

53df0de7fc [Security] deprecate multiple providers in context listener
fbd9f88e31 [SecurityBundle] only pass relevant user provider
2017-02-27 18:37:47 -08:00
Fabien Potencier
afff0ce43e Merge branch '3.2'
* 3.2:
  [SecurityBundle] only pass relevant user provider
  [Intl] Make tests pass after the ICU data update
  [Intl] Update ICU data to 58.2
  do not register the test listener twice
  [DependencyInjection] removed dead code.
  [Yaml] Stop replacing NULLs when merging
  [WebServerBundle] fixed html attribute escape
2017-02-27 18:34:20 -08:00
Fabien Potencier
65b7d43ac3 Merge branch '2.8' into 3.2
* 2.8:
  [SecurityBundle] only pass relevant user provider
  [Intl] Make tests pass after the ICU data update
  [Intl] Update ICU data to 58.2
  do not register the test listener twice
  [DependencyInjection] removed dead code.
  [Yaml] Stop replacing NULLs when merging
  [WebServerBundle] fixed html attribute escape
2017-02-27 18:30:50 -08:00
Fabien Potencier
4d4dec3d41 Merge branch '2.7' into 2.8
* 2.7:
  [SecurityBundle] only pass relevant user provider
  [Intl] Make tests pass after the ICU data update
  [Intl] Update ICU data to 58.2
  [DependencyInjection] removed dead code.
  [Yaml] Stop replacing NULLs when merging
2017-02-27 18:24:56 -08:00
Fabien Potencier
eb750be851 bug #21791 [SecurityBundle] only pass relevant user provider (xabbuh)
This PR was merged into the 2.7 branch.

Discussion
----------

[SecurityBundle] only pass relevant user provider

| Q             | A
| ------------- | ---
| Branch?       | 2.7
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #4498, #12465, #20401, #21737
| License       | MIT
| Doc PR        |

There is no need for the context listener to be aware of all the configured user providers. It must only use the provider for the current firewall (the one identified by the context key passed to the constructor) to refresh the user from the session.

Commits
-------

d97e07fd6a [SecurityBundle] only pass relevant user provider
2017-02-27 18:22:58 -08:00
Fabien Potencier
77f7a47dc5 feature #21625 Remove some container injections in favor of service locators (nicolas-grekas, chalasr)
This PR was merged into the 3.3-dev branch.

Discussion
----------

Remove some container injections in favor of service locators

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | https://github.com/symfony/symfony/pull/21553#issuecomment-279214666
| License       | MIT
| Doc PR        | n/a

Commits
-------

8293b753cf Replace some container injections by service locators
0be9ea8ba1 [EventDispatcher] Fix abstract event subscribers registration
2017-02-27 18:18:26 -08:00
Fabien Potencier
43bff2279b feature #21539 Introduce weak vendors mode (greg0ire)
This PR was merged into the 3.3-dev branch.

Discussion
----------

Introduce weak vendors mode

Deprecations coming from the vendors are segregated from other
deprecations. A new mode is introduced, in which deprecations coming
from the vendors are not taken into account when deciding to exit with
an error code.

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| License       | MIT
| Doc PR        | https://github.com/symfony/symfony-docs/pull/7453

<!--
- Bug fixes must be submitted against the lowest branch where they apply
  (lowest branches are regularly merged to upper ones so they get the fixes too).
- Features and deprecations must be submitted against the master branch.
- Please fill in this template according to the PR you're about to submit.
- Replace this comment by a description of what your PR is solving.
-->

Sample output :

# Weak vendor mode

## With both vendors and non-vendor errors

```

WARNINGS!
Tests: 1068, Assertions: 2714, Warnings: 6, Skipped: 15.

Remaining deprecation notices (1)

some error: 1x
    1x in SonataAdminBundleTest::testBuild from Sonata\AdminBundle\Tests

Remaining vendor deprecation notices (4)

Legacy deprecation notices (48)
```

Exit code is 1

## After fixing non-vendor errors

```
WARNINGS!
Tests: 1068, Assertions: 2714, Warnings: 6, Skipped: 15.

Remaining vendor deprecation notices (4)

Legacy deprecation notices (48)
```

Exit code is 0

# TODO

- [x] fix colorization issues (vendor deprecation notices are always in red)
- [x] make the vendor detection more robust
- [x] make the vendor dir configurable
- [x] ~figure out how to run tests and~ add more of them
    - [x] test on non-vendor file
    - [x] test on vendor file
- [x] do not change the output of other modes

Commits
-------

61fd043dd5 Introduce weak vendors mode
2017-02-27 17:37:33 -08:00
Nicolas Grekas
68e1cb81f2 Merge branch '3.2'
* 3.2:
  [Process] Fix ignoring of bad env var names
2017-02-27 23:48:55 +01:00
Fabien Potencier
f2aa8136a8 feature #21638 [VarDumper] Allow seamless use of Data clones (nicolas-grekas)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[VarDumper] Allow seamless use of Data clones

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | yes
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

By implementing `ArrayAccess`, `Countable`, `IteratorAggregate`, `__get`, `__isset` and `__toString`,  VarDumper's `Data` objects become seamless and behave almost identically from their original clones values, especially from the PoV of Twig.

In data collectors, this allows replacing the many nested calls to `cloneVar` by a single one.

This makes the code simpler, and should make a significant difference in term of performance.

Todo:
- [x] push a Blackfire profile comparison
- [x] double check that the profiler works as expected.

Commits
-------

ab716c64de [VarDumper] Allow seamless use of Data clones
2017-02-27 14:21:39 -08:00
Fabien Potencier
e37bff942a bug #21602 [DI] Always consider abstract getters as autowiring candidates (nicolas-grekas)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[DI] Always consider abstract getters as autowiring candidates

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes (a missing part of getter autowiring really)
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

When a definition is set to be autowired with no method explicitly configured, we already wire the constructor.
We should also autowire abstract getters - with the same reasoning that makes us autowire the constructor: without concrete getters, the class is unusable. This just makes it usable again.

Commits
-------

8f246bde1d [DI] Always consider abstract getters as autowiring candidates
2017-02-27 14:16:56 -08:00
Christian Flothmann
53df0de7fc [Security] deprecate multiple providers in context listener
Passing multiple user providers to the context listener does not make
much sense. The listener is only responsible to refresh users for a
particular firewall. Thus, it must only be aware of the user provider
for this particular firewall.
2017-02-27 23:13:46 +01:00
Christian Flothmann
fbd9f88e31 [SecurityBundle] only pass relevant user provider 2017-02-27 23:02:11 +01:00
Fabien Potencier
70be4ba3ca minor #21790 [Intl] Update ICU data to 58.2 (jakzal)
This PR was squashed before being merged into the 2.7 branch (closes #21790).

Discussion
----------

[Intl] Update ICU data to 58.2

| Q             | A
| ------------- | ---
| Branch?       | 2.7
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

ICU 58.2 was released: http://site.icu-project.org/download/58

Commits
-------

d135e5cd2f [Intl] Make tests pass after the ICU data update
65faa1043d [Intl] Update ICU data to 58.2
2017-02-27 13:58:46 -08:00
Fabien Potencier
f1f982d65a bug #21741 [DI] Fix ordering of tags inheritance (nicolas-grekas)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[DI] Fix ordering of tags inheritance

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

Tag inheritance should have predictable ordering, from child to parents.
This PR also adds tests for ResolveDefinitionInheritancePass (heavily inspired by ResolveDefinitionTemplatePass).

Commits
-------

18e7681fc5 [DI] Fix ordering of tags inheritance
2017-02-27 13:55:26 -08:00
Gabriel Ostrolucký
45f0b16b78 [Serializer] Reduce nesting in YamlFileLoader 2017-02-27 22:43:30 +01:00
Christian Flothmann
d97e07fd6a [SecurityBundle] only pass relevant user provider 2017-02-27 22:20:22 +01:00
Fabien Potencier
29b5a6e157 minor #21779 [Form][Serializer] Add missing conflicts for DI (chalasr)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[Form][Serializer] Add missing conflicts for DI

| Q             | A
| ------------- | ---
| Branch?       | master
| Tests pass?   | yes
| Fixed tickets | https://github.com/symfony/symfony/pull/21375#discussion_r103180920
| License       | MIT

They make use of `PriorityTaggedServiceTrait` which is available since 3.2 only

Commits
-------

ddae4eff50 [Form][Serializer] Add missing conflicts for DI
2017-02-27 12:39:19 -08:00
Nicolas Grekas
ab716c64de [VarDumper] Allow seamless use of Data clones 2017-02-27 21:09:01 +01:00
Christian Flothmann
044cc8f14e testing for deprecations is not risky 2017-02-27 21:04:21 +01:00
Robin Chalas
ddae4eff50 [Form][Serializer] Add missing conflicts for DI 2017-02-27 20:49:06 +01:00
Jakub Zalas
d135e5cd2f
[Intl] Make tests pass after the ICU data update 2017-02-27 19:39:35 +00:00
Jakub Zalas
65faa1043d
[Intl] Update ICU data to 58.2 2017-02-27 19:39:27 +00:00
Christian Flothmann
cee435fefd do not register the test listener twice
If the listener is already configured through the PHPUnit config, there
is no need to also enable it explicitly in the test runner.
2017-02-27 20:09:32 +01:00
Hugo Hamon
9c97496b5f [DependencyInjection] make the service container builder register the definition of its related service container service (and aliases) in order to make compiler passes be able to reference the special service_container service. 2017-02-27 17:26:21 +01:00
Hugo Hamon
838d9ca6c0 [DependencyInjection] add missing dumped private services list in a container frozen constructor. 2017-02-27 16:48:04 +01:00
Nicolas Grekas
406bb09ae3 [Process] Fix ignoring of bad env var names 2017-02-27 16:27:30 +01:00
Hugo Hamon
158b689e76 [DependencyInjection] removed dead code. 2017-02-27 16:11:02 +01:00
Jules Pietri
f0e832a6a1 [HttpKernel] Refactored SessionValueResolver 2017-02-27 08:09:42 +01:00
Fabien Potencier
fb65bd61d6 minor #21766 [DI] Remove experimental status from service-locator argument type (chalasr)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[DI] Remove experimental status from service-locator argument type

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | https://github.com/symfony/symfony/pull/21625#issuecomment-282483374, https://github.com/symfony/symfony/pull/21625#discussion_r102232221, #21710
| License       | MIT

The `service-locator` argument type is not controversial to me. We know its scope, nothing really surprising, just a map of services to be lazily loaded like `iterator` is (which is not experimental) but keyed.
About its api, it's just PSR-11 restricted to objects, nothing that can't be changed safely in the future.

As stated in https://github.com/symfony/symfony/pull/21625#issuecomment-282483374, it proven its usefulness already. I think what we were looking for by flagging it experimental is just to see it in action, we've 3 opened PRs for that (#21625, #21690, #21730).

This allows introducing deprecations for making use of the feature in the core, thus unlocks #21625 and #21690.

Commits
-------

46dc47af11 [DI] Remove experimental status from service-locator argument type
2017-02-26 14:51:27 -08:00
Fabien Potencier
43e32b86a2 feature #21164 [HttpKernel] Added the SessionValueResolver (iltar)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[HttpKernel] Added the SessionValueResolver

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #21159
| License       | MIT
| Doc PR        | (soon)

This feature adds the `SessionValueResolver`. That means that you no longer have to rely on injecting a `SessionInterface` implementation via the constructor or getting this implementation from the `Request`. Regardless of method, it does not know about the `getFlashBag()`.

By adding the `Session` to the action arguments, you can now type-hint against the implementation rather than interface, which contains the `getFlashBag()`, making it accessible rather than using duck-typing.

_It should also feel less like injecting a service into the constructor which has a state or getting a service from the request._

**Old Situation**
```php
class Controller
{
    public function __construct(SessionInterface $session) { /* ... */ }

    public function fooAction(Request $request)
    {
        $this->get('session')->get(...);
        $request->getSession()->get(...);
        $this->session->get(...)

        // duck-typing
        $this->get('session')->getFlashBag();
        $request->getSession()->getFlashBag();
        $this->session->getFlashBag();

        $this->addFlash(...);
    }
}
```

**New Situation** _- The controller shortcut for flashbag could in theory be removed now_
```php
class Controller
{
    public function fooAction(Session $session)
    {
        $session->get(...);
        $session->getFlashBag();
    }
}
```

Commits
-------

b4464dcea1 Added the SessionValueResolver
2017-02-26 14:45:04 -08:00
Robin Chalas
8293b753cf Replace some container injections by service locators 2017-02-26 14:01:31 +01:00
Robin Chalas
46dc47af11 [DI] Remove experimental status from service-locator argument type 2017-02-26 11:25:49 +01:00
Nicolas Grekas
0be9ea8ba1 [EventDispatcher] Fix abstract event subscribers registration 2017-02-26 09:54:11 +01:00
Gabriel Ostrolucký
d9674401de [Yaml] Stop replacing NULLs when merging 2017-02-25 19:32:58 +01:00
Javier Eguiluz
57a81eb992 bug #21689 [WebServerBundle] fixed html attribute escape (Seb33300)
This PR was merged into the 2.8 branch.

Discussion
----------

[WebServerBundle] fixed html attribute escape

| Q             | A
| ------------- | ---
| Branch?       | 2.8
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

In the Web Debug Toolbar, when a toolbar item has extra attributes, they are not properly escaped.
(If you put your mouse over the right toolbar item with sf version, you will see a tooltip with `""`)

Currently:
```html
title=&quot;&quot;
```

After:
```html
title=""
```

Commits
-------

1337cdb [WebServerBundle] fixed html attribute escape
2017-02-25 15:10:58 +01:00
Fabien Potencier
e58be70aca Merge branch '3.2'
* 3.2:
  Revamped the README file
  Fix missing namespace in AddConstraintValidatorPassTest
  [SecurityBundle] simplified code
  [ExpressionLanguage] Registering functions after calling evaluate(), compile() or parse() is not supported
2017-02-24 05:59:04 -08:00
Fabien Potencier
346eacd1a0 Merge branch '2.8' into 3.2
* 2.8:
  Revamped the README file
  Fix missing namespace in AddConstraintValidatorPassTest
  [ExpressionLanguage] Registering functions after calling evaluate(), compile() or parse() is not supported
2017-02-24 05:58:52 -08:00
Fabien Potencier
de95fd5fe5 Merge branch '2.7' into 2.8
* 2.7:
  Revamped the README file
  Fix missing namespace in AddConstraintValidatorPassTest
  [ExpressionLanguage] Registering functions after calling evaluate(), compile() or parse() is not supported
2017-02-24 05:57:05 -08:00
Nicolas Grekas
18e7681fc5 [DI] Fix ordering of tags inheritance 2017-02-23 23:13:03 +01:00
James Halsall
cc0ef282cd
[HttpKernel] Deprecate X-Status-Code for better alternative
This marks the X-Status-Code header method of setting a custom response
status code in exception listeners as deprecated. Instead there is now
a new method on the GetResponseForExceptionEvent that allows successful
status codes in the response sent to the client.
2017-02-23 21:30:09 +00:00
Robin Chalas
1e9ca7bead Fix missing namespace in AddConstraintValidatorPassTest 2017-02-23 22:30:07 +01:00
Fabien Potencier
518d02d565 fixed typo 2017-02-23 09:15:17 -08:00
Fabien Potencier
d1b6601612 [Config] fixed glob file loader when there is an exception 2017-02-23 08:37:29 -08:00
Yonel Ceruto
34e360ade3 Add full route definition to invokable class 2017-02-23 11:32:28 -05:00
Fabien Potencier
512742be52 [SecurityBundle] simplified code 2017-02-22 17:31:21 -08:00
Fabien Potencier
d69bb30400 feature #21718 [SecurityBundle] Don't normalize username of in-memory users (chalasr)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[SecurityBundle] Don't normalize username of in-memory users

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | yes
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | n/a
| License       | MIT
| Doc PR        | n/a

It's common to have e.g. emails as keys in `security.providers.in_memory.users` since keys are username. Actually they are normalized so `foo-bar@gmail.com` becomes `foo_bar@gmail.com` and authentication fails unexpectedly.

Commits
-------

8d03332726 [SecurityBundle] Don't normalize keys of in-memory users
2017-02-22 14:26:24 -08:00
Dany Maillard
e305369f98 [ExpressionLanguage] Registering functions after calling evaluate(), compile() or parse() is not supported 2017-02-22 14:24:23 -08:00
Robin Chalas
8d03332726 [SecurityBundle] Don't normalize keys of in-memory users 2017-02-22 18:37:26 +01:00
Iltar van der Berg
62e80fc0af Added build and class cache to kernel 2017-02-22 09:57:32 +01:00
Iltar van der Berg
b4464dcea1 Added the SessionValueResolver 2017-02-22 09:50:54 +01:00
Fabien Potencier
0e92e0a7ba Merge branch '3.2'
* 3.2:
  fixed bad merge
2017-02-21 18:38:51 -08:00
Fabien Potencier
677df7b57b fixed bad merge 2017-02-21 18:38:39 -08:00
Fabien Potencier
f2378c1ffa Merge branch '3.2'
* 3.2:
  fix priority ordering of security voters
2017-02-21 18:36:24 -08:00
Fabien Potencier
d3b1363ff1 Merge branch '2.8' into 3.2
* 2.8:
  fix priority ordering of security voters
2017-02-21 18:35:49 -08:00
Fabien Potencier
8201e47e9f Merge branch '2.7' into 2.8
* 2.7:
  fix priority ordering of security voters
2017-02-21 18:34:30 -08:00
Fabien Potencier
b675d0518c bug #21679 [SecurityBundle] fix priority ordering of security voters (xabbuh)
This PR was merged into the 2.7 branch.

Discussion
----------

[SecurityBundle] fix priority ordering of security voters

| Q             | A
| ------------- | ---
| Branch?       | 2.7
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #21660
| License       | MIT
| Doc PR        |

Could be updated in the `3.2` branch to make use of the `PriorityTaggedServiceTrait `.

Commits
-------

dcd19f3cf9 fix priority ordering of security voters
2017-02-21 18:27:23 -08:00
Grégoire Paris
61fd043dd5
Introduce weak vendors mode
A new mode is introduced, in which deprecations coming from the vendors
are not taken into account when deciding to exit with an error code. In
this mode, deprecations coming from the vendors are segregated from
other deprecations.
2017-02-21 23:18:35 +01:00
Nicolas Grekas
1d50688580 Merge branch '3.2'
* 3.2:
  fix phpunit bridge tests
2017-02-21 18:56:14 +01:00
Nicolas Grekas
1a9f9af1db Merge branch '3.2'
* 3.2:
  fix deps
2017-02-21 18:38:51 +01:00
Nicolas Grekas
ae1343b281 fix deps 2017-02-21 18:33:36 +01:00
Nicolas Grekas
6a8f9e84e6 Merge branch '3.2'
* 3.2:
  fix deps
  [DoctrineBridge] Fixed validating custom doctrine type columns
2017-02-21 17:23:07 +01:00
Nicolas Grekas
9ed5e8c184 Merge branch '2.8' into 3.2
* 2.8:
  fix deps
2017-02-21 17:21:09 +01:00
Nicolas Grekas
4584fad6ca fix deps 2017-02-21 17:18:52 +01:00
Fabien Potencier
fbcd227763 bug #21656 [DoctrineBridge] Fixed validating custom doctrine type columns (dmaicher)
This PR was merged into the 3.2 branch.

Discussion
----------

[DoctrineBridge] Fixed validating custom doctrine type columns

| Q             | A
| ------------- | ---
| Branch?       | 3.1
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #21619
| License       | MIT
| Doc PR        | -

This fixes #21619 by not assuming the invalid `$value` is a Doctrine entity if its an object

Commits
-------

ad59370241 [DoctrineBridge] Fixed validating custom doctrine type columns
2017-02-21 07:00:37 -08:00
Nicolas Grekas
4c95d19c2d Merge branch '3.2'
* 3.2:
  Use PHPUnit 6.0 on PHP 7.* test lines
2017-02-21 15:51:50 +01:00
Nicolas Grekas
442cf595be Merge branch '2.8' into 3.2
* 2.8:
  Use PHPUnit 6.0 on PHP 7.* test lines
2017-02-21 15:41:00 +01:00
Nicolas Grekas
5db127bf1b Merge branch '2.7' into 2.8
* 2.7:
  Use PHPUnit 6.0 on PHP 7.* test lines
2017-02-21 15:21:52 +01:00
Nicolas Grekas
96ecd3c798 Use PHPUnit 6.0 on PHP 7.* test lines 2017-02-21 14:43:45 +01:00
Nicolas Grekas
3064facaea Fix phpunit-bridge blacklist 2017-02-21 13:59:34 +01:00
Nicolas Grekas
ef0fcb7ff1 fix 2017-02-21 12:58:05 +01:00
Nicolas Grekas
ba8abcb5d0 Fix 5.3 compat of SymfonyTestsListener 2017-02-21 12:48:23 +01:00
Nicolas Grekas
6c0d5c90e4 feature #21694 [Bridge/PhpUnit] Add PHPUnit 6 support (nicolas-grekas)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[Bridge/PhpUnit] Add PHPUnit 6 support

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #21125
| License       | MIT
| Doc PR        | -

This PR makes our phpunit bridge compatible with all namespaced versions of phpunit, from 4.8.35 to 6.
It takes another approach than #21668 and #21221, thus replaces them.
Tested locally : tests pass when using phpunit 5.7, and fails with v6.0 because our own test suite is not yet compatible with it - but at least it runs nice.
If this were handled as usual Symfony component, we would consider some changes to be BC breaks. But in this specific case - a phpunit bridge - it makes no sense to me to apply the bc policy here. I added `@final` and `@internal` annotations to make this clearer.

Commits
-------

9e0745c [Bridge/PhpUnit] Add PHPUnit 6 support
2017-02-21 11:50:26 +01:00
Peter Rehm
e9f3faf840 Refactored other PHPUnit method calls to work with namespaced PHPUnit 6 2017-02-21 11:20:16 +01:00
Nicolas Grekas
e28f6b44e5 Merge branch '3.2'
* 3.2:
  Refactored other PHPUnit method calls to work with namespaced PHPUnit 6
  Refactored other PHPUnit method calls to work with namespaced PHPUnit 6
  Further refactorings to PHPUnit namespaces
  resolve parameters in definition classes
2017-02-21 11:07:34 +01:00
Peter Rehm
9eeec8d776 Refactored other PHPUnit method calls to work with namespaced PHPUnit 6 2017-02-21 11:04:38 +01:00
Nicolas Grekas
5fc3589381 Merge branch '2.8' into 3.2
* 2.8:
  Refactored other PHPUnit method calls to work with namespaced PHPUnit 6
  Further refactorings to PHPUnit namespaces
  resolve parameters in definition classes
2017-02-21 10:12:04 +01:00
Nicolas Grekas
f6893c7cc1 minor #21695 Refactored other PHPUnit method calls to work with namespaced PHPUnit 6 (peterrehm)
This PR was merged into the 2.8 branch.

Discussion
----------

Refactored other PHPUnit method calls to work with namespaced PHPUnit 6

| Q             | A
| ------------- | ---
| Branch?       | 2.8
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | no
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

Continued work to make Symfony PHPUnit 6 compatible.

Commits
-------

dbe8898 Refactored other PHPUnit method calls to work with namespaced PHPUnit 6
2017-02-21 10:07:19 +01:00
Peter Rehm
dbe8898644 Refactored other PHPUnit method calls to work with namespaced PHPUnit 6 2017-02-21 10:00:26 +01:00
Nicolas Grekas
9e0745c670 [Bridge/PhpUnit] Add PHPUnit 6 support 2017-02-21 09:45:22 +01:00
Nicolas Grekas
13fff761a7 Merge branch '2.7' into 2.8
* 2.7:
  Further refactorings to PHPUnit namespaces
  resolve parameters in definition classes
2017-02-21 09:33:48 +01:00
Nicolas Grekas
c55b7349ae minor #21688 Further refactorings to PHPUnit namespaces (peterrehm)
This PR was squashed before being merged into the 2.7 branch (closes #21688).

Discussion
----------

Further refactorings to PHPUnit namespaces

| Q             | A
| ------------- | ---
| Branch?       | 2.7
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | no
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

Continued work to make Symfony PHPUnit 6 compatible

Commits
-------

de8106f Further refactorings to PHPUnit namespaces
2017-02-21 09:32:28 +01:00
Peter Rehm
de8106fea6 Further refactorings to PHPUnit namespaces 2017-02-21 09:32:25 +01:00
Fabien Potencier
3e9b8f3ba5 feature #21122 [ExpressionLanguage] Create an ExpressionFunction from a PHP function name (maidmaid)
This PR was squashed before being merged into the 3.3-dev branch (closes #21122).

Discussion
----------

[ExpressionLanguage] Create an ExpressionFunction from a PHP function name

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | n/a
| License       | MIT
| Doc PR        | n/a

When we [extend Expression Language](http://symfony.com/doc/current/components/expression_language/extending.html), we often need to add PHP functions whose code is repetitive and redundant at the compiler/evaluator level. This PR proposes a new way more generic which allows to add a PHP function.

currently:

```php
$el = new ExpressionLanguage();
$compiler = function ($str) {
    return sprintf('strtoupper(%s)', $str);
};
$evaluator = function ($arguments, $str) {
    return strtoupper($str);
};
$el->addFunction(new ExpressionFunction('strtoupper', $compiler, $evaluator));
$el->evaluate('strtoupper("hello")'); // return "HELLO"
```

with this PR:

```php
$el->addFunction(ExpressionFunction::fromPhp('strtoupper'));
$el->evaluate('strtoupper("hello")'); // return "HELLO"
```

It includes PHP namespaced function:

```php
$el->addFunction(ExpressionFunction::fromPhp('My\strtoupper', 'my_strtoupper'));
$el->evaluate('my_strtoupper("hello")'); // return "HELLO"
```

Commits
-------

44d67ed5f5 [ExpressionLanguage] Create an ExpressionFunction from a PHP function name
2017-02-20 09:23:03 -08:00
Dany Maillard
44d67ed5f5 [ExpressionLanguage] Create an ExpressionFunction from a PHP function name 2017-02-20 09:23:01 -08:00
Fabien Potencier
f4db331478 minor #21676 [Serializer] Reduce complexity of NameConverter (gadelat)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[Serializer] Reduce complexity of NameConverter

Cleaner and faster implementation of camelcase normalization.
Speed improvement is particularly visible in long string input.

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

Commits
-------

50ca944278 [Serializer] Reduce complexity of NameConverter
2017-02-20 09:20:53 -08:00
Fabien Potencier
0476eb52ed feature #21653 [VarDumper] Added a way to print or not comma separator and/or trailing comma (lyrixx)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[VarDumper] Added a way to print or not comma separator and/or trailing comma

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

---

Usecase: Be able to display a dump on one line.
It's already used in the following projets: https://github.com/bobthecow/psysh/blob/master/src/Psy/VarDumper/Dumper.php#L93-L95

Commits
-------

1ef07515c1 [VarDumper] Added a way to print or not comma separator and/or trailing comma
2017-02-20 09:01:40 -08:00
Fabien Potencier
f1cf0ad334 minor #21680 [FrameworkBundle] resolve parameters in definition classes (xabbuh)
This PR was merged into the 2.7 branch.

Discussion
----------

[FrameworkBundle] resolve parameters in definition classes

| Q             | A
| ------------- | ---
| Branch?       | 2.7
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | https://github.com/symfony/symfony/pull/21637#discussion_r101814478
| License       | MIT
| Doc PR        |

Commits
-------

37ce682947 resolve parameters in definition classes
2017-02-20 08:59:53 -08:00
Fabien Potencier
eb678a097a minor #21678 [Yaml] fix DUMP_EMPTY_ARRAY_AS_SEQUENCE flag value (xabbuh)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[Yaml] fix DUMP_EMPTY_ARRAY_AS_SEQUENCE flag value

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

Commits
-------

3953d76954 fix DUMP_EMPTY_ARRAY_AS_SEQUENCE flag value
2017-02-20 08:58:22 -08:00
Sébastien ALFAIATE
1337cdb03c [WebServerBundle] fixed html attribute escape 2017-02-20 16:51:35 +01:00
Peter Rehm
b84eb86655 Updated to PHPUnit namespaces 2017-02-20 14:56:45 +01:00
Nicolas Grekas
56642c4b3d Merge branch '3.2'
* 3.2:
  Updated PHPUnit namespaces
  Add missing conflict rules for phpunit
2017-02-20 14:49:17 +01:00
Nicolas Grekas
13983d986b minor #21686 Updated PHPUnit namespaces (peterrehm)
This PR was merged into the 3.2 branch.

Discussion
----------

Updated PHPUnit namespaces

| Q             | A
| ------------- | ---
| Branch?       | 3.2
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

Follow Up of #21663

Commits
-------

c2e80e3 Updated PHPUnit namespaces
2017-02-20 14:45:48 +01:00
Nicolas Grekas
3d4e163ddb Merge branch '2.8' into 3.2
* 2.8:
  Add missing conflict rules for phpunit
2017-02-20 14:40:00 +01:00
Nicolas Grekas
f9f53b2487 Merge branch '2.7' into 2.8
* 2.7:
  Add missing conflict rules for phpunit
2017-02-20 14:37:30 +01:00
Peter Rehm
c2e80e3b8b Updated PHPUnit namespaces 2017-02-20 14:34:33 +01:00
Nicolas Grekas
3e83e02f2c Add missing conflict rules for phpunit 2017-02-20 13:48:07 +01:00
Nicolas Grekas
2f20a6ceea Merge branch '3.2'
* 3.2:
  Updated PHPUnit namespaces
2017-02-20 13:38:57 +01:00
Nicolas Grekas
95f30de91d Merge branch '2.8' into 3.2
* 2.8:
  Updated PHPUnit namespaces
2017-02-20 13:38:41 +01:00
Nicolas Grekas
f2754ebe53 minor #21663 Updated PHPUnit namespaces (peterrehm)
This PR was squashed before being merged into the 2.8 branch (closes #21663).

Discussion
----------

Updated PHPUnit namespaces

| Q             | A
| ------------- | ---
| Branch?       | 2.8
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

Follow Up of #21564

Commits
-------

205ced4 Updated PHPUnit namespaces
2017-02-20 13:35:45 +01:00
Peter Rehm
205ced409b Updated PHPUnit namespaces 2017-02-20 13:35:43 +01:00
David Maicher
ad59370241 [DoctrineBridge] Fixed validating custom doctrine type columns 2017-02-20 11:38:35 +01:00
Grégoire Pineau
1ef07515c1 [VarDumper] Added a way to print or not comma separator and/or trailing comma
Usecase: Be able to display a dump on one line.
It's already used in the following projets: https://github.com/bobthecow/psysh/blob/master/src/Psy/VarDumper/Dumper.php#L93-L95
2017-02-20 11:13:52 +01:00
Christian Flothmann
37ce682947 resolve parameters in definition classes 2017-02-20 09:01:13 +01:00
Christian Flothmann
dcd19f3cf9 fix priority ordering of security voters 2017-02-20 08:38:24 +01:00
Christian Flothmann
3953d76954 fix DUMP_EMPTY_ARRAY_AS_SEQUENCE flag value 2017-02-20 07:42:42 +01:00
Fabien Potencier
5037c2adbd Merge branch '3.2'
* 3.2:
  [Serializer] Removed duplicate operation in camelcase denormalization
  [Validator] do not guess getter method names
2017-02-19 16:48:52 -08:00
Fabien Potencier
8b0b2604f7 Merge branch '2.8' into 3.2
* 2.8:
  [Serializer] Removed duplicate operation in camelcase denormalization
  [Validator] do not guess getter method names
2017-02-19 16:48:41 -08:00
Fabien Potencier
3616d5e34f Merge branch '2.7' into 2.8
* 2.7:
  [Serializer] Removed duplicate operation in camelcase denormalization
  [Validator] do not guess getter method names
2017-02-19 16:48:26 -08:00
Gabriel Ostrolucký
32fcd91397 [Serializer] Removed duplicate operation in camelcase denormalization 2017-02-19 15:30:59 -08:00
Fabien Potencier
cf91b0af22 feature #21471 [Yaml] Allow dumping empty array as YAML sequence (c960657)
This PR was squashed before being merged into the 3.3-dev branch (closes #21471).

Discussion
----------

[Yaml] Allow dumping empty array as YAML sequence

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #9870, #15937, #16266
| License       | MIT
| Doc PR        |

PHP arrays are dumped as either YAML sequences or mappings, depending on whether the array has continuos integer keys or not.

An empty array is always dumped as a YAML mapping. Sometimes you want it dumped as a YAML sequence instead.

Commits
-------

87ffaf2b77 Bump version number
af7067c3cf Dump empty object as mapping
a6d94c1b53 [Yaml] Allow dumping empty array as YAML sequence
2017-02-19 15:22:09 -08:00
Fabien Potencier
6d77cdfd65 feature #21478 [Asset] Add support for preloading with links and HTTP/2 push (dunglas)
This PR was squashed before being merged into the 3.3-dev branch (closes #21478).

Discussion
----------

[Asset] Add support for preloading with links and HTTP/2 push

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | n/a
| License       | MIT
| Doc PR        | todo

Allows compatible clients to preload mandatory assets like scripts, stylesheets or images according to [the "preload" working draft of the W3C](https://www.w3.org/TR/preload/).
Thanks to this PR, Symfony will automatically adds `Link` HTTP headers with a `preload` relation for mandatory assets.  If an intermediate proxy supports HTTP/2 push, it will convert preload headers. For instance [Cloudflare supports this feature](https://blog.cloudflare.com/using-http-2-server-push-with-php/).

It dramatically increases pages speed and make the web greener because only one TCP connection is used to fetch all mandatory assets (decrease servers and devices loads, improve battery lives).

Usage:

Updated version:

```html
<html>
    <body>
    Hello
    <script src="{{ preload(asset('/scripts/foo.js'), 'script') }}"></script>
    </body>
</html>
```

~~First proposal:~~

```html
<html>
    <body>
    Hello
    <script src="{{ preloaded_asset('/scripts/foo.js', 'script') }}"></script>
    </body>
</html>
```

- [x] Add tests

Commits
-------

7bab21700d [Asset] Add support for preloading with links and HTTP/2 push
2017-02-19 14:57:15 -08:00
Kévin Dunglas
7bab21700d [Asset] Add support for preloading with links and HTTP/2 push 2017-02-19 14:56:07 -08:00
Fabien Potencier
eb0ffaaee7 bug #21115 [Validator] do not guess getter method names (xabbuh)
This PR was merged into the 2.7 branch.

Discussion
----------

[Validator] do not guess getter method names

| Q             | A
| ------------- | ---
| Branch?       | 2.7
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #5219, #18700
| License       | MIT
| Doc PR        | TODO

Commits
-------

bd3a90a0c3 [Validator] do not guess getter method names
2017-02-19 14:49:47 -08:00
Fabien Potencier
4abd0c6fcf feature #20632 [FrameworkBundle] Make use of stderr for non reliable output (chalasr, ogizanagi)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[FrameworkBundle] Make use of stderr for non reliable output

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | n/a
| License       | MIT
| Doc PR        | n/a

Built-in commands should make use of the proper outputs.
As a feature on master, considering that people may actually rely on stdout and the fact commands have been changed a lot since 2.7, I think it's not worth doing this change on lower branches.

Please see also #20586 which adds a `SymfonyStyle::getErrorStyle()` shortcut for easily switching to stderr.

Commits
-------

7b262d8c29 [FrameworkBundle] Use getErrorStyle() when relevant
9a3a5686c8 Use stderr for some other commands
1ee48bfd60 [FrameworkBundle] Make use of stderr for non reliable output
2017-02-19 14:38:27 -08:00
Fabien Potencier
a399e7594b Merge branch '3.2'
* 3.2:
  [DependencyInjection] Fix using autowiring types when there are more than 2 services
  [DependencyInjection] Fix autowiring collisions detection
  [DI] Bug in autowiring collisions detection
2017-02-19 14:20:06 -08:00
Fabien Potencier
043c9ad7ef Merge branch '2.8' into 3.2
* 2.8:
  [DependencyInjection] Fix using autowiring types when there are more than 2 services
  [DependencyInjection] Fix autowiring collisions detection
  [DI] Bug in autowiring collisions detection
2017-02-19 14:13:25 -08:00
Gabriel Ostrolucký
50ca944278 [Serializer] Reduce complexity of NameConverter
Cleaner and faster implementation of camelcase normalization.
Speed improvement is particularly visible in long string input.
2017-02-19 23:03:20 +01:00
Fabien Potencier
3f5c0b1976 bug #21670 [DependencyInjection] Fix autowiring types when there are more than 2 services colliding (GuilhemN)
This PR was merged into the 2.8 branch.

Discussion
----------

[DependencyInjection] Fix autowiring types when there are more than 2 services colliding

| Q             | A
| ------------- | ---
| Branch?       | 2.8
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

There is a bug in the `AutowirePass`, when using more than 2 services colliding and you want to use the autowiring types: it may not work depending on their order because `notGuessableTypes` is not reset.

Commits
-------

5981278537 [DependencyInjection] Fix using autowiring types when there are more than 2 services
2017-02-19 09:43:44 -08:00
Fabien Potencier
3cfd04bd18 bug #21665 [DependencyInjection] Fix autowiring collisions detection (nicolas-grekas, GuilhemN)
This PR was merged into the 2.8 branch.

Discussion
----------

[DependencyInjection] Fix autowiring collisions detection

| Q             | A
| ------------- | ---
| Branch?       | 2.8
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        |

Fixes https://github.com/symfony/symfony/pull/21658 by implementing the second proposal of https://github.com/symfony/symfony/pull/21658#issuecomment-280858452:
> Another idea: store the types used previously and check that new services registered don't implement them.

Commits
-------

bb70472dce [DependencyInjection] Fix autowiring collisions detection
6f578ee514 [DI] Bug in autowiring collisions detection
2017-02-19 08:09:57 -08:00
Fabien Potencier
64ec5c5faf feature #21664 [Console] simplify the implementation of SymfonyStyle::comment() (fabpot)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[Console] simplify the implementation of SymfonyStyle::comment()

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes-ish
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | n/a
| License       | MIT
| Doc PR        | n/a

Commits
-------

2321491d3f [Console] simplify the implementation of SymfonyStyle::comment()
2017-02-19 06:39:30 -08:00
Guilhem Niot
5981278537
[DependencyInjection] Fix using autowiring types when there are more than 2 services 2017-02-19 12:40:30 +01:00
Guilhem Niot
bb70472dce
[DependencyInjection] Fix autowiring collisions detection 2017-02-18 21:00:29 +01:00
Fabien Potencier
42de1453e8 fixed Composer constraints 2017-02-18 11:16:58 -08:00
Fabien Potencier
86eb217de7 fixed Composer constraints 2017-02-18 11:15:38 -08:00
Fabien Potencier
0e1596df25 fixed Composer constraints 2017-02-18 11:13:35 -08:00
Fabien Potencier
245eaa8fa2 fixed Composer constraints 2017-02-18 10:28:08 -08:00
Nicolas Grekas
c958403dfa Merge branch '3.2'
* 3.2:
  minor fix
  purge both http and https from http cache store
2017-02-18 19:15:35 +01:00
Nicolas Grekas
4fcd93b245 Merge branch '2.8' into 3.2
* 2.8:
  minor fix
  purge both http and https from http cache store
2017-02-18 19:15:21 +01:00
Nicolas Grekas
bb629f36d5 Merge branch '2.7' into 2.8
* 2.7:
  minor fix
  purge both http and https from http cache store
2017-02-18 19:11:39 +01:00
Nicolas Grekas
bc34081d37 minor fix 2017-02-18 19:10:02 +01:00
David Buchmann
15da53ca9f purge both http and https from http cache store 2017-02-18 09:59:47 -08:00
Fabien Potencier
2321491d3f [Console] simplify the implementation of SymfonyStyle::comment() 2017-02-18 09:59:26 -08:00
Nicolas Grekas
7a618fbd5f Merge branch '3.2'
* 3.2:
  Fix typo in process error message
  Update to PHPUnit namespaces
  Minor typo fix messsagesData -> messagesData
  remove translation data collector when not usable
2017-02-18 18:35:19 +01:00
Nicolas Grekas
66cad2e4c5 Merge branch '2.8' into 3.2
* 2.8:
  Update to PHPUnit namespaces
  Minor typo fix messsagesData -> messagesData
  remove translation data collector when not usable
2017-02-18 18:28:00 +01:00
Nicolas Grekas
33bae93a44 Merge branch '2.7' into 2.8
* 2.7:
  Update to PHPUnit namespaces
  remove translation data collector when not usable
2017-02-18 18:06:33 +01:00
Niklas Keller
ec4a9a054b Fix typo in process error message 2017-02-18 08:32:28 -08:00
Fabien Potencier
d7e8aec54e feature #21578 [Translation] Added a lint:xliff command for XLIFF files (javiereguiluz)
This PR was squashed before being merged into the 3.3-dev branch (closes #21578).

Discussion
----------

[Translation] Added a lint:xliff command for XLIFF files

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #19942
| License       | MIT
| Doc PR        | -

It works exactly the same as the `lint:yaml` command:

### Lint a single file
![single-file](https://cloud.githubusercontent.com/assets/73419/22821214/6b459454-ef7a-11e6-9320-029c22ab8803.png)

### Lint a bundle

![bundle](https://cloud.githubusercontent.com/assets/73419/22821215/6c2c0196-ef7a-11e6-9de0-a1816eede9b3.png)

### Get the result in JSON

![json](https://cloud.githubusercontent.com/assets/73419/22829844/bacaa68e-efa4-11e6-9341-0c3d4821c5c7.png)

Commits
-------

7609e440ff [Translation] Added a lint:xliff command for XLIFF files
2017-02-18 08:27:04 -08:00
Javier Eguiluz
7609e440ff [Translation] Added a lint:xliff command for XLIFF files 2017-02-18 08:27:02 -08:00
Fabien Potencier
025585d5e8 added support for glob loaders in Config 2017-02-18 08:06:39 -08:00
Fabien Potencier
c9684ad31f minor #21564 Update to PHPUnit namespaces (peterrehm)
This PR was squashed before being merged into the 2.7 branch (closes #21564).

Discussion
----------

Update to PHPUnit namespaces

| Q             | A
| ------------- | ---
| Branch?       | 2.7+
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #21534
| License       | MIT
| Doc PR        | -

Replaces #21540

@nicolas-grekas Is the update of the cache-id like this sufficient? Do we maybe have to specifiy 4.8.35 in simple-phpunit?

Commits
-------

ddd2dff9b2 Update to PHPUnit namespaces
2017-02-18 08:02:55 -08:00
Peter Rehm
ddd2dff9b2 Update to PHPUnit namespaces 2017-02-18 08:02:39 -08:00
Nicolas Grekas
6f578ee514 [DI] Bug in autowiring collisions detection 2017-02-18 12:32:57 +01:00
Nicolas Grekas
8c6ad5bfdc feature #21654 [PropertyInfo] Use iterators for PropertyInfoExtractor (GuilhemN)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[PropertyInfo] Use iterators for PropertyInfoExtractor

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

Most of the time, when using the cache, the property info extractors are not used: the new iterator feature looks perfect to prevent their instantiation.

Commits
-------

38523a9 [PropertyInfo] Use iterators for PropertyInfoExtractor
2017-02-18 09:12:57 +01:00
Nicolas Grekas
aaa4376ddb feature #21655 [PropertyInfo] Make classes final (GuilhemN)
This PR was squashed before being merged into the 3.3-dev branch (closes #21655).

Discussion
----------

[PropertyInfo] Make classes final

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | yes
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

The classes of the PropertyInfo component do not provide extension points, so imo it's better to make them final in 4.0.

Commits
-------

313fec9 [PropertyInfo] Make classes final
2017-02-18 09:10:32 +01:00
Guilhem N
313fec952f [PropertyInfo] Make classes final 2017-02-18 09:10:28 +01:00
Nicolas Grekas
d08ba63798 Fix ResolveDefinitionInheritancePass 2017-02-17 23:34:15 +01:00
Guilhem N
38523a9736
[PropertyInfo] Use iterators for PropertyInfoExtractor 2017-02-17 20:38:32 +01:00
Fabien Potencier
d47571f5ec feature #21530 [DependencyInjection] Add "instanceof" section for local interface-defined configs (nicolas-grekas, dunglas)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[DependencyInjection] Add "instanceof" section for local interface-defined configs

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

This is a direction follow up of #21357 on which we're working together with @dunglas. From the description posted there:

There is some work being done to include features of [DunglasActionBundle](https://github.com/dunglas/DunglasActionBundle) in the core of Symfony. The goal of all those PRs is to improve the developper experience of the framework, allow to develop faster while preserving all benefits of using Symfony (strictness, modularity, extensibility...) and make it easier to learn for newcomers.

This PR implements the tagging feature of ActionBundle in a more generic way. It will help to get rid of `AppBundle` in the the standard edition and to register automatically some classes including commands.

Here is an example of config (that can be embedded in the standard edition) to enable those features:

```yaml
# config/services.yml
services:
    _defaults:
        autowire: ['get*', 'set*'] # Enable constructor, getter and setter autowiring for all services defined in this file

    _instanceof:
        Symfony\Component\Console\Command: # Add the console.command tag to all services defined in this file having this type
            tags: ['console.command']
            # Set tags but also other settings like "public", "autowire" or "shared" here

        Twig_ExtensionInterface:
            tags: ['twig.extension']

        Symfony\Component\EventDispatcher\EventSubscriberInterface:
            tags: ['kernel.event_subscriber']

    App\: # Register all classes in the src/Controller directory as services
        psr4: ../src/{Controller,Command,Twig,EventSubscriber}
```

It's part of our 0 config initiative: controllers and commands will be automatically registered as services and "autowired", allowing the user to create and inject new services without having to write a single line of YAML or XML.
When refactoring changes are also automatically updated and don't require to update config files. It's a big win for rapid application development and prototyping.

Of course, this is fully compatible with the actual way of defining services and it's possible to switch (or mix) approaches very easily. It's even possible to start prototyping using 0config features then switch to explicit services definitions when the project becomes mature.

Commits
-------

773eca7794 [DependencyInjection] Tests + refacto for "instanceof" definitions
2fb601983f [DependencyInjection] Add "instanceof" section for local interface-defined configs
2017-02-17 10:45:15 -08:00
Kévin Dunglas
773eca7794 [DependencyInjection] Tests + refacto for "instanceof" definitions 2017-02-17 19:36:36 +01:00
Nicolas Grekas
2fb601983f [DependencyInjection] Add "instanceof" section for local interface-defined configs 2017-02-17 19:36:34 +01:00
Christian Schmidt
87ffaf2b77 Bump version number 2017-02-17 19:13:16 +01:00
Fabien Potencier
9d2bbc6dbe bug #21637 [FrameworkBundle] remove translation data collector when not usable (xabbuh)
This PR was merged into the 2.7 branch.

Discussion
----------

[FrameworkBundle] remove translation data collector when not usable

| Q             | A
| ------------- | ---
| Branch?       | 2.7
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #17957
| License       | MIT
| Doc PR        |

Commits
-------

303bb73971 remove translation data collector when not usable
2017-02-17 08:12:20 -08:00
Joeri Verdeyen
7efb4f0bd1 Minor typo fix messsagesData -> messagesData 2017-02-17 08:10:57 -08:00
Christian Flothmann
c02dca3483 [Yaml] deprecate parsing mappings without keys 2017-02-17 16:52:41 +01:00
Christian Flothmann
b8e0d705f6 [Yaml] add tests for specific mapping keys 2017-02-17 14:54:22 +01:00
Christophe Coevoet
0a3cd973ae Merge branch '3.2'
* 3.2:
  consistently parse omitted keys as the colon
  bumped Symfony version to 3.2.5
  updated VERSION for 3.2.4
  update CONTRIBUTORS for 3.2.4
  updated CHANGELOG for 3.2.4
2017-02-17 12:56:33 +01:00
Christian Flothmann
e2ebecc0cb consistently parse omitted keys as the colon 2017-02-17 11:55:39 +01:00
Nicolas Grekas
444b37d575 bug #21639 [DI] Set getter edges as lazy (nicolas-grekas)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[DI] Set getter edges as lazy

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

Fixes tests

Commits
-------

279f6a2 [DI] Set getter edges as lazy
2017-02-17 07:19:49 +01:00
Fabien Potencier
fb8abdc9fc bumped Symfony version to 3.2.5 2017-02-16 16:56:16 -08:00
Fabien Potencier
d6e241da8f updated VERSION for 3.2.4 2017-02-16 15:59:56 -08:00
Fabien Potencier
d7aec48fa8 Merge branch '3.2'
* 3.2:
  Revert "bug #21436 [DependencyInjection] check for circular refs caused by method calls (xabbuh)"
  Static code analysis with Php Inspections (EA Extended)
  [VarDumper] Added missing persistent stream cast
  remove unused translation file
  reverted usage of isNan
2017-02-16 14:50:29 -08:00
Fabien Potencier
ea12123bcf Merge branch '2.8' into 3.2
* 2.8:
  Revert "bug #21436 [DependencyInjection] check for circular refs caused by method calls (xabbuh)"
  Static code analysis with Php Inspections (EA Extended)
  [VarDumper] Added missing persistent stream cast
2017-02-16 14:46:52 -08:00
Fabien Potencier
f53672f82b Merge branch '2.7' into 2.8
* 2.7:
  Revert "bug #21436 [DependencyInjection] check for circular refs caused by method calls (xabbuh)"
  Static code analysis with Php Inspections (EA Extended)
  [VarDumper] Added missing persistent stream cast
2017-02-16 14:43:37 -08:00
Nicolas Grekas
279f6a2512 [DI] Set getter edges as lazy 2017-02-16 23:39:11 +01:00
Fabien Potencier
68d6415955 Revert "bug #21436 [DependencyInjection] check for circular refs caused by method calls (xabbuh)"
This reverts commit 3441b1586f, reversing
changes made to d1f4cb27fd.
2017-02-16 14:39:07 -08:00
Fabien Potencier
a5c099c829 minor #21537 Static code analysis with Php Inspections (EA Extended) (kalessil)
This PR was squashed before being merged into the 2.7 branch (closes #21537).

Discussion
----------

Static code analysis with Php Inspections (EA Extended)

| Q             | A
| ------------- | ---
| Branch?       | 2.7
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | --
| License       | MIT
| Doc PR        | --

- Unnecessary proxy methods and methods duplicating  parents ones removed;
- Type casings instead of PHP4 functions;
- Usage of copy instead of file combining file get/put contents;
- One time use variables cleaned up;
- Superfluous functions calls in loop termination conditions fixed;

Commits
-------

3feeca74d0 Static code analysis with Php Inspections (EA Extended)
2017-02-16 14:27:03 -08:00
Vladimir Reznichenko
3feeca74d0 Static code analysis with Php Inspections (EA Extended) 2017-02-16 14:26:15 -08:00
Christian Flothmann
303bb73971 remove translation data collector when not usable 2017-02-16 23:20:46 +01:00
Fabien Potencier
2d67c0653e fixed test 2017-02-16 13:29:17 -08:00
Fabien Potencier
38490dac21 bug #21634 [VarDumper] Added missing persistent stream cast (lyrixx)
This PR was merged into the 2.7 branch.

Discussion
----------

[VarDumper] Added missing persistent stream cast

| Q             | A
| ------------- | ---
| Branch?       | 2.7
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

Commits
-------

cab9f7eb8f [VarDumper] Added missing persistent stream cast
2017-02-16 11:29:17 -08:00
Grégoire Pineau
cab9f7eb8f [VarDumper] Added missing persistent stream cast 2017-02-16 18:03:48 +01:00
Christian Flothmann
ea0c1cd6e7 remove unused translation file
With Symfony 3, translation files have been moved to the Security Core
component.
2017-02-16 17:54:26 +01:00
Fabien Potencier
c24c4d544d reverted usage of isNan 2017-02-16 08:34:18 -08:00
Fabien Potencier
c5bdfc542d minor #21631 [DI] Don't try to instantiate reflection class if it doesn't exist (chalasr)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[DI] Don't try to instantiate reflection class if it doesn't exist

| Q             | A
| ------------- | ---
| Branch?       | master
| Tests pass?   | yes
| Fixed tickets | n/a
| License       | MIT
| Doc PR        | n/a

Introduced in https://github.com/symfony/symfony/pull/21419 so master only.
It breaks on bundles that ~~do not use the convention for naming their `Configuration`~~ do not have configuration, e.g. SecurityBundle's FirewallEntryPointExtension for which tests are actually broken (see travis).

Commits
-------

f9b917a60a [DI] Don't instantiate unexisting reflection class
2017-02-16 07:56:23 -08:00
Fabien Potencier
b5c6766b2d reverted usage of isNan 2017-02-16 07:37:45 -08:00
Maxime Steinhausser
366aefd75f [SecurityBundle] UserPasswordEncoderCommand: ask user class choice question 2017-02-16 16:01:42 +01:00
Robin Chalas
f9b917a60a [DI] Don't instantiate unexisting reflection class 2017-02-16 15:59:55 +01:00
Fabien Potencier
c3230f0a97 minor #20896 [Console] Enhance MarkdownDescriptor (ogizanagi)
This PR was squashed before being merged into the 3.3-dev branch (closes #20896).

Discussion
----------

[Console] Enhance MarkdownDescriptor

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | N/A
| License       | MIT
| Doc PR        | N/A

In order to add usefulness to this descriptor, this PR allows to jump to a command description by clicking on the command name on the application summary.

It's not a generic approach but IMHO a quick win that should work at least for Github flavoured markdown.

The markdown format should also avoid using `Application::getLongVersion` as the markdown document title, as it may contain tags (and unnecessary information using the framework).

Lastly, the markdown format is now cleaned from tags initially used for console output formatting and only keeps properly escaped ones.

Commits
-------

ef5b087b4f Do not output formatting tags
6896865bcc [Console] MarkdownDescriptor: Don't use getLongVersion
fc2395e237 [Console] MarkdownDescriptor: Link to commands anchors
2017-02-16 06:18:56 -08:00
Fabien Potencier
6580a49706 Merge branch '3.2'
* 3.2:
  Permit empty suffix on Windows
  fixed CS
  [FrameworkBundle] Remove unused import
  [Console][Table] fixed render when using multiple rowspans.
  add docblocks for Twig url and path function to improve ide completion
  check for circular refs caused by method calls
  [Serializer] fix upper camel case conversion (see #21399)
  [DI] Auto register extension configuration classes as a resource
  [Console] Updated phpdoc on return types
2017-02-16 06:15:30 -08:00
Fabien Potencier
b3ba37d862 Merge branch '2.8' into 3.2
* 2.8:
  Permit empty suffix on Windows
  [Console][Table] fixed render when using multiple rowspans.
  add docblocks for Twig url and path function to improve ide completion
  check for circular refs caused by method calls
  [Serializer] fix upper camel case conversion (see #21399)
  [DI] Auto register extension configuration classes as a resource
  [Console] Updated phpdoc on return types
2017-02-16 06:07:22 -08:00
Fabien Potencier
e103e1d1db Merge branch '2.7' into 2.8
* 2.7:
  Permit empty suffix on Windows
  [Console][Table] fixed render when using multiple rowspans.
  add docblocks for Twig url and path function to improve ide completion
  check for circular refs caused by method calls
  [Serializer] fix upper camel case conversion (see #21399)
  [DI] Auto register extension configuration classes as a resource
  [Console] Updated phpdoc on return types
2017-02-16 06:06:24 -08:00
Fabien Potencier
3860b0b392 optimized code 2017-02-16 05:36:15 -08:00
Fabien Potencier
02166d0101 fixed CS 2017-02-16 05:35:07 -08:00
Fabien Potencier
923d50b625 feature #21283 [Form][FrameworkBundle] Move FormPass to the Form component (chalasr)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[Form][FrameworkBundle] Move FormPass to the Form component

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | yes
| Tests pass?   | yes
| Fixed tickets | n/a
| License       | MIT
| Doc PR        | n/a

So that anyone using only Form and DI can use it for registering form types/type guessers.
Follows #19443, related to #21284

Commits
-------

e68a6d963c [FrameworkBundle][Form] Move FormPass to the Form component
2017-02-16 05:34:28 -08:00
Fabien Potencier
846d24ae36 feature #21293 [FrameworkBundle][Serializer] Move SerializerPass to the Serializer (chalasr)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[FrameworkBundle][Serializer] Move SerializerPass to the Serializer

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | yes
| Tests pass?   | yes
| Fixed tickets | n/a
| License       | MIT
| Doc PR        | n/a

Part of #21284

Commits
-------

95cf5084c0 [FrameworkBundle][Serializer] Move SerializerPass to the Serializer
2017-02-16 05:30:28 -08:00
Fabien Potencier
a27accf8e5 minor #21315 [DI][FrameworkBundle] Show autowired methods in descriptors (ogizanagi)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[DI][FrameworkBundle] Show autowired methods in descriptors

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | N/A
| License       | MIT
| Doc PR        | N/A

so we can see the autowired methods using `debug:container`.

Commits
-------

482435c501 [DI][FrameworkBundle] Show autowired methods in descriptors
2017-02-16 05:25:28 -08:00
Fabien Potencier
3441b1586f bug #21436 [DependencyInjection] check for circular refs caused by method calls (xabbuh)
This PR was merged into the 2.7 branch.

Discussion
----------

[DependencyInjection] check for circular refs caused by method calls

| Q             | A
| ------------- | ---
| Branch?       | 2.7
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #19362
| License       | MIT
| Doc PR        |

Before we check for circular references, dependencies coming from method calls are not part of the dependency graph. That why the pass is not able to detect circular references like the one described in #19362 during compilation of the container.

If we add another check after all the optimisation passes have been processed, we should be able to detect these circular references too.

Commits
-------

fe4f7eccf7 check for circular refs caused by method calls
2017-02-16 05:23:11 -08:00
Fabien Potencier
d1f4cb27fd bug #21400 [Serializer] fix upper camel case conversion (see #21399) (markusu49)
This PR was merged into the 2.7 branch.

Discussion
----------

[Serializer] fix upper camel case conversion (see #21399)

| Q             | A
| ------------- | ---
| Branch?       | 2.7
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | ?
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #21399
| License       | MIT

Improve upper camel case support of CamelCaseToSnakeCaseConverter (`ThisIsATest` now converts to `this_is_a_test` instead of `_this_is_a_test`).

Commits
-------

81e771ca1a [Serializer] fix upper camel case conversion (see #21399)
2017-02-16 05:20:16 -08:00
Fabien Potencier
b056d40fb3 feature #21450 [Security] Lazy load guard authenticators and authentication providers (chalasr)
This PR was squashed before being merged into the 3.3-dev branch (closes #21450).

Discussion
----------

[Security] Lazy load guard authenticators and authentication providers

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | n/a
| License       | MIT
| Doc PR        | n/a

Authentication stops on the first authenticator that fails or succeeds, let's instantiate them only if actually needed.

Commits
-------

cd6422ae73 [SecurityBundle] Lazy load authentication providers
b8a23ded63 [Security][Guard] Lazy load authenticators
2017-02-16 04:58:04 -08:00
Fabien Potencier
7c9a5c1475 feature #21484 [DI] Deprecate underscore-services in YamlFileLoader (nicolas-grekas)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[DI] Deprecate underscore-services in YamlFileLoader

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | yes
| Tests pass?   | no
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

As discussed when introducing `_defaults`

Commits
-------

7781082587 [DI] Deprecate underscore-services in YamlFileLoader
2017-02-16 04:51:31 -08:00
Fabien Potencier
be854e16d5 bug #21599 [Console][Table] fixed render when using multiple rowspans. (aitboudad)
This PR was merged into the 2.7 branch.

Discussion
----------

[Console][Table] fixed render when using multiple rowspans.

| Q             | A
| ------------- | ---
| Branch?       | 2.7
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #21018
| License       | MIT
| Doc PR        | ~

Commits
-------

17e459e688 [Console][Table] fixed render when using multiple rowspans.
2017-02-16 04:36:16 -08:00
Bilge
412db4ca51 Permit empty suffix on Windows 2017-02-16 04:33:37 -08:00
Fabien Potencier
5eabf64104 minor #21618 [FrameworkBundle] Remove unused import (dunglas)
This PR was merged into the 3.2 branch.

Discussion
----------

[FrameworkBundle] Remove unused import

| Q             | A
| ------------- | ---
| Branch?       | 3.2
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | n/a
| License       | MIT
| Doc PR        | n/a

Commits
-------

aa5d32b57b [FrameworkBundle] Remove unused import
2017-02-16 04:09:56 -08:00
Fabien Potencier
07bf70d90f fixed CS 2017-02-16 04:05:35 -08:00
Fabien Potencier
85ae59a15b minor #21536 [TwigBridge] Add docblocks for Twig url and path function to improve ide completion (Haehnchen)
This PR was merged into the 2.7 branch.

Discussion
----------

[TwigBridge] Add docblocks for Twig url and path function to improve ide completion

| Q             | A
| ------------- | ---
| Branch?       | 2.7
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| License       | MIT

`RoutingExtension` missed docblock for Twig extension so `path` and `url` are not fully recognized by PhpStorm.

https://github.com/Haehnchen/idea-php-symfony2-plugin/issues/864 will add more smarter completion
`{{ p<caret> }} -> {{ path('<caret>') }}`, but string parameter is not detected. This will add the minimal docs

Commits
-------

93ab0179f0 add docblocks for Twig url and path function to improve ide completion
2017-02-16 03:30:17 -08:00
Kévin Dunglas
aa5d32b57b
[FrameworkBundle] Remove unused import 2017-02-15 11:27:17 +01:00
Maxime Steinhausser
1417f112a7 [DI][FrameworkBundle] ServiceLocator: fix XML descriptor to use dashes 2017-02-14 23:21:16 +01:00
Abdellatif Ait boudad
17e459e688 [Console][Table] fixed render when using multiple rowspans. 2017-02-14 19:10:22 +00:00
Fabien Potencier
0976c86f3d minor #21600 [DI][FrameworkBundle] ServiceLocator: Tests dumpers & update descriptors (ogizanagi)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[DI][FrameworkBundle] ServiceLocator: Tests dumpers & update descriptors

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | no
| Fixed tickets | N/A
| License       | MIT
| Doc PR        | N/A

This simply ensures the new feature is properly considered by the different dumpers, and updates the console descriptors to support the new `ServiceLocatorArgument`.

I also added the number of elements in an array/iterator/service_locator argument when using the `TextDescriptor` in this PR.

(fabbot is complaining about the new yaml tags support)

Commits
-------

aa9074d25a [DI][FrameworkBundle] ServiceLocator: Tests dumpers & update descriptors
2017-02-14 19:51:53 +01:00
Fabien Potencier
00d20ead28 feature #21270 [DependencyInjection] Use glob pattern to load config files (pierredup)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[DependencyInjection] Use glob pattern to load config files

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #21173
| License       | MIT
| Doc PR        | -

This relates to #21173, but I'm not sure if it completely fixes the issue.

This allows to use a glob pattern to load config files, which makes the following possible:

```
# config.yml
imports:
    - { resource: "*.yml" }
    - { resource: "folder/*.yml" }
    - { resource: "/etc/myapp/*.{yml,xml}" }
```

It can also be used in a container extension, if a bundle uses a lot of configs:

```
$loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
$loader->load('*.yml');
$loader->load('routing/*');
```

Commits
-------

519180ef56 Use glob pattern to load config file
2017-02-14 19:46:56 +01:00
Fabien Potencier
1079668d4b feature #19815 [WebProfilerBundle] Make the IP address in the profiler header clickable (jameshalsall)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[WebProfilerBundle] Make the IP address in the profiler header clickable

| Q | A |
| --- | --- |
| Branch? | master |
| Bug fix? | no |
| New feature? | yes |
| BC breaks? | no |
| Deprecations? | no |
| Tests pass? | yes |
| License | MIT |

Commits
-------

52606a19cf [WebProfilerBundle] Make the IP address in the profiler header clickable to view requests by IP
2017-02-14 19:35:04 +01:00
Fabien Potencier
be691d5e70 minor #21028 [Console] Updated phpdoc on return types (mlpo)
This PR was merged into the 2.7 branch.

Discussion
----------

[Console] Updated phpdoc on return types

| Q             | A
| ------------- | ---
| Branch?       | 2.7
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | n/a
| License       | MIT
| Doc PR        | n/a

The return type of “ask” is not necessarily a string (notice that “doAsk” may return mixed type).
Same for “validateAttempts” (validator may return something else than a string).

Commits
-------

442a304292 [Console] Updated phpdoc on return types
2017-02-14 19:34:00 +01:00
Fabien Potencier
ff75e32e45 bug #21057 [DI] Auto register extension configuration classes as a resource (ro0NL)
This PR was merged into the 2.7 branch.

Discussion
----------

[DI] Auto register extension configuration classes as a resource

| Q             | A
| ------------- | ---
| Branch?       | 2.7
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #... <!-- #-prefixed issue number(s), if any -->
| License       | MIT
| Doc PR        | symfony/symfony-docs#... <!--highly recommended for new features-->

Auto-register an extension configuration class as a resource from a compiler pass; not implicitly by the base extension class.

Causing some extensions to register its configuration, whereas others dont (e.g. framework bundle).

Fixes consistent cache invalidation whenever a configuration definition changes.

Commits
-------

142416b7d4 [DI] Auto register extension configuration classes as a resource
2017-02-14 19:31:46 +01:00
Nicolas Grekas
db995dfaf8 Merge branch '3.2'
* 3.2: (27 commits)
  Improve tracking of environment variables in the case of private services
  [DI] Align AutowirePass with 2.8
  property constraints can be added in child classes
  added test for staticClassLoader in LazyLoadingMetadatafactory
  fixed PHPUnit setUp and tearDown method visibility
  spelling fixes
  Readd Symfony version status in the toolbar
  [Security] LdapUserProvider should not throw an exception if the UID key does not exist in an LDAP entry
  make sure that null can be the invalid value
  [VarDumper] Improve dump of AMQP* Object
  Fix annotations cache folder path
  [FrameworkBundle] Wire ArrayCache for annotation reader at bootstrap
  Ignore missing 'debug.file_link_formatter' service in Debug bundle
  [VarDumper] Fixed dumping of terminated generator
  bumped Symfony version to 3.2.4
  updated VERSION for 3.2.3
  updated CHANGELOG for 3.2.3
  bumped Symfony version to 2.8.18
  updated VERSION for 2.8.17
  updated CHANGELOG for 2.8.17
  ...
2017-02-14 17:35:24 +01:00
Nicolas Grekas
975411d7f0 Merge branch '2.8' into 3.2
* 2.8:
  property constraints can be added in child classes
  added test for staticClassLoader in LazyLoadingMetadatafactory
  spelling fixes
  Readd Symfony version status in the toolbar
  make sure that null can be the invalid value
  [VarDumper] Improve dump of AMQP* Object
  [VarDumper] Fixed dumping of terminated generator
  bumped Symfony version to 2.8.18
  updated VERSION for 2.8.17
  updated CHANGELOG for 2.8.17
  bumped Symfony version to 2.7.25
  updated VERSION for 2.7.24
  update CONTRIBUTORS for 2.7.24
  updated CHANGELOG for 2.7.24
  [FrameworkBundle] Simplify createPackageDefinition
  fix directory resource considers same timestamp not fresh
  return false early from directory resource
2017-02-14 17:27:43 +01:00
Nicolas Grekas
03194300ed Merge branch '2.7' into 2.8
* 2.7:
  property constraints can be added in child classes
  added test for staticClassLoader in LazyLoadingMetadatafactory
  spelling fixes
  make sure that null can be the invalid value
  bumped Symfony version to 2.7.25
  updated VERSION for 2.7.24
  update CONTRIBUTORS for 2.7.24
  updated CHANGELOG for 2.7.24
  [FrameworkBundle] Simplify createPackageDefinition
  fix directory resource considers same timestamp not fresh
  return false early from directory resource
2017-02-14 17:24:56 +01:00
Nicolas Grekas
8f246bde1d [DI] Always consider abstract getters as autowiring candidates 2017-02-14 16:19:09 +01:00
Maxime Steinhausser
482435c501 [DI][FrameworkBundle] Show autowired methods in descriptors 2017-02-14 15:26:51 +01:00
Nicolas Grekas
298060d0a0 minor #21529 [FrameworkBundle] Simplify createPackageDefinition (dunglas)
This PR was merged into the 2.7 branch.

Discussion
----------

[FrameworkBundle] Simplify createPackageDefinition

| Q             | A
| ------------- | ---
| Branch?       | 2.7
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #... <!-- #-prefixed issue number(s), if any -->
| License       | MIT
| Doc PR        | n/a

Minor simplification.

Commits
-------

4b81393 [FrameworkBundle] Simplify createPackageDefinition
2017-02-14 13:45:10 +01:00
Nicolas Grekas
28a3524a0e minor #21605 [DI] Align AutowirePass with 2.8 (nicolas-grekas)
This PR was merged into the 3.2 branch.

Discussion
----------

[DI] Align AutowirePass with 2.8

| Q             | A
| ------------- | ---
| Branch?       | 3.2
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

Follow up a less than ideal [merge conflict resolution](https://github.com/symfony/symfony/pull/18691#issuecomment-218803903), found while reviewing AutowirePass in 2.8 and 3.2 and wondering about the delta. Should reduce future merge conflicts and help history tracking.

Commits
-------

dd5236a [DI] Align AutowirePass with 2.8
2017-02-14 13:24:27 +01:00
Nicolas Grekas
0b46a1b20c bug #21607 Improve tracking of environment variables in the case of private services (tgalopin)
This PR was merged into the 3.2 branch.

Discussion
----------

Improve tracking of environment variables in the case of private services

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #21273
| License       | MIT

Recently, I stumbled upon an issue with environment variables that I had troubles to understand. Here it is:

I have two environment variables, defined in my `parameters.yml` with a default value of empty:

``` yaml
parameters:
    env(MAILJET_PUBLIC_KEY): ''
    env(MAILJET_PRIVATE_KEY): ''
```

I use these variables only in a private service:

``` xml
<service id="app.mailjet.transport" class="AppBundle\Mailjet\MailjetApiTransport" public="false">
    <argument type="service" id="csa_guzzle.client.mailjet_api"/>
    <argument>%env(MAILJET_PUBLIC_KEY)%</argument>
    <argument>%env(MAILJET_PRIVATE_KEY)%</argument>
</service>
```

This private service is not used by any other service for the moment.

As the service is private and not used by any other service, the `RemoveUnusedDefinitionsPass` removes it from the container. However, when the container dumper dumps the container, it checks if the environment variable was dumped. As the service is now gone, an expection is thrown (`EnvParameterException, Incompatible use of dynamic environment variables "MAILJET_PUBLIC_KEY", "MAILJET_PRIVATE_KEY" found in parameters.`).

Commits
-------

f380ba3 Improve tracking of environment variables in the case of private services
2017-02-14 13:23:27 +01:00
Titouan Galopin
f380ba3770 Improve tracking of environment variables in the case of private services 2017-02-14 12:44:34 +01:00
Nicolas Grekas
dd5236ad97 [DI] Align AutowirePass with 2.8 2017-02-14 10:20:20 +01:00
Pierre du Plessis
519180ef56 Use glob pattern to load config file 2017-02-14 07:56:25 +02:00
Maxime Steinhausser
aa9074d25a [DI][FrameworkBundle] ServiceLocator: Tests dumpers & update descriptors 2017-02-13 20:22:27 +01:00
Fabien Potencier
5c07ffada7 bug #21592 [Validator] property constraints can be added in child classes (angelk, xabbuh)
This PR was merged into the 2.7 branch.

Discussion
----------

[Validator] property constraints can be added in child classes

| Q             | A
| ------------- | ---
| Branch?       | 2.7
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #21538, #21567
| License       | MIT
| Doc PR        |

This reverts the changes done in #21053 (and applies the test written by @angelk in #21538). I think trying to "fix" #15950 with the changes from #21053 was a mistake. Child classes should be able to refine validation constraints (I basically agree with @ro0NL's reasoning in https://github.com/symfony/symfony/issues/21567#issuecomment-278729990.

Commits
-------

9513a8aa52 property constraints can be added in child classes
a266ff799c added test for staticClassLoader in LazyLoadingMetadatafactory
2017-02-13 19:48:02 +01:00
Christian Flothmann
9513a8aa52 property constraints can be added in child classes 2017-02-13 18:37:45 +01:00
po_taka
a266ff799c added test for staticClassLoader in LazyLoadingMetadatafactory 2017-02-13 18:37:45 +01:00
Kévin Dunglas
b5d9b3b99e
[Serializer] Pass the context to AbstractObjectNormalizer::supportsDenormalization 2017-02-13 15:50:04 +01:00
Fabien Potencier
9ac3a7e010 feature #21383 [DependencyInjection] Add support for named arguments (dunglas, nicolas-grekas)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[DependencyInjection] Add support for named arguments

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | yes
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | todo

This PR introduces named arguments for services definitions. It's especially useful to inject parameters in an autowired service. It is (at least partially) an alternative to #21376 and #20738.

Usage:

```yml
services:
    _defaults: { autowire: true }
    Acme\NewsletterManager: { $apiKey: "%mandrill_api_key%" }

# Alternative (traditional) syntax
services:
    newsletter_manager:
        class: Acme\NewsletterManager
        arguments:
            $apiKey: "%mandrill_api_key%"
        autowire: true
```
```php
use Doctrine\ORM\EntityManager;
use Psr\Log\LoggerInterface;

namespace Acme;

class NewsletterManager
{
    private $logger;
    private $em;
    private $apiKey;

    public function __construct(LoggerInterface $logger, EntityManager $em, $apiKey)
    {
        $this->logger = $logger;
        $this->em = $em;
        $this->apiKey = $apiKey;
    }
}
```

Commits
-------

8a126c8537 [DI] Deprecate string keys in arguments
2ce36a6074 [DependencyInjection] Add a new pass to check arguments validity
6e501296f9 [DependencyInjection] Add support for named arguments
2017-02-13 15:38:11 +01:00
Fabien Potencier
17b43632b5 feature #19371 [Serializer] Give access to the context to support* methods (dunglas)
This PR was squashed before being merged into the 3.3-dev branch (closes #19371).

Discussion
----------

[Serializer] Give access to the context to support* methods

| Q | A |
| --- | --- |
| Branch? | master |
| Bug fix? | no (?) |
| New feature? | yes |
| BC breaks? | no |
| Deprecations? | no |
| Tests pass? | yes |
| Fixed tickets | - |
| License | MIT |
| Doc PR | n/a |

This is a current use case to want to access the context form the `supports*` methods. This PR fixes this limitation.

Maybe can it be considered a bug fix?

Commits
-------

6a7a16e517 [Serializer] Give access to the context to support* methods
2017-02-13 15:29:04 +01:00
Kévin Dunglas
6a7a16e517 [Serializer] Give access to the context to support* methods 2017-02-13 15:28:10 +01:00
Fabien Potencier
320529e646 feature #21553 [DI] Replace container injection by explicit service locators (chalasr)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[DI] Replace container injection by explicit service locators

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #20658
| License       | MIT
| Doc PR        | https://github.com/symfony/symfony-docs/pull/7458

This adds a new `ServiceLocatorArgument` (`!service_locator`) argument type which takes a list of services, meant to be used as a concrete service locator in order to avoid the remaining needs for injecting the container when it's only a matter of dependency lazy-loading.

Config:
```yaml
App\FooBar: [!service_locator { key1: '@service1', key2: '@service2' }]
```

```xml
<service class="App\FooBar" public="false">
    <argument type="service-locator">
        <argument type="service" key="key1" id="service1"/>
        <argument type="service" key="key2" id="service2"/>
     </argument>
</service>
```

```php
new ServiceLocatorArgument(array('key1' => new Reference('service1'), 'key2' => new Reference('service2'));
```

Usage:
```php
$locator->has('key1') // true
$locator->has('service1') // false, the defined key must be used
$locator->get('key1'); // service1 instance
$locator->get('service1'); // exception
$locator->has('not-specified') // false
$locator->get('not-specified'); // exception
```

We have some concrete use cases in the core where this would be useful (see e.g. SecurityBundle's FirewallMap), same in userland/3rd party code (see related RFC).

Commits
-------

e7935c0adb [DI] Replace container injection by explicit service locators
2017-02-13 15:17:30 +01:00
Fabien Potencier
e43bd57508 feature #18834 [Serializer] Add the possibility to filter attributes (dunglas)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[Serializer] Add the possibility to filter attributes

| Q | A |
| --- | --- |
| Branch? | master |
| Bug fix? | no |
| New feature? | yes |
| BC breaks? | no |
| Deprecations? | no |
| Tests pass? | yes |
| Fixed tickets | n/a |
| License | MIT |
| Doc PR | todo |

This new features give the possibility to the end user to select select fields to normalize.

Exemple:

``` php
class Foo
{
    public $a = '1';
    public $b = '2';
    public $c = '3';
}

$normalizer = new \Symfony\Component\Serializer\Normalizer\ObjectNormalizer();
$normalizer->normalize(new Foo(), null, ['attributes' => ['a', 'c']]);
// ['a' => '1', 'c' => '3']
```

Denormalization is also supported. This feature works for any normalizer using the `Symfony\Component\Serializer\Normalizer\AbstractNormalizer` class.

The main use case is to permit to API clients to optimize responses length by dropping unnecessary information like in the following example:

```
http://exemple.com/cars?fields=a,c

{'a' => 1, 'c' => 2}
```

Thanks to this PR, support for this feature will be available out of the box in [API Platform](https://api-platform.com).

Commits
-------

b3826fb0e7 [Serializer] Add the possibility to filter attributes
2017-02-13 15:11:55 +01:00
Kévin Dunglas
b3826fb0e7
[Serializer] Add the possibility to filter attributes 2017-02-13 11:25:59 +01:00
Grégoire Pineau
a0f1e850c0 [Workflow] Updated changelog according to #20787 2017-02-13 11:25:18 +01:00
Adam Prager
7a562bd81e [Workflow] Added an entered event 2017-02-13 11:05:07 +01:00
Robin Chalas
e7935c0adb
[DI] Replace container injection by explicit service locators
[SecurityBundle] Avoid container injection in FirewallMap
2017-02-13 11:05:06 +01:00
Nicolas Grekas
8a126c8537
[DI] Deprecate string keys in arguments 2017-02-13 10:06:08 +01:00
Kévin Dunglas
2ce36a6074
[DependencyInjection] Add a new pass to check arguments validity 2017-02-13 10:03:44 +01:00
Kévin Dunglas
6e501296f9
[DependencyInjection] Add support for named arguments 2017-02-13 10:03:43 +01:00
Fabien Potencier
4fd4cb900b fixed PHPUnit setUp and tearDown method visibility 2017-02-13 07:56:25 +01:00
Fabien Potencier
91904af902 feature #21289 [DI] Add prototype services for PSR4-based discovery and registration (nicolas-grekas)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[DI] Add prototype services for PSR4-based discovery and registration

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | to be done

Talking with @dunglas, we wondered if this could be a good idea, as a more general approach to folder-based service registration as done in [DunglasActionBundle](https://github.com/dunglas/DunglasActionBundle/blob/master/DependencyInjection/DunglasActionExtension.php).

So here is the implementation.

This allows one to define a set of services as such:
```yaml
services:
    App\:
        resources: ../src/{Controller,Command} # relative to the current file as usual
        autowire: true # or any other attributes really
```

This looks for php files in the "src" folder, derivates PSR-4 class names from them, and uses `class_exists` for final discovery. The resulting services are named after the classes found this way.

The "resource" attribute can be a glob to select only a subset of the classes/files.

This approach has several advantages over [DunglasActionBundle](https://github.com/dunglas/DunglasActionBundle/blob/master/DependencyInjection/DunglasActionExtension.php):
- it is resilient to missing parent classes (see test case)
- it loads classes using the normal code path (the autoloader), thus play well with them (e.g. if one registered a special autoloader).
- it is more predictable, because it uses discovered paths as the only source of ids/classes to register - vs relying on `get_declared_classes`, which would make things context sensitive.

Fits well with current initiatives to me.

Commits
-------

03470b788e [DI] Add "psr4" service attribute for PSR4-based discovery and registration
2017-02-13 06:22:10 +01:00
Nicolas Grekas
03470b788e [DI] Add "psr4" service attribute for PSR4-based discovery and registration 2017-02-12 23:09:17 +01:00
Fabien Potencier
6d3d17d2ea feature #21465 [Debug] Support @final on methods (GuilhemN)
This PR was squashed before being merged into the 3.3-dev branch (closes #21465).

Discussion
----------

[Debug] Support `@final` on methods

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | https://github.com/symfony/symfony/pull/21461#discussion_r98401148
| License       | MIT
| Doc PR        |

This adds support for `@final` on methods:
```php
class Foo {
    /**
     * @final since version 2.0.
     */
    public function bar()
    {
    }
}
```

ping @nicolas-grekas

Commits
-------

1b0a6b6c45 [Debug] Support  on methods
2017-02-12 20:33:57 +01:00
Guilhem N
1b0a6b6c45 [Debug] Support on methods 2017-02-12 20:33:56 +01:00
Fabien Potencier
033c41a6b9 minor #21090 Secure unserialize by restricting allowed classes when using PHP 7 (dbrumann)
This PR was merged into the 3.3-dev branch.

Discussion
----------

Secure unserialize by restricting allowed classes when using PHP 7

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | ---
| License       | MIT
| Doc PR        | ---

While playing around with Symfony in a PHP 7.1 application I noticed a warning in how EnvParameterResoure uses unserialize. Since PHP 7.0 introduced the options argument which allows to restrict which classes can be unserialized for better security, it might make sense to use it here. As far as I can tell this is no BC break, it only provides an additional safety mechanism.

Commits
-------

b4201810b9 Conditionally add options to unserialize in PHP 7.0+.
2017-02-12 20:14:59 +01:00
Fabien Potencier
2c302cee19 bug #21458 [Config] Early return for DirectoryResource (robfrawley)
This PR was squashed before being merged into the 2.7 branch (closes #21458).

Discussion
----------

[Config] Early return for DirectoryResource

| Q             | A
| ------------- | ---
| Branch?       | 2.7
| Bug fix?      | yes
| New feature?  | sure?
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | no
| Fixed tickets |
| Related PRs | #21440
| License       | MIT
| Doc PR        | n/a

Alternate PR  that implements an early return for `DirectoryResource` to increase the speed on large file sets. We can never return early with `true` without checking all assets within the resource, as the aforementioned referenced PR did; hence this PR takes the counter approach and returns `false` early where appropriate.

_Conversation about possible bug at https://github.com/symfony/symfony/pull/21458#discussion_r98366339._

Commits
-------

d5746ecfd2 fix directory resource considers same timestamp not fresh
96107e21f1 return false early from directory resource
2017-02-12 20:12:54 +01:00
Fabien Potencier
e7541d9552 bug #21562 [DoctrineBridge] make sure that null can be the invalid value (xabbuh)
This PR was merged into the 2.7 branch.

Discussion
----------

[DoctrineBridge] make sure that null can be the invalid value

| Q             | A
| ------------- | ---
| Branch?       | 2.7
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #21554
| License       | MIT
| Doc PR        |

Commits
-------

c3702c2d8f make sure that null can be the invalid value
2017-02-12 20:07:00 +01:00
Fabien Potencier
6ea39990c3 feature #21505 [Config][DI] Add ComposerResource to track the runtime engine + deps (nicolas-grekas)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[Config][DI] Add ComposerResource to track the runtime engine + deps

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

So that the container is invalidated whenever a new PHP runtime is used, a PHP-extension is added, or vendors are changed.

Commits
-------

a960c761d1 [Config][DI] Add ComposerResource to track runtime + vendors
2017-02-12 12:59:14 +01:00
Fabien Potencier
915cca84b6 feature #21533 [DI] Deprecate (un)setting pre-defined services (ro0NL)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[DI] Deprecate (un)setting pre-defined services

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | yes
| Tests pass?   | no
| Fixed tickets | #19192
| License       | MIT
| Doc PR        | -

This PR is the subset of #19668 that fixes #19192: it deprecates (un)setting pre-defined services.
This opens the path to some optimizations in the dumped container in 4.0.

Commits
-------

fdb2140b81 [DI] Deprecate (un)setting pre-defined services
2017-02-12 12:52:54 +01:00
Fabien Potencier
50be214200 bug #21556 [FrameworkBundle] Wire ArrayCache for annotation reader at bootstrap (nicolas-grekas)
This PR was merged into the 3.2 branch.

Discussion
----------

[FrameworkBundle] Wire ArrayCache for annotation reader at bootstrap

| Q             | A
| ------------- | ---
| Branch?       | 3.2
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #21549
| License       | MIT
| Doc PR        | -

Related to #21381 which disabled any cache at bootstrap.
Instead, this wires ArrayCache during bootstrapping, then swaps the cache provider for the real one.

Commits
-------

f90f53e915 [FrameworkBundle] Wire ArrayCache for annotation reader at bootstrap
2017-02-12 12:49:46 +01:00
Daniel Espendiller
93ab0179f0 add docblocks for Twig url and path function to improve ide completion 2017-02-12 09:39:31 +01:00
Nicolas Grekas
f590c8d7ae bug #21584 [WebProfilerBundle] Readd Symfony version status in the toolbar (wouterj)
This PR was merged into the 2.8 branch.

Discussion
----------

[WebProfilerBundle] Readd Symfony version status in the toolbar

| Q             | A
| ------------- | ---
| Branch?       | 2.8
| Bug fix?      | yes
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

The Symfony version status (*"This Symfony version will no longer receive security fixes."* and the like) was no longer shown in the toolbar. This was removed in 9d89841e3a , but the commit description isn't that describing. I guess it's not done on purpose.

I think having this information is crucial for this feature to work: A yellow version doesn't mean anything specific, unless I see "This Symfony will only receive security fixes".

/cc @javiereguiluz

Commits
-------

d714c7e Readd Symfony version status in the toolbar
2017-02-11 12:37:09 +01:00
klemens
6ccc479d72 spelling fixes 2017-02-11 12:34:45 +01:00
WouterJ
d714c7e054 Readd Symfony version status in the toolbar 2017-02-11 11:32:11 +01:00
Charles Sarrazin
ee4d9a70c1 [Security] LdapUserProvider should not throw an exception if the UID key does not exist in an LDAP entry 2017-02-11 09:51:37 +01:00
Nicolas Grekas
5a388042bb feature #21194 [Yaml] Add tags support (GuilhemN)
This PR was squashed before being merged into the 3.3-dev branch (closes #21194).

Discussion
----------

[Yaml] Add tags support

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | yes
| Tests pass?   | yes
| Fixed tickets | https://github.com/symfony/symfony/issues/21185
| License       | MIT
| Doc PR        |

This PR adds custom tags support to the Yaml component.
Symfony tags (`!!binary`, `!str`, etc.) are still managed in the parser to have a lighter diff but we'll be able to convert them later if we want to.

The primary addition of this PR is the `TagInterface`:
```php
interface TagInterface
{
    public function construct(mixed $value): mixed;
}
```

It can be used to register custom tags. An example that could be used to convert [the syntax `=iterator`](https://github.com/symfony/symfony/pull/20907#issuecomment-270728216) to a tag:
```php
final class IteratorTag implements TagInterface
{
    public function construct(mixed $value): mixed
    {
        return new IteratorArgument($value);
    }
}

$parser = new Parser(['iterator' => new IteratorTag()]);
```

If you think this is too complex, @nicolas-grekas [proposed an alternative](https://github.com/symfony/symfony/issues/21185#issuecomment-271074840) to my proposal externalizing this support by introducing a new class `TaggedValue`.

Commits
-------

4744107 [Yaml] Add tags support
2017-02-10 15:54:52 +01:00
Guilhem N
47441070e4 [Yaml] Add tags support 2017-02-10 15:48:44 +01:00
Fabien Potencier
10c3fc2081 feature #21460 [DI] ContainerBuilder::compile() can optionally resolve env vars in parameter bag (nicolas-grekas)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[DI] ContainerBuilder::compile() can optionally resolve env vars in parameter bag

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | yes
| Tests pass?   | yes
| Fixed tickets | #21420
| License       | MIT
| Doc PR        | -

Here is a new feature allowing one to do `$container->compile(true)` and get the env vars resolved using the current env.

Commits
-------

a3fd512271 [DI] ContainerBuilder::compile() can optionally resolve env vars in parameter bag
2017-02-09 18:52:03 +01:00
Nicolas Grekas
a3fd512271 [DI] ContainerBuilder::compile() can optionally resolve env vars in parameter bag 2017-02-09 16:17:33 +01:00
Fabien Potencier
c43b85e0c6 feature #21572 [Finder] Add double-star matching to Glob::toRegex() (nicolas-grekas)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[Finder] Add double-star matching to Glob::toRegex()

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

Adds ant-style `/**/` matching to `Glob::toRegex()`.

Commits
-------

8b28afa0f6 [Finder] Add double-star matching to Glob::toRegex()
2017-02-09 11:22:35 +01:00
Christian Flothmann
c3702c2d8f make sure that null can be the invalid value 2017-02-09 08:12:50 +01:00
Nicolas Grekas
8b28afa0f6 [Finder] Add double-star matching to Glob::toRegex() 2017-02-08 23:54:13 +01:00
Fabien Potencier
bcd897cfd4 feature #21265 [DI] Implement PSR-11 (greg0ire)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[DI] Implement PSR-11

TODO:

- [x] wait for a stable version of the psr/container package;
- [x] ~~deprecate instanciating ServiceNotFoundException directly, or using any of its methods directly;~~ not relevant anymore
- [x] act on the outcome of https://github.com/php-fig/container/issues/8 (solved in https://github.com/php-fig/container/issues/9) ;
- [x] ~~solve the mandatory NotFoundExceptionInterface on non-existing service
problem (with a flag ?);~~ non-issue, see comments below
- [x] provide meta-package psr/container-implementation if all problems can
be solved.

| Q             | A
| ------------- | ---
| Branch?       | master
| New feature?  | yes
| BC breaks?    | not at the moment
| Tests pass?   | didn't pass before pushing, or even starting to code, will see Travis
| License       | MIT
| Doc PR        | TODO

This PR is a first attempt at implementing PSR-11, or at least trying to get closer to it.
Delegate lookup is optional, and thus not implemented for now.

Commits
-------

bde0efd01c Implement PSR-11
2017-02-08 16:52:20 +01:00
Fabien Potencier
3193331855 feature #21474 [Process] Accept command line arrays and per-run env vars, fixing signaling and escaping (nicolas-grekas)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[Process] Accept command line arrays and per-run env vars, fixing signaling and escaping

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | yes
| Tests pass?   | yes
| Fixed tickets | #12488, #11972, #10025, #11335, #5759, #5030, #19993, #10486
| License       | MIT
| Doc PR        | -

I think I found a way to fix this network of issues once for all.
Of all the linked ones, only the last two are still open: the remaining were closed in dead ends.

Instead of trying to make `ProcessUtil::escapeArgument` work correctly on Windows - which is impossible as discussed in #21347 - this PR deprecates it in favor of a more powerful approach.

Depending on the use case:

- when a simple command should be run, `Process` now accepts an array of arguments (the "binary" being the first arg). Making this the responsibility of `Process` (instead of `ProcessBuilder`) gives two benefits:
  - escape becomes an internal detail that doesn't leak - thus can't be misused ([see here](https://github.com/symfony/symfony/pull/21347#issuecomment-274051370))
  - since we know we're running a single command, we can prefix it automatically by "exec" - thus fixing a long standing issue with signaling

```php
        $p = new Process(array('php', '-r', 'echo 123;'));
        echo $p->getCommandLine();
        // displays on Linux:
        // exec 'php' '-r' 'echo 123;'
```

- when a shell expression is required, passing a string is still allowed. To make it easy and look-like sql prepared statements, env vars can be used when running the command. Since the shell is OS-specific (think Windows vs Linux) - this PR assumes no portability, so one should just use each shell's specific syntax.

From the fixtures:
```php
        $env = array('FOO' => 'Foo', 'BAR' => 'Bar');
        $cmd = '\\' === DIRECTORY_SEPARATOR ? 'echo !FOO! !BAR! !BAZ!' : 'echo $FOO $BAR $BAZ';
        $p = new Process($cmd, null, $env);
        $p->run(null, array('BAR' => 'baR', 'BAZ' => 'baZ'));

        $this->assertSame('Foo baR baZ', rtrim($p->getOutput()));
        $this->assertSame($env, $p->getEnv());
```

Commits
-------

330b61fecb [Process] Accept command line arrays and per-run env vars, fixing signaling and escaping
2017-02-08 16:45:40 +01:00
Fabien Potencier
2697ceecf7 minor #21561 [DI] Refacto / cleanup / minor fixes (nicolas-grekas)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[DI] Refacto / cleanup / minor fixes

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

An almost neutral refacto touching only new things in master - unlocking some next steps.

- renames "autowire method" to "autowire call"
- renames `GetterProxyInterface` to `InheritanceProxyInterface`
- moves some helpers in a new internal `InheritanceProxyHelper`
- some other minor things

Commits
-------

ad5b5b5d93 [DI] Refacto / cleanup / minor fixes
2017-02-08 16:44:35 +01:00
Nicolas Grekas
ad5b5b5d93 [DI] Refacto / cleanup / minor fixes 2017-02-08 13:32:07 +01:00
Grégoire Pineau
c553352d69 [VarDumper] Improve dump of AMQP* Object
The release of https://github.com/pdezwart/php-amqp/ 1.7.0alpha1
changed internally the handlings of AMQP* object. So now when dumping
using var_dump(), many information are availables. So many information
are displayed twice. This commit fixes this issue and keeps displaying basic
information for older version of the lib.

Reference:

* https://pecl.php.net/package-info.php?package=amqp&version=1.7.0alpha1
* https://github.com/pdezwart/php-amqp/commit/314afbc (and next commits)
2017-02-08 11:21:49 +01:00
Arjan Keeman
8e5cfa7e0a Fix annotations cache folder path
Argument 2 sets a cache path since e59f0e0fd7
2017-02-07 21:48:38 +01:00
Nicolas Grekas
f90f53e915 [FrameworkBundle] Wire ArrayCache for annotation reader at bootstrap 2017-02-07 17:17:32 +01:00
Nicolas Grekas
a960c761d1 [Config][DI] Add ComposerResource to track runtime + vendors 2017-02-07 15:42:58 +01:00
core23
2201fbe28b Ignore missing 'debug.file_link_formatter' service in Debug bundle 2017-02-06 17:33:05 +01:00
Grégoire Pineau
c5094a05a4 [VarDumper] Fixed dumping of terminated generator 2017-02-06 16:04:49 +01:00
Fabien Potencier
bff782c2af bumped Symfony version to 3.2.4 2017-02-06 14:33:41 +01:00
Fabien Potencier
d66d98eeb7 updated VERSION for 3.2.3 2017-02-06 14:15:19 +01:00
Fabien Potencier
013e4053f7 bumped Symfony version to 2.8.18 2017-02-06 14:13:46 +01:00
Fabien Potencier
c423a13a03 Merge pull request #21543 from fabpot/release-2.8.17
released v2.8.17
2017-02-06 13:47:48 +01:00
Fabien Potencier
4ddbaecea6 updated VERSION for 2.8.17 2017-02-06 13:47:36 +01:00
Fabien Potencier
554b1a748f Merge branch '3.2'
* 3.2:
  [Form] fixed tests
2017-02-06 13:27:36 +01:00
Fabien Potencier
6516a20e11 Merge branch '2.8' into 3.2
* 2.8:
  [Form] fixed tests
2017-02-06 13:27:26 +01:00
Fabien Potencier
9650b50436 [Form] fixed tests 2017-02-06 13:27:13 +01:00
Fabien Potencier
d3673a83ae bumped Symfony version to 2.7.25 2017-02-06 13:22:53 +01:00
Fabien Potencier
6fce88bde3 updated VERSION for 2.7.24 2017-02-06 13:06:02 +01:00
Fabien Potencier
6ccdcdc330 Merge branch '3.2'
* 3.2:
  Remove 3.1 from PR template
  fixed test name
  [Cache] Fix class exists checks in PhpArrayAdapter
  Casting TableCell value to string.
  [FrameworkBundle] fixed custom domain for translations in php templates
  [Form] Fixed DateType format option
  [Config] Fix checking cache for non existing meta file
2017-02-06 13:04:42 +01:00
Fabien Potencier
cfc6bafed2 Merge branch '2.8' into 3.2
* 2.8:
  Remove 3.1 from PR template
  fixed test name
  Casting TableCell value to string.
  [FrameworkBundle] fixed custom domain for translations in php templates
  [Form] Fixed DateType format option
  [Config] Fix checking cache for non existing meta file
2017-02-06 13:04:21 +01:00
Fabien Potencier
47a8b4dc58 Merge branch '2.7' into 2.8
* 2.7:
  Remove 3.1 from PR template
  fixed test name
  Casting TableCell value to string.
  [FrameworkBundle] fixed custom domain for translations in php templates
  [Form] Fixed DateType format option
2017-02-06 13:04:06 +01:00
Roland Franssen
fdb2140b81 [DI] Deprecate (un)setting pre-defined services 2017-02-05 11:30:27 +01:00
Nicolas Grekas
6ac1223eca bug #20844 [Config] Fix checking cache for non existing meta file (hason)
This PR was merged into the 2.8 branch.

Discussion
----------

[Config] Fix checking cache for non existing meta file

| Q             | A
| ------------- | ---
| Branch?       | 2.8
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | maybe
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

Commits
-------

17f02e0 [Config] Fix checking cache for non existing meta file
2017-02-05 11:11:19 +01:00
WouterJ
c02a4c9857 Added a console.ERROR event 2017-02-04 18:07:02 +01:00
Fabien Potencier
ad8f18963e fixed test name 2017-02-04 08:36:32 -08:00
Fabien Potencier
1d1f1666e7 bug #21063 [Form] Fixed DateType format option for single text widget (HeahDude)
This PR was merged into the 2.7 branch.

Discussion
----------

[Form] Fixed DateType format option for single text widget

| Q             | A
| ------------- | ---
| Branch?       | 2.7
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | ~
| License       | MIT
| Doc PR        | ~

It's currently not possible to use a custom format with `DateType` when not using one of the three values day, month or year (i.e in my case "MM/yyyy").

The formatter handles it, it looks like this option check is wrong, this PR fixes it.

Commits
-------

9e0d531d36 [Form] Fixed DateType format option
2017-02-04 08:34:51 -08:00
Kévin Dunglas
4b81393387
[FrameworkBundle] Simplify createPackageDefinition 2017-02-04 11:29:24 +01:00
Nicolas Grekas
686af613aa [Config] Fix conditional class existence checks 2017-02-04 09:30:42 +01:00
Nicolas Grekas
44e5989850 [Cache] Fix class exists checks in PhpArrayAdapter 2017-02-04 09:30:23 +01:00
Fabien Potencier
f0d13f4708 bug #21430 Casting TableCell value to string. (jaydiablo)
This PR was squashed before being merged into the 2.7 branch (closes #21430).

Discussion
----------

Casting TableCell value to string.

| Q             | A
| ------------- | ---
| Branch?       | 2.7
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #21429
| License       | MIT
| Doc PR        |

PHP throws a catchable fatal error when the value from this method is
used in strstr in the Table class. This fixes the error by casting to a string before returning the value.

Commits
-------

1e5707fed3 Casting TableCell value to string.
2017-02-03 13:25:39 -08:00
Jay Klehr
1e5707fed3 Casting TableCell value to string. 2017-02-03 13:25:34 -08:00
Robin Chalas
d1001d4bac [SecurityBundle] Add AutowiringTypesTest 2017-02-03 16:32:53 +01:00
Robin Lehrmann
78c0ec5c13 [FrameworkBundle] fixed custom domain for translations in php templates 2017-02-03 15:56:44 +01:00
Fabien Potencier
7c5dcfcdb8 minor #21521 [SecurityBundle] Remove FirewallMap from classes to compile (chalasr)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[SecurityBundle] Remove FirewallMap from classes to compile

| Q             | A
| ------------- | ---
| Branch?       | master
| Tests pass?   | yes
| Fixed tickets | #21520
| License       | MIT

Commits
-------

d1091091ef [SecurityBundle] Remove FirewallMap from classes to compile
2017-02-03 06:48:44 -08:00
Fabien Potencier
da2710e400 feature #21517 [FrameworkBundle] Add missing autowiring aliases for common interfaces (chalasr)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[FrameworkBundle] Add missing autowiring aliases for common interfaces

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | n/a

Commits
-------

c3a2141a45 [FrameworkBundle] Add more autowiring aliases
2017-02-03 06:46:45 -08:00
Nicolas Grekas
23ba91272f Merge branch '3.2'
* 3.2:
  [FrameworkBundle][Console] JsonDescriptor: Respect original output
  [Process] Non ASCII characters disappearing during the escapeshellarg
2017-02-03 13:20:42 +01:00
Robin Chalas
d1091091ef [SecurityBundle] Remove FirewallMap from classes to compile 2017-02-03 13:17:59 +01:00
Nicolas Grekas
d5a95323da Merge branch '2.8' into 3.2
* 2.8:
  [FrameworkBundle][Console] JsonDescriptor: Respect original output
  [Process] Non ASCII characters disappearing during the escapeshellarg
2017-02-03 13:11:38 +01:00
Nicolas Grekas
151fe329d0 Merge branch '2.7' into 2.8
* 2.7:
  [Process] Non ASCII characters disappearing during the escapeshellarg
2017-02-03 13:08:06 +01:00
Robin Chalas
c3a2141a45 [FrameworkBundle] Add more autowiring aliases 2017-02-03 10:29:29 +01:00
Fabien Potencier
a46e691ae1 minor #21499 [FrameworkBundle][Console] Fix descriptors to support IteratorArgument, ClosureProxy and arrays (ogizanagi)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[FrameworkBundle][Console] Fix descriptors to support IteratorArgument, ClosureProxy and arrays

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | N/A
| License       | MIT
| Doc PR        | N/A

Fixes both array and iterator/closure-proxy arguments support in descriptors when using `--show-arguments`

Commits
-------

a94924c540 [FrameworkBundle][Console] Fix descriptors to support IteratorArgument, ClosureProxy and arrays
2017-02-02 15:06:10 -08:00
Maxime Steinhausser
a94924c540 [FrameworkBundle][Console] Fix descriptors to support IteratorArgument, ClosureProxy and arrays 2017-02-02 21:16:35 +01:00
Fabien Potencier
2e13d4efa6 feature #21516 [HttpKernel][FrameworkBundle] Lazy load argument value resolvers (chalasr)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[HttpKernel][FrameworkBundle] Lazy load argument value resolvers

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | n/a
| License       | MIT
| Doc PR        | n/a

The ArgumentResolver resolves an arg using the first ArgumentValueResolver which `supports()` it (which can be complex, see e.g. [sensiolabs/SensioFrameworkExtraBundle#436](https://github.com/sensiolabs/SensioFrameworkExtraBundle/pull/436/files#diff-865d48d9369c4431bce36ba642834570R10)).

Commits
-------

02b4aaa25f [HttpKernel] Lazy load argument value resolvers
2017-02-02 11:44:56 -08:00
Kévin Dunglas
c48c36be8f [DI] Add support for getter autowiring 2017-02-02 20:37:38 +01:00
Robin Chalas
02b4aaa25f
[HttpKernel] Lazy load argument value resolvers 2017-02-02 20:36:37 +01:00
Fabien Potencier
03b7cf72dc feature #21419 [DI][Config] Add & use ReflectionClassResource (nicolas-grekas)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[DI][Config] Add & use ReflectionClassResource

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | yes
| Tests pass?   | yes
| Fixed tickets | #21079
| License       | MIT
| Doc PR        | -

With new changes comming to 3.3, we need a more generic reflection tracking logic than the one already managed by the autowiring subsystem.

This PR adds a new ReflectionClassResource in the Config component, and a new ContainerBuilder::getReflectionClass() method in the DI one (for fetching+tracking reflection-related info).

ReflectionClassResource tracks changes to any public or protected properties/method.

PR updated and ready, best viewed [ignoring whitespaces](https://github.com/symfony/symfony/pull/21419/files?w=1).

changelog:

* added `ReflectionClassResource` class
* added second `$exists` constructor argument to `ClassExistenceResource` - with a special mode that prevents fatal errors from happening when some parent class is broken (logic generalized from AutowiringPass)
* made `ClassExistenceResource` also work with interfaces and traits
* added `ContainerBuilder::getReflectionClass()` for retrieving and tracking reflection class info
* deprecated `ContainerBuilder::getClassResource()`, use `ContainerBuilder::getReflectionClass()` or `ContainerBuilder::addObjectResource()` instead

Commits
-------

37e44939ef [DI][Config] Add & use ReflectionClassResource
2017-02-02 10:28:05 -08:00
Maxime Steinhausser
bf71776e20 [FrameworkBundle][Console] JsonDescriptor: Respect original output 2017-02-02 18:43:33 +01:00
Nicolas Grekas
7781082587 [DI] Deprecate underscore-services in YamlFileLoader 2017-02-02 16:30:45 +01:00
Fabien Potencier
87273d9f44 minor #21407 [WebServerBundle] Improved exception message (wouterj)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[WebServerBundle] Improved exception message

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

This is a quite minor one, but imo "guessing" is something that's optional. If I don't pass value X, a script will guess value X. However, in this case, the front controller file cannot be specified. It has to be one of the "guessed" file names. That's why I renamed "guessing" to "finding".

While doing this, I also added the possible file names in the exception message to ease fixing problems.

Commits
-------

df46188381 Improved exception message
2017-02-02 07:29:17 -08:00
Nicolas Grekas
caba97a62b feature #21455 [DI] Allow to count on lazy collection arguments (ogizanagi)
This PR was merged into the 3.3-dev branch.

Discussion
----------

[DI] Allow to count on lazy collection arguments

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | https://github.com/symfony/symfony/pull/21450#issuecomment-275931764
| License       | MIT
| Doc PR        | todo (with https://github.com/symfony/symfony-docs/issues/7336)

When using the new iterator feature of the DI component to lazy load collection, we always know the number of arguments in the collection (only the invalidBehavior set to `IGNORE_ON_INVALID_REFERENCE` may change this number). So we are able to generate and use a `RewindableGenerator` implementing `\Countable` by computing this value ahead.

So, in a service accepting `array|iterable`, like in the `GuardAuthenticationListener` (see #21450):

```php
class GuardAuthenticationListener implements ListenerInterface
{
    private $guardAuthenticators;

    /**
       * @param iterable|GuardAuthenticatorInterface[]  $guardAuthenticators   The authenticators, with keys that match what's passed to GuardAuthenticationProvider
       * @param LoggerInterface                         $logger                A LoggerInterface instance
    */
    public function __construct($guardAuthenticators, LoggerInterface $logger = null)
    {
          // ...
    }

    public function handle(GetResponseEvent $event)
    {
        if (null !== $this->logger) {
            $context = array()
            if (is_array($this->guardAuthenticators) || $this->guardAuthenticators instanceof \Countable) {
                $context['authenticators'] = count($this->guardAuthenticators);
            }
            $this->logger->debug('Checking for guard authentication credentials.', $context);
        }
        // ...
    }
}
```

we still keep the ability to call count without loosing the lazy load benefits.

Commits
-------

f23e460 [DI] Allow to count on lazy collection arguments
2017-02-02 15:11:42 +01:00
GuillaumeVerdon
3779f3fbb9 [Process] Non ASCII characters disappearing during the escapeshellarg 2017-02-02 14:55:53 +01:00
Nicolas Grekas
55a34b7b51 Merge branch '3.2'
* 3.2:
  Add HEADER_FORWARDED to setTrustedHeaderName docs
  Fix phpDoc typo
  [FrameworkBundle][Console] JsonDescriptor: Respect original output
  Remove dead code
  Enable dump() in autoload-dev
  add missing functional Serializer test case
2017-02-02 14:49:58 +01:00