Commit Graph

54765 Commits

Author SHA1 Message Date
Nyholm
187562f385
[Config] Improve exception messages 2021-04-21 12:45:36 +02:00
Mathieu Santostefano
6e55fa84b7
Added Translation Providers
Co-authored-by: Olivier Dolbeau <github@a.bbnt.me>
2021-04-21 11:10:56 +02:00
Nicolas Grekas
be384cf221 minor #40875 [FrameworkBundle] Deprecate creating public workflow services (fancyweb)
This PR was merged into the 5.3-dev branch.

Discussion
----------

[FrameworkBundle] Deprecate creating public workflow services

| Q             | A
| ------------- | ---
| Branch?       | 5.x
| Bug fix?      | no
| New feature?  | no
| Deprecations? | yes
| Tickets       | -
| License       | MIT
| Doc PR        | -

AFAIK, workflow services don't need to be public. friendly ping to @lyrixx as a reviewer.

Commits
-------

79cbf005da [FrameworkBundle] Deprecate creating public workflow services
2021-04-21 11:09:22 +02:00
Nicolas Grekas
71c6c42399 bug #40877 [Config] Make sure one can build cache on Windows and then run in (Docker) Linux (Nyholm)
This PR was merged into the 5.3-dev branch.

Discussion
----------

[Config] Make sure one can build cache on Windows and then run in (Docker) Linux

| Q             | A
| ------------- | ---
| Branch?       | 5.x
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       |
| License       | MIT
| Doc PR        |

The generated ConfigBuilders should use the `\DirectorySeparator` constant. The resulting string will look like this:

```php
<?php

namespace Symfony\Config;

require_once __DIR__.\DIRECTORY_SEPARATOR.'Twig'.\DIRECTORY_SEPARATOR.'GlobalConfig.php';
require_once __DIR__.\DIRECTORY_SEPARATOR.'Twig'.\DIRECTORY_SEPARATOR.'DateConfig.php';
require_once __DIR__.\DIRECTORY_SEPARATOR.'Twig'.\DIRECTORY_SEPARATOR.'NumberFormatConfig.php';

/**
 * This class is automatically generated to help creating config.
 *
 * @experimental in 5.3
 */
class TwigConfig implements \Symfony\Component\Config\Builder\ConfigBuilderInterface
{
    private $formThemes;
```

Commits
-------

555c7dda48 [Config] Make sure one can build cache on Windows and then run in (Docker) Linux
2021-04-21 11:08:36 +02:00
Nicolas Grekas
f82c11883f bug #40878 [Config] Use plural name on array values (Nyholm)
This PR was squashed before being merged into the 5.3-dev branch.

Discussion
----------

[Config] Use plural name on array values

| Q             | A
| ------------- | ---
| Branch?       | 5.x
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       |
| License       | MIT
| Doc PR        | Related: https://github.com/symfony/symfony-docs/pull/15264

If we have a PrototypedArrayNode and the prototype is does not have a key (`->useAttributeAsKey('name')`). Then we know for sure that the value should be an array.

See this example from `$framework->assets()`

```diff
    /**
+    * @param list<mixed>
     * @return $this
     */
-   public function baseUrl($value): self
+   public function baseUrls(array $value): self
    {
        $this->baseUrls = $value;

        return $this;
    }
```

Commits
-------

f564a7a11a [Config] Use plural name on array values
2021-04-21 11:07:41 +02:00
Nyholm
f564a7a11a [Config] Use plural name on array values 2021-04-21 11:07:16 +02:00
Nicolas Grekas
0e924b857d minor #40884 [Semaphore] Inline lua scripts used by semaphore (jderusse)
This PR was merged into the 5.3-dev branch.

Discussion
----------

[Semaphore] Inline lua scripts used by semaphore

| Q             | A
| ------------- | ---
| Branch?       | 5.x
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | Fix #40820
| License       | MIT
| Doc PR        | -

Having Redis scripts in separate files might helps IDE and syntax highlight, but has also several drawbacks:
- I/O performance => file is read every time a semaphore is attempted to be acquired
- Readability: Needs to search and open a second file to understand what the method do
- Inconsistent with the rest of the codebase: ie. SQL queries are not store in separate file

Commits
-------

0d6666aac2 Inline lua scripts used by semaphore
2021-04-21 11:01:19 +02:00
Jérémy Derussé
0d6666aac2
Inline lua scripts used by semaphore 2021-04-20 22:05:20 +02:00
Thomas Calvet
79cbf005da [FrameworkBundle] Deprecate creating public workflow services 2021-04-20 13:17:41 +02:00
Fabien Potencier
1ed5e0ca46 minor #40848 [DependencyInjection] Improve autowiring errors when named autowiring aliases exist (nicolas-grekas)
This PR was merged into the 5.3-dev branch.

Discussion
----------

[DependencyInjection] Improve autowiring errors when named autowiring aliases exist

| Q             | A
| ------------- | ---
| Branch?       | 5.x
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

Before:
`Cannot autowire service "App\Controller\HelloController": argument "$workflow" of method "__construct()" references interface "Symfony\Component\Workflow\WorkflowInterface" but no such service exists. You should maybe alias this interface to one of these existing services: "state_machine.pull_request", "state_machine.comment".`

After:
`Cannot autowire service "App\Controller\HelloController": argument "$workflow" of method "__construct()" references interface "Symfony\Component\Workflow\WorkflowInterface" but no such service exists. Available autowiring aliases for this interface are: "$pullRequestStateMachine", "$commentStateMachine".`

/cc `@lyrixx` `@weaverryan`

Commits
-------

88eb0b57c1 [DependencyInjection] Improve autowiring errors when named autowiring aliases exist
2021-04-20 07:29:23 +02:00
Fabien Potencier
d4844ef28f bug #40872 [DependencyInjection] [AliasDeprecatedPublicServicesPass] Noop when the service is private (fancyweb)
This PR was merged into the 5.2 branch.

Discussion
----------

[DependencyInjection] [AliasDeprecatedPublicServicesPass] Noop when the service is private

| Q             | A
| ------------- | ---
| Branch?       | 5.2
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

If the service is already private, I think we can just ignore the tag and do nothing.

Moreover, when we deprecate a public service, if an user already sets its definition to private, it will be transparent instead of throwing.

Commits
-------

00048a9c73 [DependencyInjection][AliasDeprecatedPublicServicesPass] Noop when the service is private
2021-04-20 07:26:14 +02:00
Fabien Potencier
ec62a5ada3 minor #40876 [DependencyInjection] Add conflict rules for incompatible ext-psr versions (derrabus)
This PR was merged into the 5.3-dev branch.

Discussion
----------

[DependencyInjection] Add conflict rules for incompatible ext-psr versions

| Q             | A
| ------------- | ---
| Branch?       | 5.x
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       | N/A
| License       | MIT
| Doc PR        | N/A

This PR adds conflict rules for outdated versions of the PECL extension `psr` which are known to cause compatibility issues with DependencyInjection 5.3 and ServiceContracts 2.4.

Commits
-------

a02f062149 [DependencyInjection] Add conflict rules for incompatible ext-psr versions
2021-04-20 07:07:48 +02:00
Alexander M. Turek
a02f062149 [DependencyInjection] Add conflict rules for incompatible ext-psr versions 2021-04-19 22:21:11 +02:00
Nyholm
555c7dda48
[Config] Make sure one can build cache on Windows and then run in (Docker) Linux 2021-04-19 20:33:48 +02:00
Thomas Calvet
00048a9c73 [DependencyInjection][AliasDeprecatedPublicServicesPass] Noop when the service is private 2021-04-19 18:07:35 +02:00
Alexander M. Turek
527b885fc6 Merge branch '5.2' into 5.x
* 5.2:
  [VarDumper] Add PHP 8.1 enums tests
2021-04-19 16:14:47 +02:00
Alexander M. Turek
bf6e98c220 Merge branch '4.4' into 5.2
* 4.4:
  [VarDumper] Add PHP 8.1 enums tests
  [Console] : added phpdocs to InputOption constants
2021-04-19 16:07:32 +02:00
Alexander M. Turek
2dd8445198 minor #40867 [VarDumper] Add PHP 8.1 enums tests (shiftby)
This PR was merged into the 4.4 branch.

Discussion
----------

[VarDumper] Add PHP 8.1 enums tests

VarDumper component already supports PHP 8.1 enums, but didn't have tests

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #40238
| License       | MIT
| Doc PR        | no

VarDumper component already supports PHP 8.1 enums, but it didn't have tests.

```php
enum UnitEnumFixture {
    case Hearts;
    case Diamonds;
    case Clubs;
    case Spades;
}

dump(UnitEnumFixture::Hearts);
```
```
Symfony\Component\VarDumper\Tests\Fixtures\UnitEnumFixture {#435
  +name: "Hearts"
}
```

```php
enum BackedEnumFixture: string {
    case Hearts = 'H';
    case Diamonds = 'D';
    case Clubs = 'C';
    case Spades = 'S';
}

dump(BackedEnumFixture::Hearts);
```
```
Symfony\Component\VarDumper\Tests\Fixtures\BackedEnumFixture {#157
  +name: "Hearts"
  +value: "H"
}
```

Commits
-------

9a2a02710a [VarDumper] Add PHP 8.1 enums tests
2021-04-19 16:06:43 +02:00
Maxim Dovydenok
9a2a02710a [VarDumper] Add PHP 8.1 enums tests
VarDumper component already supports PHP 8.1 enums, but didn't have tests
2021-04-19 16:36:17 +03:00
Nyholm
59211ce286
feature #40800 [DependencyInjection] Add #[Target] to tell how a dependency is used and hint named autowiring aliases (nicolas-grekas)
This PR was merged into the 5.3-dev branch.

Discussion
----------

[DependencyInjection] Add `#[Target]` to tell how a dependency is used and hint named autowiring aliases

| Q             | A
| ------------- | ---
| Branch?       | 5.x
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

Right now, when one wants to target a specific service in a list of candidates, we rely on the name of the argument in addition to the type-hint, eg:

`function foo(WorkflowInterface $reviewStateMachine)`

The deal is that by giving the argument a name that matches the target use case of the required dependency, we make autowiring more useful.

But sometimes, being able to de-correlate the name of the argument and the purpose is desired.

This PR introduces a new `#[Target]` attribute on PHP8 that allows doing so. The previous example could be written as such thanks to it:

`function foo(#[Target('review.state_machine')] WorkflowInterface $workflow)`

That's all folks :)

Commits
-------

cc76eab795 [DependencyInjection] Add `#[Target]` to tell how a dependency is used and hint named autowiring aliases
2021-04-19 15:08:09 +02:00
Nicolas Grekas
cc76eab795 [DependencyInjection] Add #[Target] to tell how a dependency is used and hint named autowiring aliases 2021-04-19 14:53:54 +02:00
Nyholm
0fd8413f49
bug #40859 [Config] Support extensions without configuration in ConfigBuilder warmup (wouterj)
This PR was merged into the 5.3-dev branch.

Discussion
----------

[Config] Support extensions without configuration in ConfigBuilder warmup

| Q             | A
| ------------- | ---
| Branch?       | 5.x
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

`ConfigurationExtensionInterface::getConfiguration()` is nullable.

As a real use-case: A small internal bundle in my company just uses `array_merge` to manage a very limited set of configuration. We don't have these fancy Configuration classes.

Commits
-------

0a6f5e50b7 [Config] Support extensions without configuration
2021-04-19 12:22:41 +02:00
Wouter de Jong
0a6f5e50b7 [Config] Support extensions without configuration 2021-04-18 19:45:52 +02:00
Oskar Stark
f9ad1cd91f bug #40852 [Notifier] Add missing entries in scheme to package map (jschaedl)
This PR was merged into the 5.3-dev branch.

Discussion
----------

[Notifier] Add missing entries in scheme to package map

| Q             | A
| ------------- | ---
| Branch?       | 5.x
| Bug fix?      | yes
| New feature?  | no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | - <!-- prefix each issue number with "Fix #", no need to create an issue if none exist, explain below instead -->
| License       | MIT
| Doc PR        | - <!-- required for new features -->
<!--
Replace this notice by a short README for your feature/bugfix. This will help people
understand your PR and can be used as a start for the documentation.

Additionally (see https://symfony.com/releases):
 - Always add tests and ensure they pass.
 - Never break backward compatibility (see https://symfony.com/bc).
 - Bug fixes must be submitted against the lowest maintained 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 branch 5.x.
 - Changelog entry should follow https://symfony.com/doc/current/contributing/code/conventions.html#writing-a-changelog-entry
-->

Commits
-------

8cf605062b Add missing entries in scheme to package map
2021-04-18 19:44:12 +02:00
Yonel Ceruto
29d41b1970 Add prototype definition support for nested options 2021-04-18 09:39:20 -04:00
Nicolas Grekas
88eb0b57c1 [DependencyInjection] Improve autowiring errors when named autowiring aliases exist 2021-04-18 10:37:39 +02:00
Fabien Potencier
926f87ff51 Bump Symfony version to 5.3.0 2021-04-18 08:45:08 +02:00
Fabien Potencier
889ec24172
Merge pull request #40853 from fabpot/release-5.3.0-BETA1
released v5.3.0-BETA1
2021-04-18 08:40:13 +02:00
Fabien Potencier
450f45ae70 Update VERSION for 5.3.0-BETA1 2021-04-18 08:39:48 +02:00
Fabien Potencier
c29a41ad3c Update CHANGELOG for 5.3.0-BETA1 2021-04-18 08:39:43 +02:00
Jan Schädlich
8cf605062b Add missing entries in scheme to package map 2021-04-18 07:25:16 +01:00
Fabien Potencier
13f9ee533b Fix tests 2021-04-18 08:18:12 +02:00
Fabien Potencier
f67d11c84d minor #40845 [Notifier] Notifier add test for adding transport factories to framework extension (jschaedl, fabpot)
This PR was merged into the 5.3-dev branch.

Discussion
----------

[Notifier] Notifier add test for adding transport factories to framework extension

| Q             | A
| ------------- | ---
| Branch?       | 5.x
| Bug fix?      | no
| New feature?  | no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       |  <!-- prefix each issue number with "Fix #", no need to create an issue if none exist, explain below instead -->
| License       | MIT
| Doc PR        |  <!-- required for new features -->

Follow up of https://github.com/symfony/symfony/pull/40843 and https://github.com/symfony/symfony/pull/40844

Needs to be rebased after both were merged.

See changes: ddf61c2dae

Commits
-------

3118c9088a Make sure we will not forget to add notifier transport factories to FrameworkExtension anymore
2021-04-18 07:55:29 +02:00
Jan Schädlich
3118c9088a Make sure we will not forget to add notifier transport factories to FrameworkExtension anymore 2021-04-18 07:55:19 +02:00
Fabien Potencier
1a87c72c1f feature #40838 [SecurityBundle] Deprecate public services to private (fancyweb)
This PR was merged into the 5.3-dev branch.

Discussion
----------

[SecurityBundle] Deprecate public services to private

| Q             | A
| ------------- | ---
| Branch?       | 5.x
| Bug fix?      | no
| New feature?  | no
| Deprecations? | yes
| Tickets       | -
| License       | MIT
| Doc PR        | -

Follow up of https://github.com/symfony/symfony/pull/36691 on the SecurityBundle

Commits
-------

56be86aa7d [SecurityBundle] Deprecate public services to private
2021-04-18 07:46:24 +02:00
Thomas Calvet
56be86aa7d [SecurityBundle] Deprecate public services to private 2021-04-18 07:46:12 +02:00
Fabien Potencier
d8e4af2009 bug #40850 [FrameworkBundle][Notifier] Fix wrong class name usage (jschaedl)
This PR was merged into the 5.3-dev branch.

Discussion
----------

[FrameworkBundle][Notifier] Fix wrong class name usage

| Q             | A
| ------------- | ---
| Branch?       | 5.x
| Bug fix?      | yes
| New feature?  | no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | - <!-- prefix each issue number with "Fix #", no need to create an issue if none exist, explain below instead -->
| License       | MIT
| Doc PR        | - <!-- required for new features -->

I got the following error message a new symfony installation while trying to require fake-sms and fake-chat:

```
symfony new --version=next --dir=new

cd new

composer req notifier
composer req symfony/fake-chat-notifier

```

```
Executing script cache:clear [KO]
 [KO]
Script cache:clear returned with error code 1
!!
!!  In ContainerBuilder.php line 994:
!!
!!    You have requested a non-existent service "notifier.transport_factory.fakechat".
!!
!!
!!
Script `@auto`-scripts was called via post-update-cmd

Installation failed, reverting ./composer.json and ./composer.lock to their original content.
```

Commits
-------

213ef7f39f Fix wrong class name usage
2021-04-18 07:31:00 +02:00
Jan Schädlich
213ef7f39f Fix wrong class name usage 2021-04-17 23:05:24 +01:00
Oskar Stark
3fd41ce110 minor #40844 [FrameworkBundle] Add basic tests for the notifier framework bundle integration (jschaedl)
This PR was merged into the 5.3-dev branch.

Discussion
----------

[FrameworkBundle] Add basic tests for the notifier framework bundle integration

| Q             | A
| ------------- | ---
| Branch?       | 5.x
| Bug fix?      | no
| New feature?  | no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | - <!-- prefix each issue number with "Fix #", no need to create an issue if none exist, explain below instead -->
| License       | MIT
| Doc PR        |  <!-- required for new features -->

This PR adds basic tests for the notifier framework bundle integration:

- [x] Adjust the symfony-1.0.xsd and define the notifier type
- [x] Add general notifier configuration tests in FrameworkExtensionTest

Commits
-------

47088eb53a Add basic notifier tests
2021-04-17 20:14:09 +02:00
Nicolas Grekas
f3428928cf bug #40846 Fix typo (fabpot)
This PR was merged into the 5.3-dev branch.

Discussion
----------

Fix typo

| Q             | A
| ------------- | ---
| Branch?       | 5.x
| Bug fix?      | yes
| New feature?  | no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | n/a <!-- prefix each issue number with "Fix #", no need to create an issue if none exist, explain below instead -->
| License       | MIT
| Doc PR        | n/a

Commits
-------

791313b6a7 Fix typo
2021-04-17 19:13:30 +02:00
Nicolas Grekas
4cac9cf829 feature #40782 [DependencyInjection] Add #[When(env: 'foo')] to skip autoregistering a class when the env doesn't match (nicolas-grekas)
This PR was merged into the 5.3-dev branch.

Discussion
----------

[DependencyInjection] Add `#[When(env: 'foo')]` to skip autoregistering a class when the env doesn't match

| Q             | A
| ------------- | ---
| Branch?       | 5.x
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

This is a follow up of #40214, in order to conditionally auto-register classes.

By adding a `#[When(env: prod)]` annotation on a class, one can tell that a class should be skipped when the current env doesn't match the one declared in the attribute.

This saves from writing similar conditional configuration by using the per-env `services_prod.yaml` convention (+corresponding exclusion from `services.yaml`), or some logic in the Kernel.

Commits
-------

59c75bad7b [DI] add `#[When(env: 'foo')]` to skip autoregistering a class when the env doesn't match
2021-04-17 19:07:09 +02:00
Jan Schädlich
47088eb53a Add basic notifier tests 2021-04-17 17:51:43 +01:00
Fabien Potencier
791313b6a7 Fix typo 2021-04-17 18:36:24 +02:00
Oskar Stark
2edebffbbf bug #40843 [FrameworkBundle] Add missing notifier transport factories to framework extension (jschaedl)
This PR was squashed before being merged into the 5.3-dev branch.

Discussion
----------

[FrameworkBundle] Add missing notifier transport factories to framework extension

| Q             | A
| ------------- | ---
| Branch?       | 5.x
| Bug fix?      | yes
| New feature?  | no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       |  <!-- prefix each issue number with "Fix #", no need to create an issue if none exist, explain below instead -->
| License       | MIT
| Doc PR        |  <!-- required for new features -->

Tests on https://github.com/symfony/symfony/pull/39353 were failing (https://travis-ci.com/github/symfony/symfony/jobs/499236540) because of missing entries in the `$classToServices` array. They are now added and the list is ordered alphabetically.

Missing entries:

- LightSmsTransportFactory
- SmsBiurasTransportFactory
- MessageBirdTransport

Commits
-------

a83c9fe79a [FrameworkBundle] Add missing notifier transport factories to framework extension
2021-04-17 17:36:43 +02:00
Jan Schädlich
a83c9fe79a [FrameworkBundle] Add missing notifier transport factories to framework extension 2021-04-17 17:36:35 +02:00
Wouter de Jong
0eebd9e5f3 feature #40840 [Security] Add passport to AuthenticationTokenCreatedEvent (scheb)
This PR was merged into the 5.3-dev branch.

Discussion
----------

[Security] Add passport to AuthenticationTokenCreatedEvent

| Q             | A
| ------------- | ---
| Branch?       | 5.x
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| License       | MIT

This is a follow-up to my previous PR #37359, which added `AuthenticationTokenCreatedEvent` to the new authenticator-based security system to inspect the security token before it becomes effective to the security system. It **adds the passport** that was used to generate that token to the event, so that it can be inspected as well.

Reasoning:
1) It makes the event more aligned with other security events (which are also providing the passport)
2) I see valid use-cases when you'd want to look into the passport/badges to decide if you'd want to make modifications to the security token. @seldaek mentioned to me in scheb/2fa#74 that he'd like to have the ability to add a badge from his custom authenticator class, which then influences 2fa being triggered or not. Having the passport in the event would make that a straight forward task.

I would like to add this to Symfony 5.3, since @wouterj plans to stabilize the authenticator security system for that release, so I believe this is worth adding it now rather than later. The constructor change could be considered a BC break, but since authenticator system is experimental, I believe it's fair to make that change now before declaring it "stable".

Commits
-------

74196e0750 Add passport to AuthenticationTokenCreatedEvent
2021-04-16 21:36:14 +02:00
Christian Scheb
74196e0750 Add passport to AuthenticationTokenCreatedEvent 2021-04-16 21:36:04 +02:00
Fabien Potencier
beeb3045e1 [Console] Add missing phpdocs to InputOption constants 2021-04-16 19:36:28 +02:00
Fabien Potencier
c4ea8a35fc Merge branch '5.2' into 5.x
* 5.2:
  [Console] : added phpdocs to InputOption constants
2021-04-16 19:35:46 +02:00
Fabien Potencier
e633845cf9 Merge branch '4.4' into 5.2
* 4.4:
  [Console] : added phpdocs to InputOption constants
2021-04-16 19:35:15 +02:00