Commit Graph

949 Commits

Author SHA1 Message Date
Nicolas Grekas
09a0c23668 [DI] dont track classes/interfaces used to compute autowiring error messages 2018-11-06 14:23:35 +01:00
Nicolas Grekas
78192e776c Merge branch '4.1'
* 4.1:
  [DependencyInjection] Fix tags on multiple decorated service
  fix merge
  SCA: reverted code style changes
  SCA: reverted code style changes
  SCA: applied requested code style changes
  SCA: simplify some ifs in favour of null coalescing operator
2018-10-31 11:56:31 +01:00
Nicolas Grekas
25c2975cd4 Merge branch '3.4' into 4.1
* 3.4:
  [DependencyInjection] Fix tags on multiple decorated service
2018-10-31 11:54:16 +01:00
Soner Sayakci
90f8df2830 [DependencyInjection] Fix tags on multiple decorated service 2018-10-31 11:41:01 +01:00
Nicolas Grekas
0970b09796 Merge branch '4.1'
* 4.1:
  SCA: removed unused variables
  Remove duplicate condition
  fix useless space in docblock
  remove unneeded tearDown method
  [Intl] Update the ICU data to 63.1
  [FrameworkBundle] Fix broken exception message
  [Messenger] send using the routing_key for AMQP transport
  also clean away the NO_AUTO_CACHE_CONTROL_HEADER if we have no session
  [TwigBundle] Fix usage of TwigBundle without FrameworkBundle
  Revert "fixed CS"
  [Serializer] Reduce class discriminator overhead
  Skip empty proxy code
  [Security] Fix "exclude-from-classmap"
  [Security] Removed unsed trait import
  [Config] Fix @method annotation
  add missing double-quotes to extra_fields output message
  [DI] Default undefined env to empty string during compile
  Convert InsufficientAuthenticationException to HttpException
2018-10-30 18:11:56 +01:00
Roland Franssen
38a8ab92fa [DI] Default undefined env to empty string during compile 2018-10-17 09:42:53 +02:00
Nicolas Grekas
104e92206c feature #28571 [DependencyInjection] Improve ServiceLocatorTagPass service matching (codedmonkey)
This PR was squashed before being merged into the 4.2-dev branch (closes #28571).

Discussion
----------

[DependencyInjection] Improve ServiceLocatorTagPass service matching

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

Allows omitting of keys for service locator arguments (it will automatically take over the original definition alias).

Commits
-------

1c1210a3e8 [DependencyInjection] Improve ServiceLocatorTagPass service matching
2018-10-03 09:27:24 +02:00
Tim Goudriaan
1c1210a3e8 [DependencyInjection] Improve ServiceLocatorTagPass service matching 2018-10-03 09:27:17 +02:00
Marko Kaznovac
dc5bf84f15
third parameter of sprintf missing in AbstractRecursivePass::getExpressionLanguage
runtime exception is referencing service as third parameter in sprintf, but none was given.
2018-09-29 23:11:02 +02:00
Roland Franssen
c762735075 Favor LogicException for missing classes & functions 2018-09-24 09:37:12 +02:00
Fabien Potencier
7c08e43b78 feature #28449 [DependencyInjection] improved message when alias service is not found (xabbuh)
This PR was merged into the 4.2-dev branch.

Discussion
----------

[DependencyInjection] improved message when alias service is not found

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

When using the YAML config format, it can be confusing that you need to
prefix the aliased service id with an `@` character when passing it as
a string, but that you have to omit it when using the `alias` attribute:

```yaml
foo: '@App\Foo'

foo:
    alias: 'App\Foo'
```

This commit will enhance the generated error message in cases where the
aliased service id is prefixed with the `@` character in the `alias`
option like this:

```yaml
foo:
    alias: '@App\Foo'
```

Commits
-------

280ecbc2be improved message when alias service is not found
2018-09-23 14:54:20 +02:00
Christian Flothmann
280ecbc2be improved message when alias service is not found
When using the YAML config format, it can be confusing that you need to
prefix the aliased service id with an `@` character when passing it as
a string, but that you have to omit it when using the `alias` attribute:

```yaml
foo: '@App\Foo'

foo:
    alias: 'App\Foo'
```

This commit will enhance the generated error message in cases where the
aliased service id is prefixed with the `@` character in the `alias`
option like this:

```yaml
foo:
    alias: '@App\Foo'
```
2018-09-23 11:10:46 +02:00
Nicolas Grekas
1fc66ff080 Merge branch '4.1'
* 4.1:
  Fix CS
  Allow reuse of Session between requests
  [MonologBridge] Re-add option option to ignore empty context and extra data
  [Lock] remove useless code
  [PhpUnitBridge] fix disabling DeprecationErrorHandler using phpunit.xml file
  Provide debug_backtrace with proper args
  [DI] fix infinite loop involving self-references in decorated services
  forward false label option to nested types
  [DI] fix dumping lazy services
  forward the invalid_message option in date types
2018-09-21 14:51:02 +02:00
Nicolas Grekas
76cf0ca661 Merge branch '3.4' into 4.1
* 3.4:
  Fix CS
  Allow reuse of Session between requests
  [MonologBridge] Re-add option option to ignore empty context and extra data
  [Lock] remove useless code
  [PhpUnitBridge] fix disabling DeprecationErrorHandler using phpunit.xml file
  Provide debug_backtrace with proper args
  [DI] fix infinite loop involving self-references in decorated services
  forward false label option to nested types
  forward the invalid_message option in date types
2018-09-21 14:49:42 +02:00
Nicolas Grekas
20f27f9c72 [DI] fix infinite loop involving self-references in decorated services 2018-09-19 15:15:21 +02:00
Nicolas Grekas
680f31928b feature #28412 [PhpUnitBridge] enable DebugClassLoader by default (nicolas-grekas)
This PR was merged into the 4.2-dev branch.

Discussion
----------

[PhpUnitBridge] enable DebugClassLoader by default

| 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-docs/issues/10360

With this PR, the phpunit-bridge will enable `DebugClassLoader` by default, making it do its job: throw deprecation notices at autoloading time. On top of #28329, this made me spot some glitches in the code base, fixed here also.

This can be disabled by configuring the listener in `phpunit.xml.dist` files, adding `<element key="debug-class-loader"><integer>0</integer></element>` next to `<element key="time-sensitive">...`.

Commits
-------

2fb11fce28 [PhpUnitBridge] enable DebugClassLoader by default
2018-09-18 18:51:13 +02:00
Nicolas Grekas
b1ae305868 Merge branch '4.1'
* 4.1:
  [TwigBridge] fix lowest version of symfony/form
  Think positive
  KernelInterface can return null container
  [DI] Detect circular references with ChildDefinition parent
  [VarDumper] Fix global dump function return value for PHP7
  [Ldap] Use shut up operator on connection errors at ldap_start_tls
  Implement startTest rather than startTestSuite
  [OptionsResolver] remove dead code and useless else
  [HttpFoundation] don't override StreamedResponse::setNotModified()
  Added relevent links for parsing to the phpdoc
  Add stricter checking for valid date time string
  Fix symfony/console (optional) dependency for MonologBridge
  fix not displaying labels when value is false
  [Form] Fix DateTimeType html5 input format
2018-09-18 18:38:25 +02:00
Nicolas Grekas
02bbeb660f Merge branch '3.4' into 4.1
* 3.4:
  Think positive
  KernelInterface can return null container
  [DI] Detect circular references with ChildDefinition parent
  [VarDumper] Fix global dump function return value for PHP7
  [Ldap] Use shut up operator on connection errors at ldap_start_tls
  Implement startTest rather than startTestSuite
  [OptionsResolver] remove dead code and useless else
  [HttpFoundation] don't override StreamedResponse::setNotModified()
  Added relevent links for parsing to the phpdoc
  Add stricter checking for valid date time string
  Fix symfony/console (optional) dependency for MonologBridge
  [Form] Fix DateTimeType html5 input format
2018-09-18 14:45:12 +02:00
Sébastien ALFAIATE
2a59c8e3e6 [DI] Detect circular references with ChildDefinition parent 2018-09-18 11:39:25 +02:00
Nicolas Grekas
2fb11fce28 [PhpUnitBridge] enable DebugClassLoader by default 2018-09-16 21:51:20 +02:00
Nicolas Grekas
004c315b0c Merge branch '4.1'
* 4.1:
  [DI] configure inlined services before injecting them when dumping the container
  Consistently throw exceptions on a single line
  fix fopen calls
  Update .editorconfig
2018-09-08 15:42:43 +02:00
Nicolas Grekas
6fec32c0d0 Merge branch '3.4' into 4.1
* 3.4:
  [DI] configure inlined services before injecting them when dumping the container
  Consistently throw exceptions on a single line
  fix fopen calls
  Update .editorconfig
2018-09-08 15:24:10 +02:00
Nicolas Grekas
8bc014c211 Merge branch '2.8' into 3.4
* 2.8:
  Consistently throw exceptions on a single line
  fix fopen calls
  Update .editorconfig
2018-09-08 15:15:14 +02:00
Nicolas Grekas
721dc8661f Consistently throw exceptions on a single line 2018-09-08 14:44:02 +02:00
Nicolas Grekas
87392ab30d [DI] leverage Contracts\Service 2018-09-04 19:12:10 +02:00
Nicolas Grekas
c0b8f53bcb [DI] Allow autowiring by type + parameter name 2018-08-23 11:47:19 +02:00
Nicolas Grekas
00e8b493d1 Merge branch '4.1'
* 4.1:
  [DI] fix analyzing lazy refs involved in circular loops
  [DI] Fix autowire inner service
2018-08-08 13:50:11 +02:00
Nicolas Grekas
441322fdc7 bug #28159 [DI] Fix autowire inner service (hason)
This PR was merged into the 4.1 branch.

Discussion
----------

[DI] Fix autowire inner service

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

This PR fix multiple levels of decoration. Unfortunately, this [good question](https://github.com/symfony/symfony/pull/25631#issuecomment-364610914) in origin PR has not been heard 🎧 😄. @dunglas @chalasr

Commits
-------

b79d097c2a [DI] Fix autowire inner service
2018-08-08 13:48:58 +02:00
Nicolas Grekas
a31b5d0ee3 Merge branch '3.4' into 4.1
* 3.4:
  [DI] fix analyzing lazy refs involved in circular loops
2018-08-08 13:48:00 +02:00
Nicolas Grekas
4e92d10b40 [DI] fix analyzing lazy refs involved in circular loops 2018-08-08 13:42:34 +02:00
Martin Hasoň
b79d097c2a [DI] Fix autowire inner service 2018-08-08 13:02:30 +02:00
Nicolas Grekas
13dc341d7f feature #27806 [DI] Allow autoconfiguring bindings (nicolas-grekas)
This PR was merged into the 4.2-dev branch.

Discussion
----------

[DI] Allow autoconfiguring bindings

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

I've come up with a case where we will need to inject a different service based on which interfaces a consumer service implements: injecting a different token storage for monolog processor than for everything else. Required in #27801.

Commits
-------

7c29977037 [DI] Allow autoconfiguring bindings
2018-08-08 10:30:15 +02:00
Nicolas Grekas
568e3a4fb4 Merge branch '4.1'
* 4.1:
  [HttpFoundation] fix false-positive ConflictingHeadersException
  [DI] Fix false-positive circular ref leading to wrong exceptions or infinite loops at runtime
2018-08-08 10:28:33 +02:00
Nicolas Grekas
2130c60362 Merge branch '3.4' into 4.1
* 3.4:
  [HttpFoundation] fix false-positive ConflictingHeadersException
  [DI] Fix false-positive circular ref leading to wrong exceptions or infinite loops at runtime
2018-08-08 10:25:44 +02:00
Nicolas Grekas
ba31bab47a bug #28060 [DI] Fix false-positive circular ref leading to wrong exceptions or infinite loops at runtime (nicolas-grekas)
This PR was merged into the 3.4 branch.

Discussion
----------

[DI] Fix false-positive circular ref leading to wrong exceptions or infinite loops at runtime

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

When circular loops involve references in properties, method calls or configurators, it is possible to properly instantiate the related services.

The current logic is broken: `ContainerBuilder` considers some of these loops as self-referencing circular references, leading to a runtime exception, and in similar situations, `PhpDumper` generates code that turns to infinite loops at runtime 💥. These badly handled situations happen with inlined definitions.

This PR fixes both classes by making them track which references are really part of the constructors' chain, including inline definitions.

It also fixes dumping infinite loops when dumping circular loops involving lazy services while proxy-manager-bridge is not installed.

Commits
-------

e843bb86c8 [DI] Fix false-positive circular ref leading to wrong exceptions or infinite loops at runtime
2018-08-08 10:12:29 +02:00
Nicolas Grekas
1f629c8789 Merge branch '4.1'
* 4.1:
  [HttpKernel] Fixed invalid REMOTE_ADDR in inline subrequest when configuring trusted proxy with subnet
  [FrameworkBundle] fixed guard event names for transitions
  [DI] Improve class named servics error message
  remove unnecessary instanceof in MongoDbSessionHandler
  [HttpFoundation] fixed using _method parameter with invalid type
  Renaming internal test class to help auto-completion
  [Intl] Replace svn with git in the icu data update script
  [Messenger] Fix error message on undefined message class for non-subscriber handler
  [HttpFoundation] Fix Cookie::isCleared
2018-08-01 10:24:20 +02:00
Nicolas Grekas
1d3f835e05 Merge branch '4.0' into 4.1
* 4.0:
  [HttpKernel] Fixed invalid REMOTE_ADDR in inline subrequest when configuring trusted proxy with subnet
  [FrameworkBundle] fixed guard event names for transitions
  [DI] Improve class named servics error message
  [HttpFoundation] fixed using _method parameter with invalid type
  [Intl] Replace svn with git in the icu data update script
  [HttpFoundation] Fix Cookie::isCleared
2018-08-01 10:24:03 +02:00
Nicolas Grekas
e0ce427aef Merge branch '3.4' into 4.0
* 3.4:
  [HttpKernel] Fixed invalid REMOTE_ADDR in inline subrequest when configuring trusted proxy with subnet
  [FrameworkBundle] fixed guard event names for transitions
  [DI] Improve class named servics error message
  [HttpFoundation] fixed using _method parameter with invalid type
  [Intl] Replace svn with git in the icu data update script
  [HttpFoundation] Fix Cookie::isCleared
2018-08-01 10:23:45 +02:00
Nicolas Grekas
f4951682bf minor #28057 [DI] Improve class named servics error message (ro0NL)
This PR was squashed before being merged into the 3.4 branch (closes #28057).

Discussion
----------

[DI] Improve class named servics error message

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no     <!-- see https://symfony.com/bc -->
| Deprecations? | no
| Tests pass?   | yes    <!-- please add some, will be required by reviewers -->
| Fixed tickets | #28006
| License       | MIT
| Doc PR        | symfony/symfony-docs#... <!-- required for new features -->

Commits
-------

61de0601a1 [DI] Improve class named servics error message
2018-07-29 17:19:31 +02:00
Roland Franssen
61de0601a1 [DI] Improve class named servics error message 2018-07-29 17:19:21 +02:00
Nicolas Grekas
e843bb86c8 [DI] Fix false-positive circular ref leading to wrong exceptions or infinite loops at runtime 2018-07-29 16:51:25 +02:00
Nicolas Grekas
f834c9262b Merge branch '4.1'
* 4.1:
  Alpha-ordering for "use" statements
2018-07-26 11:13:01 +02:00
Nicolas Grekas
a23a4a4398 Merge branch '4.0' into 4.1
* 4.0:
  Alpha-ordering for "use" statements
2018-07-26 11:10:45 +02:00
Nicolas Grekas
6b7e951fdc Merge branch '3.4' into 4.0
* 3.4:
  Alpha-ordering for "use" statements
2018-07-26 11:08:35 +02:00
Nicolas Grekas
7b80bc2c78 Merge branch '2.8' into 3.4
* 2.8:
  Alpha-ordering for "use" statements
2018-07-26 11:06:28 +02:00
Nicolas Grekas
528eef336b Alpha-ordering for "use" statements 2018-07-26 11:03:18 +02:00
Nicolas Grekas
e81285249b Merge branch '4.1'
* 4.1:
  Fix Clidumper tests
  Enable the fixer enforcing fully-qualified calls for compiler-optimized functions
  Apply fixers
  Disable the native_constant_invocation fixer until it can be scoped
  Update the list of excluded files for the CS fixer
2018-07-26 10:59:12 +02:00
Nicolas Grekas
933b774844 Merge branch '4.0' into 4.1
* 4.0:
  Fix Clidumper tests
  Enable the fixer enforcing fully-qualified calls for compiler-optimized functions
  Apply fixers
  Disable the native_constant_invocation fixer until it can be scoped
  Update the list of excluded files for the CS fixer
2018-07-26 10:55:25 +02:00
Nicolas Grekas
b9433001cb Merge branch '3.4' into 4.0
* 3.4:
  Fix Clidumper tests
  Enable the fixer enforcing fully-qualified calls for compiler-optimized functions
  Apply fixers
  Disable the native_constant_invocation fixer until it can be scoped
  Update the list of excluded files for the CS fixer
2018-07-26 10:51:09 +02:00
Nicolas Grekas
f5939a8336 Merge branch '2.8' into 3.4
* 2.8:
  Fix Clidumper tests
  Enable the fixer enforcing fully-qualified calls for compiler-optimized functions
  Apply fixers
  Disable the native_constant_invocation fixer until it can be scoped
  Update the list of excluded files for the CS fixer
2018-07-26 10:45:46 +02:00
Christophe Coevoet
04654cfeb3 Enable the fixer enforcing fully-qualified calls for compiler-optimized functions 2018-07-24 12:05:38 +02:00
Fabien Potencier
3f663fdfbb minor #27878 improve deprecation messages (xabbuh)
This PR was merged into the 4.2-dev branch.

Discussion
----------

improve deprecation messages

| 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
-------

1657b82c19 improve deprecation messages
2018-07-12 08:18:35 +02:00
Nicolas Grekas
7c29977037 [DI] Allow autoconfiguring bindings 2018-07-11 10:40:03 +02:00
Fabien Potencier
8d35af4a51 minor #27845 [DI] Improve exception messages by hiding the hidden ids they contain (nicolas-grekas)
This PR was merged into the 4.2-dev branch.

Discussion
----------

[DI] Improve exception messages by hiding the hidden ids they contain

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

This PR improves error messages containing hidden ids, especially the ones mentioning service locators.

Right now, when a service subscriber is incomplete, we get:
> The service ".service_locator.G69Xsbl.App\Controller\MyRouter" has a dependency on a non-existent service "Symfony\Component\Config\Loader\LoaderInterface".

With this PR we get this instead:
> The service "routing.loader" in the container provided to "App\Controller\MyRouter" has a dependency on a non-existent service "Symfony\Component\Config\Loader\LoaderInterface".

When no locators are involved, the hidden service is swallowed:
> The service "App\Controller\MyRouter" has a dependency on a non-existent service "Symfony\Component\Config\Loader\LoaderInterface".

This PR also improves runtime exceptions thrown in service locators.

Before:
> Cannot autowire service ".service_locator.Z1jvVrN": it references interface "Symfony\Component\Config\Loader\LoaderInterface" but no such service exists. You should maybe alias this interface to one of these existing services: [...].

After:
> Cannot autowire service "routing.loader" required by "App\Controller\MyRouter": it references interface "Symfony\Component\Config\Loader\LoaderInterface" but no such service exists. You should maybe alias this interface to one of these existing services: [...].

TODO:
- [x] add tests.

Commits
-------

d2b4901a43 [DI] Improve exception messages by hiding the hidden ids they contain
2018-07-09 16:06:18 +02:00
Christian Flothmann
1657b82c19 improve deprecation messages 2018-07-09 09:26:21 +02:00
Nicolas Grekas
6d3f63d6f3 feature #27783 [DI] Add ServiceLocatorArgument to generate array-based locators optimized for OPcache shared memory (nicolas-grekas)
This PR was merged into the 4.2-dev branch.

Discussion
----------

[DI] Add ServiceLocatorArgument to generate array-based locators optimized for OPcache shared memory

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

Right now, to generate service locators, we use collections of closures described using `ServiceClosureArgument`. This works well, but it doesn't scale well when the number of services grows, because we have to load as many closures as there are services, even if we never call them.

This PR introduces `ServiceLocatorArgument`, which describes the same thing, but allows dumping optimized locators: instead of a collection of closures, this generates a static array that OPcache can put in shared memory (see fixtures for example.)

Once this PR is merged, we'll be able to update `ServiceLocatorPass::register()` to leverage it and generate these optimized locators everywhere. One particular I have in mind in the locator used by `ServiceArgumentResolver`, which can grow fast (it has as many entries as there are actions.)

Commits
-------

6c8e9576a3 [DI] Add ServiceLocatorArgument to generate array-based locators optimized for OPcache shared memory
2018-07-07 17:01:23 +02:00
Nicolas Grekas
d2b4901a43 [DI] Improve exception messages by hiding the hidden ids they contain 2018-07-07 10:42:09 +02:00
Nicolas Grekas
7135aa4338 Merge branch '4.1'
* 4.1:
  [DomCrawler] Fix ChoiceFormField::select() PHPDoc
  [Security] LdapUserProvider uidKey could be null
  [HttpFoundation] add tests for FlashBagInterface::setAll()
  Check for Hyper terminal on all operating systems.
  [DI] Don't show internal service id on binding errors
  Fix a bug when having more than one named handler per message subscriber
  Prevent toolbar links color override by css
  add conflict for non-compatible TwigBridge version
2018-07-05 13:54:37 +02:00
Nicolas Grekas
e308c93c7e Merge branch '4.0' into 4.1
* 4.0:
  [DomCrawler] Fix ChoiceFormField::select() PHPDoc
  [Security] LdapUserProvider uidKey could be null
  [HttpFoundation] add tests for FlashBagInterface::setAll()
  Check for Hyper terminal on all operating systems.
  [DI] Don't show internal service id on binding errors
  Prevent toolbar links color override by css
2018-07-05 13:54:23 +02:00
Nicolas Grekas
29d2101891 Merge branch '3.4' into 4.0
* 3.4:
  [DomCrawler] Fix ChoiceFormField::select() PHPDoc
  [HttpFoundation] add tests for FlashBagInterface::setAll()
  Check for Hyper terminal on all operating systems.
  [DI] Don't show internal service id on binding errors
  Prevent toolbar links color override by css
2018-07-05 13:53:42 +02:00
Nicolas Grekas
6c8e9576a3 [DI] Add ServiceLocatorArgument to generate array-based locators optimized for OPcache shared memory 2018-07-04 16:01:49 +02:00
Nicolas Grekas
61f005af36 [DI] Don't show internal service id on binding errors 2018-07-04 11:35:48 +02:00
Nicolas Grekas
26989d4e73 bug #27830 [Dependency-Injection] Fix issue where non-defined services were attempted to be removed (ciaranmcnulty)
This PR was squashed before being merged into the 4.2-dev branch (closes #27830).

Discussion
----------

[Dependency-Injection] Fix issue where non-defined services were attempted to be removed

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no     <!-- see https://symfony.com/bc -->
| Deprecations? | no <!-- don't forget to update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tests pass?   | yes    <!-- please add some, will be required by reviewers -->
| Fixed tickets | #27802   <!-- #-prefixed issue number(s), if any -->
| License       | MIT
| Doc PR        | symfony/symfony-docs#... <!-- required for new features -->

The RemoveUnusedServicesPass generates a graph of services that are connected, then removes services that are not part of the graph. To build this graph it creates a list of services then examines their definitions for more services.

The current scenario was causing an error, thrown by getDefinition (triggered in Behat):
 * Service was referenced by another service definition
 * Service was _not_ defined
 * Service was subsequently set() on the container

Commits
-------

53155c9800 [Dependency-Injection] Fix issue where non-defined services were attempted to be removed
2018-07-03 20:20:23 +02:00
Ciaran McNulty
53155c9800 [Dependency-Injection] Fix issue where non-defined services were attempted to be removed 2018-07-03 20:20:16 +02:00
Nicolas Grekas
a32393ba37 Merge branch '4.1'
* 4.1:
  Add color support for Hyper terminal .
  [HttpFoundation] Fix tests: new message for status 425
  [Doctrine Bridge] Fixed usage of wrong variable when tagged subscriber is invalid
  [Workflow] Update phpdoc to fit a used className
  [PropertyInfo] added handling of nullable types in PhpDoc
  [HttpKernel] Make AbstractTestSessionListener compatible with CookieClearingLogoutHandler
  [Cache] provider does not respect option maxIdLength with versioning enabled
  [Form] Fix fixtures for forward compat
  [Lock] Fix SemaphoreStoreTest on OS X
  Ensure the class discriminator mechanism works with serialization groups as well
  fix handling of empty DI extension configs
2018-07-03 20:14:13 +02:00
Christian Flothmann
05d4bcb987 fix handling of empty DI extension configs 2018-06-26 09:48:43 +02:00
Fabien Potencier
7b6ad74fa2 Merge branch '4.1'
* 4.1:
  [TwigBundle][DX] Only add the Twig WebLinkExtension if the WebLink component is enabled
  Add note about changed form processing when using PUT requests
  [TwigBundle] bump lowest deps to fix issue with "double-colon" controller service refs
  [SecurityBundle] Dont throw if "security.http_utils" is not found
  [Di] Fix undefined variable found by Php Inspections (EA Ultimate)
  [DI] Cleanup unused service_subscriber.locator tag
  [DI] Resolve env placeholder in logs
  The debug class loader is always loaded by Debug::enable().
  [Intl] Update ICU data to 62.1
2018-06-25 13:13:38 +02:00
Fabien Potencier
8c687c6401 Merge branch '4.0' into 4.1
* 4.0:
  [TwigBundle][DX] Only add the Twig WebLinkExtension if the WebLink component is enabled
  Add note about changed form processing when using PUT requests
  [SecurityBundle] Dont throw if "security.http_utils" is not found
  [Di] Fix undefined variable found by Php Inspections (EA Ultimate)
  [DI] Cleanup unused service_subscriber.locator tag
  [DI] Resolve env placeholder in logs
  The debug class loader is always loaded by Debug::enable().
  [Intl] Update ICU data to 62.1
2018-06-25 13:12:43 +02:00
Fabien Potencier
b626ee9af5 Merge branch '3.4' into 4.0
* 3.4:
  [TwigBundle][DX] Only add the Twig WebLinkExtension if the WebLink component is enabled
  Add note about changed form processing when using PUT requests
  [SecurityBundle] Dont throw if "security.http_utils" is not found
  [Di] Fix undefined variable found by Php Inspections (EA Ultimate)
  [DI] Cleanup unused service_subscriber.locator tag
  [DI] Resolve env placeholder in logs
  The debug class loader is always loaded by Debug::enable().
  [Intl] Update ICU data to 62.1
2018-06-25 13:12:25 +02:00
Nicolas Grekas
c871857a47 Merge branch '4.1'
* 4.1:
  [VarDumper] Fix dumping by splitting Server/Connection out of Dumper/ServerDumper
  [HttpKernel] fix argument's error messages in ServiceValueResolver
  [DI] Avoid leaking unused env placeholders
2018-06-24 10:10:38 +02:00
Roland Franssen
8e060fa45d [DI] Cleanup unused service_subscriber.locator tag 2018-06-23 15:02:32 +02:00
Roland Franssen
41f8494722 [DI] Avoid leaking unused env placeholders 2018-06-22 13:40:15 +02:00
Nicolas Grekas
719b429655 fix merge 2018-06-15 10:13:37 +02:00
Nicolas Grekas
a687119e10 Merge branch '4.1'
* 4.1:
  remove HHVM code
  [VarDumper] Fix dumping ArrayObject and ArrayIterator instances
  [ProxyManagerBridge] Fixed support of private services
  [Cache] Fix typo in comment.
  [FrameworkBundle] give access to non-shared services when using test.service_container
  Fix bad method call with guard authentication + session migration
  Avoid calling eval when there is no script embedded in the toolbar
2018-06-15 09:52:48 +02:00
Nicolas Grekas
516ff5a985 [FrameworkBundle] give access to non-shared services when using test.service_container 2018-06-14 10:43:49 +02:00
Nicolas Grekas
8ec22e5e88 Merge branch '4.1'
* 4.1:
  [FrameworkBundle] Fix test-container on kernel reboot, revert to returning the real container from Client::getContainer()
  Remove mentions of "beta" in composer.json files
  [DI] Ignore missing tree root nodes on validate
  [WebProfilerBundle] fixed getSession when no session has been set deprecation warnings
  bug #27299 [Cache] memcache connect should not add duplicate entries on sequential calls
  [Router] regression when matching a route
  [FrameworkBundle][SecurityBundle] Remove no-longer necessary Bundle::registerCommands override
  [Routing] Don't reorder past variable-length placeholders
  [DebugBundle] DebugBundle::registerCommands should be noop
  [BrowserKit] Fix a BC break in Client affecting Panthère
  [DX] Improve exception message when AbstractController::getParameter fails
  simple-phpunit: remove outdated appveryor workaround
2018-06-06 11:59:09 +02:00
Tobias Schultze
d8739d183e feature #27471 [DI] Improve performance of removing/inlining passes (nicolas-grekas)
This PR was merged into the 4.2-dev branch.

Discussion
----------

[DI] Improve performance of removing/inlining passes

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

Here is an optimization to reclaim some compilation time by optimizing the analysis of unused and inlined services.

This PR removes any use case for `RepeatedPass`, instead:
- `RemoveUnusedDefinitionsPass` works in one run, removing all private services that are unreachable from public services
-  `InlineServiceDefinitionsPass` reduces the number of nodes to analyze per iteration using `AnalyzeServiceReferencesPass` on a duplicated container internally.

https://blackfire.io/profiles/compare/00723822-6c09-431c-b98d-4a4197d044fc/graph?settings%5Bdimension%5D=wt&settings%5Bdisplay%5D=focused&settings%5BtabPane%5D=nodes&selected=Symfony%5CComponent%5CDependencyInjection%5CCompiler%5CRepeatedPass%3A%3Aprocess&callname=Symfony%5CComponent%5CDependencyInjection%5CCompiler%5CRepeatedPass%3A%3Aprocess

![image](https://user-images.githubusercontent.com/243674/40884496-c31e780e-6714-11e8-8218-967c4b25b9ce.png)

Commits
-------

cf375e5286 [DI] Improve performance of removing/inlining passes
2018-06-05 21:28:56 +02:00
Nicolas Grekas
cf375e5286 [DI] Improve performance of removing/inlining passes 2018-06-05 13:59:51 +02:00
Fabien Potencier
8130f22f4a bug #27472 [DI] Ignore missing tree root nodes on validate (ro0NL)
This PR was squashed before being merged into the 4.1 branch (closes #27472).

Discussion
----------

[DI] Ignore missing tree root nodes on validate

| Q             | A
| ------------- | ---
| Branch?       | 4.1
| Bug fix?      | yes
| New feature?  | technically yes
| BC breaks?    | no     <!-- see https://symfony.com/bc -->
| Deprecations? | no
| Tests pass?   | yes    <!-- please add some, will be required by reviewers -->
| Fixed tickets | #27450
| License       | MIT
| Doc PR        | symfony/symfony-docs#... <!-- required for new features -->

<!--
Write a short README entry for your feature/bugfix here (replace this comment block.)
This will help people understand your PR and can be used as a start of the Doc PR.
Additionally:
 - 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.
-->

Commits
-------

b3cdfc64b5 [DI] Ignore missing tree root nodes on validate
2018-06-05 07:03:36 +02:00
Roland Franssen
b3cdfc64b5 [DI] Ignore missing tree root nodes on validate 2018-06-05 07:03:28 +02:00
Nicolas Grekas
b51b17d7e8 Merge branch '4.1'
* 4.1:
  [DI] Remove default env type check on validate
  [FrameworkBundle][TwigBridge] Fix BC break from strong dependency on CSRF token storage
2018-06-03 23:37:29 +02:00
Roland Franssen
a0015a18ec [DI] Remove default env type check on validate 2018-06-03 23:36:42 +02:00
Nicolas Grekas
201b472009 Merge branch '4.1'
* 4.1: (26 commits)
  Revert "bug #27312 Supress deprecation notices thrown when getting private servies from container in tests (arderyp)"
  [HttpKernel] reset kernel start time on reboot
  Add code of Conduct links in our README
  bumped Symfony version to 4.0.12
  [FrameworkBundle] Fix using test.service_container when Client is rebooted
  [DI] never inline lazy services
  updated VERSION for 4.0.11
  updated CHANGELOG for 4.0.11
  bumped Symfony version to 3.4.12
  updated VERSION for 3.4.11
  updated CHANGELOG for 3.4.11
  Default testsuite to latest PHPUnit 6.*
  [Github] Update the pull-request template
  bumped Symfony version to 2.8.42
  updated VERSION for 2.8.41
  updated CHANGELOG for 2.8.41
  Tweak Argon2 test config
  [HttpFoundation] Fix cookie test with xdebug
  [FrameworkBundle] cleanup generated test container
  [Serializer] Check the value of enable_max_depth if defined
  ...
2018-05-25 16:55:42 +02:00
Nicolas Grekas
d4d137de53 Merge branch '4.0' into 4.1
* 4.0:
  [HttpKernel] reset kernel start time on reboot
  Add code of Conduct links in our README
  bumped Symfony version to 4.0.12
  [DI] never inline lazy services
  updated VERSION for 4.0.11
  updated CHANGELOG for 4.0.11
  bumped Symfony version to 3.4.12
  updated VERSION for 3.4.11
  updated CHANGELOG for 3.4.11
  Default testsuite to latest PHPUnit 6.*
  [Github] Update the pull-request template
  bumped Symfony version to 2.8.42
  updated VERSION for 2.8.41
  updated CHANGELOG for 2.8.41
  [HttpFoundation] Fix cookie test with xdebug
  [Serializer] Check the value of enable_max_depth if defined
  [DI] remove dead code
  [PhpUnitBridge] silence some stderr outputs
  [Validator] Update sl translation
2018-05-25 16:55:38 +02:00
Nicolas Grekas
101ff69e1a Merge branch '3.4' into 4.0
* 3.4:
  [HttpKernel] reset kernel start time on reboot
  Add code of Conduct links in our README
  [DI] never inline lazy services
  bumped Symfony version to 3.4.12
  updated VERSION for 3.4.11
  updated CHANGELOG for 3.4.11
  Default testsuite to latest PHPUnit 6.*
  [Github] Update the pull-request template
  bumped Symfony version to 2.8.42
  updated VERSION for 2.8.41
  updated CHANGELOG for 2.8.41
  [HttpFoundation] Fix cookie test with xdebug
  [Serializer] Check the value of enable_max_depth if defined
  [DI] remove dead code
  [PhpUnitBridge] silence some stderr outputs
  [Validator] Update sl translation
2018-05-25 16:54:15 +02:00
Nicolas Grekas
bf20260025 Merge branch '2.8' into 3.4
* 2.8:
  Add code of Conduct links in our README
  [DI] never inline lazy services
  Default testsuite to latest PHPUnit 6.*
  [Github] Update the pull-request template
  bumped Symfony version to 2.8.42
  updated VERSION for 2.8.41
  updated CHANGELOG for 2.8.41
2018-05-25 16:50:57 +02:00
Nicolas Grekas
3b4d7ab56c [DI] never inline lazy services 2018-05-25 15:50:34 +02:00
Nicolas Grekas
0fba5b1660 Merge branch '4.1'
* 4.1:
  [DI] fix undefined offset in InlineServiceDefinitionsPass
  [Security/Http] Fix deps conflict
2018-05-25 13:58:16 +02:00
Nicolas Grekas
930b960125 Merge branch '4.0' into 4.1
* 4.0:
  [DI] fix undefined offset in InlineServiceDefinitionsPass
  [Security/Http] Fix deps conflict
2018-05-25 13:58:10 +02:00
Nicolas Grekas
aa66a47233 Merge branch '3.4' into 4.0
* 3.4:
  [DI] fix undefined offset in InlineServiceDefinitionsPass
  [Security/Http] Fix deps conflict
2018-05-25 13:57:52 +02:00
Nicolas Grekas
5eb17e55d2 [DI] fix undefined offset in InlineServiceDefinitionsPass 2018-05-25 13:57:15 +02:00
Nicolas Grekas
29fa8119b9 Merge branch '4.1'
* 4.1:
  [SecurityBundle] fix test
  [DI] Fix bad exception on uninitialized references to non-shared services
  [HttpFoundation] Fix perf issue during MimeTypeGuesser intialization
2018-05-25 13:09:34 +02:00
Nicolas Grekas
3dd22cb4c8 Merge branch '4.0' into 4.1
* 4.0:
  [DI] Fix bad exception on uninitialized references to non-shared services
  [HttpFoundation] Fix perf issue during MimeTypeGuesser intialization
2018-05-25 13:09:16 +02:00
Nicolas Grekas
2b8932f1cd Merge branch '3.4' into 4.0
* 3.4:
  [DI] Fix bad exception on uninitialized references to non-shared services
  [HttpFoundation] Fix perf issue during MimeTypeGuesser intialization
2018-05-25 13:08:56 +02:00
Nicolas Grekas
8bba68f811 [DI] Fix bad exception on uninitialized references to non-shared services 2018-05-24 14:02:14 +02:00
Nicolas Grekas
f827fecca9 feature #27165 [DI] Allow binding by type+name (nicolas-grekas)
This PR was merged into the 4.2-dev branch.

Discussion
----------

[DI] Allow binding by type+name

| 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 would allow to bind by type + argument name, e.g.:
```yaml
bind:
  Psr\Log\LoggerInterface $logger: @logger
```

Allows more precise targets for bindings as it will match only if both the type and the name match.
Works with scalar/array types also for consistency.

Commits
-------

32fc58df8b [DI] Allow binding by type+name
2018-05-21 20:14:38 +02:00
Fabien Potencier
af4372220c Merge branch '4.0' into 4.1
* 4.0:
  do not mock the session in token storage tests
  [DependencyInjection] resolve array env vars
  Add Occitan plural rule
  Fix security/* cross-dependencies
  [Lock] Skip test if posix extension is not installed
  [DI] Allow defining bindings on ChildDefinition
  use strict compare in url validator
  Disallow illegal characters like "." in session.name
  [HttpKernel] do file_exists() check instead of silent notice
  fix rounding from string
2018-05-21 12:10:11 +02:00
Fabien Potencier
4d8a71d321 Merge branch '3.4' into 4.0
* 3.4:
  do not mock the session in token storage tests
  [DependencyInjection] resolve array env vars
  Add Occitan plural rule
  Fix security/* cross-dependencies
  [Lock] Skip test if posix extension is not installed
  [DI] Allow defining bindings on ChildDefinition
  use strict compare in url validator
  Disallow illegal characters like "." in session.name
  [HttpKernel] do file_exists() check instead of silent notice
  fix rounding from string
2018-05-21 12:09:47 +02:00
Fabien Potencier
c280f8aa27 bug #27271 [DI] Allow defining bindings on ChildDefinition (nicolas-grekas)
This PR was merged into the 3.4 branch.

Discussion
----------

[DI] Allow defining bindings on ChildDefinition

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

Spotted by @stof while trying to put https://github.com/symfony/monolog-bundle/pull/254 into practice.
Binding log channels doesn't work because we put this artificial restriction in place.
Let's allow ChildDefinition to have bindings (but only at the DI extension level, loaders still forbid defining them at their level because of the parent vs _defaults ambiguity.)

Commits
-------

1c3b1055df [DI] Allow defining bindings on ChildDefinition
2018-05-17 12:22:44 +02:00
Nicolas Grekas
68eda49322 [DI] Fix hidding service in autowiring errors 2018-05-16 18:27:27 +02:00