Commit Graph

671 Commits

Author SHA1 Message Date
Nicolas Grekas
0b0542d45e bug #25285 [DI] Throw an exception if Expression Language is not installed (sroze)
This PR was merged into the 3.4 branch.

Discussion
----------

[DI] Throw an exception if Expression Language is not installed

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

The [`PhpDumper` already has this check](https://github.com/symfony/symfony/blob/master/src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php#L1688-L1690) but it is missing here.

Commits
-------

75b21e9 Throw an exception is expression language is not installed
2017-12-04 13:20:58 +01:00
Samuel ROZE
75b21e9c86
Throw an exception is expression language is not installed 2017-12-03 13:07:37 +00:00
Nicolas Grekas
ad3ddebf90 bug #25204 [DI] Clear service reference graph (nicolas-grekas)
This PR was merged into the 3.4 branch.

Discussion
----------

[DI] Clear service reference graph

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

Spotted while playing with the container: we keep this graph in memory even it its stale already.
Clearing it also leave circular refs for the php garbage collector, better clean ourselves.

Commits
-------

2744b41 [DI] Clear service reference graph
2017-11-29 17:40:14 +01:00
Christian Flothmann
f74ecedd0b Merge branch '3.3' into 3.4
* 3.3:
  [DI] Fix infinite loop in InlineServiceDefinitionsPass
  Do not cache cache attributes if `attributes` is in the context
  Test that it do not remove the new flashes when displaying the existing ones
  [HttpFoundation] AutExpireFlashBag should not clear new flashes
  [FrameworkBundle][Serializer] Remove YamlEncoder definition if Yaml component isn't installed
  [DI] Fix tracking of env vars in exceptions
  [Form] Don't rely on  if http-foundation isn't in FileType
  Fix merge
  substitute aliases in inline mappings
  added ability for substitute aliases when mapping in YAML is on single line
  [Console] Fix global console flag when used in chain
2017-11-29 14:28:14 +01:00
Nicolas Grekas
2744b41c83 [DI] Clear service reference graph 2017-11-29 09:18:28 +01:00
Nicolas Grekas
b988aa7c59 [DI] Fix infinite loop in InlineServiceDefinitionsPass 2017-11-29 09:04:31 +01:00
Nicolas Grekas
73f1ac5ea2 [DI] Fix tracking of env vars in exceptions 2017-11-26 20:37:03 +01:00
Fabien Potencier
7c0a59ffed bug #25158 [DI] Remove unreachable code (GawainLynch)
This PR was merged into the 3.4 branch.

Discussion
----------

[DI] Remove unreachable code

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

#24033 added the ability to ignore uninitialized references, but the regex above the conditional would lead to an `InvalidArgumentException` being thrown.

Commits
-------

ced0857560 Remove unreachable code
2017-11-26 07:53:06 -08:00
Gawain Lynch
ced0857560
Remove unreachable code 2017-11-26 14:53:48 +01:00
Nicolas Grekas
f897542cb2 Merge branch '3.3' into 3.4
* 3.3:
  [DI] Dont resolve envs in service ids
  Add tests proving it can load annotated files
  [WebProfilerBundle] Reset letter-spacing in toolbar
  Prefer overflow-wrap to word-break
  [Routing] Fix "config-file-relative" annotation loader resources
  Make search in debug:container command case-insensitive
  `resolveEnvPlaceholders` will return a mixed value
2017-11-24 15:13:49 +01:00
Nicolas Grekas
7921255faf [DI] Dont resolve envs in service ids 2017-11-24 13:44:22 +01:00
Nicolas Grekas
9cc4a213c9 [DI] Analyze setter-circular deps more precisely 2017-11-20 18:46:17 +01:00
Nicolas Grekas
1775bba68f [DI] Skip hot_path tag for deprecated services as their class might also be 2017-11-19 23:04:27 +01:00
Nicolas Grekas
2176be74d8
[DI] Fix by-type args injection 2017-11-16 13:36:51 +02:00
Nicolas Grekas
f7cb559a06 [DI] Add "container.hot_path" tag to flag the hot path and inline related services 2017-11-09 15:14:31 +01:00
Maxime Steinhausser
f8f3a15b7a [DI] Fix cannot bind env var 2017-11-07 09:01:11 +01:00
Nicolas Grekas
73982760f7 Merge branch '3.3' into 3.4
* 3.3:
  [Serializer] Fix extra attributes when no group specified
  [Intl] Make intl-data tests pass and save language aliases again
  [Console] Fix CommandTester::setInputs() docblock
  [Serializer] readd default argument value
  [VarDumper] fix trailling comma when dumping an exception
  Remove useless docblocks
  [FrameworkBundle] Fix docblocks
  [PropertyInfo] Remove useless docblocks
2017-11-05 17:10:10 +01:00
Nicolas Grekas
b354d6ca84 Merge branch '2.8' into 3.3
* 2.8:
  [Intl] Make intl-data tests pass and save language aliases again
  Remove useless docblocks
  [PropertyInfo] Remove useless docblocks
2017-11-05 16:47:03 +01:00
Nicolas Grekas
9bc9474ff0 Merge branch '2.7' into 2.8
* 2.7:
  [Intl] Make intl-data tests pass and save language aliases again
  Remove useless docblocks
2017-11-05 16:25:56 +01:00
Nicolas Grekas
2443511324 Remove useless docblocks 2017-10-29 10:49:53 +01:00
Nicolas Grekas
c7e59b3a5b Merge branch '3.3' into 3.4
* 3.3:
  Ensure DeprecationErrorHandler::collectDeprecations() is triggered
  [FrameworkBundle] Allow to disable assets via framework:assets xml configuration
  fixed $_ENV/$_SERVER precedence in test framework
  [HttpFoundation] Fix FileBag issue with associative arrays
  [DI] Throw when a service name or an alias contains dynamic values (prevent an infinite loop)
  fix the phpdoc that is not really inherited from response
  Minor docblock cleanup
  Remove redundant sprintf arguments.
2017-10-28 18:49:05 +02:00
Kévin Dunglas
14e30857ea [DI] Throw when a service name or an alias contains dynamic values (prevent an infinite loop) 2017-10-25 18:14:47 -07:00
Nicolas Grekas
1e1b37753c Merge branch '3.3' into 3.4
* 3.3:
  [DI] minor docblock fixes
2017-10-24 16:12:06 +02:00
Nicolas Grekas
7fb9f614ee Merge branch '2.8' into 3.3
* 2.8:
  [DI] minor docblock fixes
2017-10-24 16:05:06 +02:00
Nicolas Grekas
2b95ba3299 Merge branch '2.7' into 2.8
* 2.7:
  [DI] minor docblock fixes
2017-10-24 15:48:52 +02:00
Nicolas Grekas
cb5e7912c7 Merge branch '3.3' into 3.4
* 3.3:
  [2.8] Fix some docblocks
  Escape trailing \ in QuestionHelper autocompletion
  [FrameworkBundle][Serializer] Remove outdated condition
  Add "doctrine/annotations" to top-level composer.json
  Fix phpdoc inconsistencies, simplify no-op sprintf.
  Remove inapplicable phpdoc comment
  nit: Fix phpdoc inconsistency and unreachable statement
  Prefer line formatter on missing cli dumper
  [DI] Enhance service locator error message
2017-10-24 14:44:53 +02:00
Nicolas Grekas
2a5759d7b7 feature #24671 [DI] Handle container.autowiring.strict_mode to opt-out from legacy autowiring (nicolas-grekas)
This PR was merged into the 3.4 branch.

Discussion
----------

[DI] Handle container.autowiring.strict_mode to opt-out from legacy autowiring

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

To preserve BC, autowiring still wires things in hybrid 2.8/3.3 modes.
But 2.8 mode is really a foot gun.
I propose to add a new parameter in SF3.4, to opt-out of this 2.8 mode, and enable this strict mode for all new projects.
WDYT?
(see https://github.com/symfony/recipes/pull/221 for corresponding change on Flex recipe)

Commits
-------

a4a0ae2 [DI] Handle container.autowiring.strict_mode to opt-out from legacy autowiring
2017-10-24 14:37:11 +02:00
Nicolas Grekas
0c9edaf336 [DI] minor docblock fixes 2017-10-24 13:40:19 +02:00
Nicolas Grekas
a4a0ae20ca [DI] Handle container.autowiring.strict_mode to opt-out from legacy autowiring 2017-10-24 09:38:31 +02:00
Roland Franssen
3cee7a65de [DI] Register default env var provided types 2017-10-21 10:39:15 +02:00
Robin Chalas
6a6256c6a8 Do not process bindings in AbstractRecursivePass 2017-10-18 14:27:18 +02:00
Nicolas Grekas
fdb0ea9fdd [DI] Enhance service locator error message 2017-10-17 00:51:02 +02:00
Fabien Potencier
5904d34125 bug #24488 [DI] Prefixed env vars and load time inlining are incompatible (nicolas-grekas)
This PR was merged into the 3.4 branch.

Discussion
----------

[DI] Prefixed env vars and load time inlining are incompatible

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

That's because env var processors are not registered yet.

Commits
-------

91c9287c55 [DI] Prefixed env vars and load time inlining are incompatible
2017-10-09 21:05:35 -07:00
Fabien Potencier
7f899a965a bug #24468 [DI] Turn private defs to non-public ones before removing passes (nicolas-grekas)
This PR was merged into the 3.4 branch.

Discussion
----------

[DI] Turn private defs to non-public ones before removing passes

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

As spotted by @stof in https://github.com/symfony/symfony/issues/24465#issuecomment-334786670.

Commits
-------

e5d0934b87 [DI] Turn private defs to non-public ones before removing passes
2017-10-09 21:03:01 -07:00
Nicolas Grekas
91c9287c55 [DI] Prefixed env vars and load time inlining are incompatible 2017-10-09 19:43:01 +02:00
Nicolas Grekas
d90e7212ea [DI] Exclude inline services declared in XML from autowiring candidates 2017-10-08 16:39:03 +02:00
Nicolas Grekas
e5d0934b87 [DI] Turn private defs to non-public ones before removing passes 2017-10-07 10:21:26 +02:00
Maxime Steinhausser
f9aeee5e63 [DI] Fix missing CHANGELOG update + typo 2017-10-02 14:00:46 +02:00
Nicolas Grekas
fedcc91c8d Merge branch '3.3' into 3.4
* 3.3: (23 commits)
  Tests and fix for issue in array model data in EntityType field with multiple=true
  [Form] Fixed PercentToLocalizedStringTransformer to accept both comma and dot as decimal separator, if possible
  removed useless PHPDoc
  [Form] Fix FormInterface::submit() annotation
  [PHPUnitBridge] don't remove when set to  empty string
  PdoSessionHandler: fix advisory lock for pgsql when session.sid_bits_per_character > 4
  HttpCache does not consider ESI resources in HEAD requests
  Fix translation for "This field was not expected"
  [Routing] Enhance Route(Collection) docblocks
  Added improvement for accuracy in MoneyToLocalizedStringTransformer.
  Removed unused private property
  Use correct verb form in the pull request template
  Use PHP_MAXPATHLEN in Filesystem.
  Added null as explicit return type (?TokenInterface)
  [FrameworkBundle] Fix Routing\DelegatingLoader
  Render all line breaks according to the exception message
  [Form] Fix phpdoc
  [DI] remove confusing code
  [Form] Fixed GroupSequence with "constraints" option
  [Validator] Clarify UUID validator behavior
  ...
2017-10-02 08:49:52 +02:00
Nicolas Grekas
a707bbf090 Merge branch '2.8' into 3.3
* 2.8: (22 commits)
  Tests and fix for issue in array model data in EntityType field with multiple=true
  [Form] Fixed PercentToLocalizedStringTransformer to accept both comma and dot as decimal separator, if possible
  removed useless PHPDoc
  [Form] Fix FormInterface::submit() annotation
  PdoSessionHandler: fix advisory lock for pgsql when session.sid_bits_per_character > 4
  HttpCache does not consider ESI resources in HEAD requests
  Fix translation for "This field was not expected"
  [Routing] Enhance Route(Collection) docblocks
  Added improvement for accuracy in MoneyToLocalizedStringTransformer.
  Removed unused private property
  Use correct verb form in the pull request template
  Use PHP_MAXPATHLEN in Filesystem.
  Added null as explicit return type (?TokenInterface)
  [FrameworkBundle] Fix Routing\DelegatingLoader
  Render all line breaks according to the exception message
  [Form] Fix phpdoc
  [DI] remove confusing code
  [Form] Fixed GroupSequence with "constraints" option
  [Validator] Clarify UUID validator behavior
  [Filesystem] Fixed makePathRelative
  ...
2017-10-02 08:42:24 +02:00
Nicolas Grekas
d4cbc70c50 Merge branch '2.7' into 2.8
* 2.7: (22 commits)
  Tests and fix for issue in array model data in EntityType field with multiple=true
  [Form] Fixed PercentToLocalizedStringTransformer to accept both comma and dot as decimal separator, if possible
  removed useless PHPDoc
  [Form] Fix FormInterface::submit() annotation
  PdoSessionHandler: fix advisory lock for pgsql when session.sid_bits_per_character > 4
  HttpCache does not consider ESI resources in HEAD requests
  Fix translation for "This field was not expected"
  [Routing] Enhance Route(Collection) docblocks
  Added improvement for accuracy in MoneyToLocalizedStringTransformer.
  Removed unused private property
  Use correct verb form in the pull request template
  Use PHP_MAXPATHLEN in Filesystem.
  Added null as explicit return type (?TokenInterface)
  [FrameworkBundle] Fix Routing\DelegatingLoader
  Render all line breaks according to the exception message
  [Form] Fix phpdoc
  [DI] remove confusing code
  [Form] Fixed GroupSequence with "constraints" option
  [Validator] Clarify UUID validator behavior
  [Filesystem] Fixed makePathRelative
  ...
2017-10-01 23:00:16 +02:00
Nicolas Grekas
648a8953dd feature #22200 [DI] Reference tagged services in config (ro0NL)
This PR was merged into the 3.4 branch.

Discussion
----------

[DI] Reference tagged services in config

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

This is a proof of concept to reference a sequence of tagged services.

The problem bugs me for some time, and at first i thought the solution was to have some super generic compiler pass. If it could replace a lot of compilers in core.. perhaps worth it, but eventually each tag comes with it's own logic, including how to deal with tag attributes.

However, writing the passes over and over again becomes tedious for the most basic usecase. So given the recent developments, this idea came to mind.

```yml
services:
    a:
        class: stdClass
        properties: { a: true }
        tags: [foo]

    b:
        class: stdClass
        properties: { b: true }
        tags: [foo]

    c:
        class: stdClass
        properties:
            #stds: !tagged_services foo (see #22198)
            stds: !tagged_services
                foo
```

```
dump(iterator_to_array($this->get('c')->stds));
```

```
array:2 [▼
  0 => {#5052 ▼
    +"a": true
  }
  1 => {#4667 ▼
    +"b": true
  }
]
```

Given the _basic_ example at https://symfony.com/doc/current/service_container/tags.html, this could replace that.

Any thoughts?

Commits
-------

979e58f [DI] Reference tagged services in config
2017-09-28 17:24:12 +02:00
Roland Franssen
979e58f370 [DI] Reference tagged services in config 2017-09-28 16:10:08 +02:00
Christian Flothmann
b7d0b09f31 Merge branch '3.3' into 3.4
* 3.3:
  Set a NullLogger in ApcuAdapter when Apcu is disabled in CLI
  Minor reword
  [HttpKernel] Make array vs "::" controller definitions consistent
  Fix tests
  [TwigBundle] Remove profiler related scripting
  [TwigBundle][WebProfilerBundle] Switch to DOMContentLoaded event
  [WebProfilerBundle] Hide inactive tabs from CSS
  [TwigBundle] Make deprecations scream in logs
  [TwigBundle] Hide logs if unavailable, i.e. webprofiler
  [TwigBundle] Break long lines in exceptions
  [WebProfilerBundle] Added missing link to profile token
  [DI] Fix decorated service merge in ResolveInstanceofConditionalsPass
  Preserve URI fragment in HttpUtils::generateUri()
  [PhpUnitBridge] do not require an error context
2017-09-28 15:03:46 +02:00
Nicolas Grekas
5dcd573ecf bug #24313 [DI] Fix tracking of bound arguments when using autoconfiguration (nicolas-grekas)
This PR was merged into the 3.4 branch.

Discussion
----------

[DI] Fix tracking of bound arguments when using autoconfiguration

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

An exception is currently thrown when using arguments bindings on an autoconfigured controller action.
This fixes the issue.

Commits
-------

091f943 [DI] Fix tracking of bound arguments when using autoconfiguration
2017-09-26 11:47:50 +02:00
Nicolas Grekas
091f943900 [DI] Fix tracking of bound arguments when using autoconfiguration 2017-09-26 11:38:39 +02:00
Maxime Steinhausser
55aa662480 feature #24295 [DI][DX] Throw exception on some ContainerBuilder methods used from extensions (ogizanagi)
This PR was merged into the 3.4 branch.

Discussion
----------

[DI][DX] Throw exception on some ContainerBuilder methods used from extensions

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | no
| New feature?  | yes <!-- don't forget updating src/**/CHANGELOG.md files -->
| BC breaks?    | no (unlikely, that would mean there already was an issue in userland code)
| Deprecations? | no <!-- don't forget updating UPGRADE-*.md files -->
| Tests pass?   | yes
| Fixed tickets | #24282 <!-- #-prefixed issue number(s), if any -->
| License       | MIT
| Doc PR        | N/A

Commits
-------

88549fff5b [DI][DX] Throw exception on some ContainerBuilder methods used from extensions
2017-09-26 07:54:41 +02:00
Nicolas Grekas
8136fa5050 feature #24290 Adding Definition::addError() and a compiler pass to throw errors as exceptions (weaverryan)
This PR was squashed before being merged into the 3.4 branch (closes #24290).

Discussion
----------

Adding Definition::addError() and a compiler pass to throw errors as exceptions

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes & no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | yes (very minor)
| Tests pass?   | yes
| Fixed tickets | #23606
| License       | MIT
| Doc PR        | Not needed

Hi guys!

Very simple: when there is an error with a Definition, we can now call `Definition::addError()` instead of throwing an exception. Then, a new compiler pass (after removal) actually throws an exception. The advantage is that we can avoid throwing exceptions for services that are ultimately removed from the container. That's important for auto-registration, where we commonly register all services in `src/`... but then many of them are removed later.

A few interesting notes:
- We can probably convert more things from exceptions to `Definition::addError()`. I've only converted autowiring errors and things in `CheckArgumentsValidityPass` (that was necessary because it was throwing exceptions in some cases due to autowiring failing... which was the true error)
- `Definition` can hold multiple errors, but I'm only showing the first error in the exception message. The reason is clarity: I think usually the first error is the most (or only) important. But having `Definition::addError()` avoids the possibility of a later error overriding an earlier one

Cheers!

Commits
-------

a85b37a Adding Definition::addError() and a compiler pass to throw errors as exceptions
2017-09-25 11:29:01 +02:00
Ryan Weaver
a85b37a0e6 Adding Definition::addError() and a compiler pass to throw errors as exceptions 2017-09-25 11:28:57 +02:00
Nicolas Grekas
dc55dd2c99 [DI] Add AutowireRequiredMethodsPass to fix bindings for @required methods 2017-09-25 10:48:11 +02:00