Skip to content

[OptionsResolver] Passing Options argument to deprecation closure #28738

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Oct 10, 2018

Conversation

yceruto
Copy link
Member

@yceruto yceruto commented Oct 5, 2018

Q A
Branch? master
Bug fix? no
New feature? yes
BC breaks? no
Deprecations? no
Tests pass? yes
Fixed tickets #28721 (comment)
License MIT
Doc PR symfony/symfony-docs#10439

As spotted here #28721, we sometimes need more advanced cases, where the deprecation of the value depends on another option:

$resolver->setDeprecated('date_format', function (Options $options, $dateFormat) {
    if (null !== $options['date_format'] && 'single_text' === $options['widget']) {
         return sprintf('Using the "date_format" option of the %s when the "widget" option is set to "single_text" is deprecated since Symfony 4.2.', self::class);
    }

    return '';
});

There is still a decision to make:

We're in time to change the arguments position (Options $options, $value) to be consistent with other closure signatures.

WDYT?

Copy link
Contributor

@ogizanagi ogizanagi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

@xabbuh
Copy link
Member

xabbuh commented Oct 5, 2018

We're in time to change the arguments position (Options $options, $value) to be consistent with other closure signatures.

Yes, let's do that. Otherwise, it will become hard to remember when arguments are passed in which order.

@yceruto yceruto force-pushed the advanced_option_deprecation branch 2 times, most recently from db8d2b4 to 2d531b3 Compare October 5, 2018 16:40
@nicolas-grekas nicolas-grekas added this to the next milestone Oct 5, 2018
@yceruto yceruto force-pushed the advanced_option_deprecation branch from c903fdb to 21b9aa3 Compare October 5, 2018 17:47
Copy link
Member

@xabbuh xabbuh left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

just two minor suggestions

@yceruto
Copy link
Member Author

yceruto commented Oct 5, 2018

@xabbuh comments addressed.

I'm preparing the doc PR right now.

Copy link
Member

@javiereguiluz javiereguiluz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Useful feature, nicely developed and fully documented. @yceruto thanks a lot for doing things so nice!

@fabpot fabpot force-pushed the advanced_option_deprecation branch from 532b6bd to 2936051 Compare October 10, 2018 09:26
@fabpot
Copy link
Member

fabpot commented Oct 10, 2018

Thank you @yceruto.

@fabpot fabpot merged commit 2936051 into symfony:master Oct 10, 2018
fabpot added a commit that referenced this pull request Oct 10, 2018
…ion closure (yceruto)

This PR was squashed before being merged into the 4.2-dev branch (closes #28738).

Discussion
----------

[OptionsResolver] Passing Options argument to deprecation closure

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

As spotted here #28721, we sometimes need more advanced cases, where the deprecation of the value depends on another option:
```php
$resolver->setDeprecated('date_format', function (Options $options, $dateFormat) {
    if (null !== $options['date_format'] && 'single_text' === $options['widget']) {
         return sprintf('Using the "date_format" option of the %s when the "widget" option is set to "single_text" is deprecated since Symfony 4.2.', self::class);
    }

    return '';
});
```
There is still a decision to make:
> We're in time to change the arguments position (Options $options, $value) to be consistent with other closure signatures.

WDYT?

Commits
-------

2936051 [OptionsResolver] Passing Options argument to deprecation closure
@yceruto yceruto deleted the advanced_option_deprecation branch October 10, 2018 13:54
javiereguiluz added a commit to symfony/symfony-docs that referenced this pull request Oct 12, 2018
…re deprecation func (yceruto)

This PR was merged into the master branch.

Discussion
----------

[OptionsResolver] Documenting Options argument for closure deprecation func

See symfony/symfony#28738

Commits
-------

abb5189 Documenting Options argument for closure deprecation func
@nicolas-grekas nicolas-grekas modified the milestones: next, 4.2 Nov 1, 2018
This was referenced Nov 3, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants