Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork9.7k
fix #17993 - Deprecated callable strings#18020
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 ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Uh oh!
There was an error while loading.Please reload this page.
Conversation
Simperfit commentedMar 5, 2016
Thank you, I didn't understand the issue correctly. I've changed my fix. |
| if (is_string($preferredChoices) && !is_callable($preferredChoices)) { | ||
| $preferredChoices =newPropertyPath($preferredChoices); | ||
| }elseif(is_string($preferredChoices) &&is_callable($preferredChoices)) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
missing space after elseif
HeahDude commentedMar 5, 2016
Not on these methods for sure. |
| if (is_string($value) && !is_callable($value)) { | ||
| $value =newPropertyPath($value); | ||
| }elseif (is_string($value) &&is_callable($value)) { | ||
| @trigger_error('createListFromChoices() treats callable strings as callable and is deprecated since version 3.0.',E_USER_DEPRECATED); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
since version 3.1 (for now)
HeahDude commentedMar 5, 2016
You could perhaps wrap the callable string in a closure inside those elseif (is_string($label) &&is_callable($label)) { @trigger_error('createView() - $label - treats callable strings as callable and is deprecated since version 3.0.',E_USER_DEPRECATED);$label =function ($choice)use ($label) {return$label($choice); };} |
Simperfit commentedMar 5, 2016
I have no errors doing the tests except of one in PasswordEncoder. Thanks@HeahDude for the help |
| if (is_string($value) && !is_callable($value)) { | ||
| $value =newPropertyPath($value); | ||
| }elseif (is_string($value) &&is_callable($value)) { | ||
| @trigger_error('createListFromChoices() treats callable strings as callable and is deprecated since version 3.1.',E_USER_DEPRECATED); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
If it's deprecated, what's the recommended thing to do instead? What will happen in 4.0? Please add this to the deprecation messages (and upgrade guide)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
@iltar is right. You should change each message to something like :
'Treating strings as callable is deprecated since version 3.1 and will throw an error in 4.0. You should use a "\Closure" instead.'HeahDude commentedMar 5, 2016
What error are you talking about ? |
Simperfit commentedMar 5, 2016
Nevermind, no error anymore |
fabpot commentedMar 6, 2016
@Simperfit What about adding some unit tests? |
Simperfit commentedMar 6, 2016
@fabpot I added one, will add one for each method |
xabbuh commentedMar 7, 2016
Looks like this needs another rebase. It contains some unrelated changes. Status: Needs work |
Simperfit commentedMar 7, 2016
@xabbuh Sorry for the unrelated changes, I've missed my rebase. |
| return$value($choices); | ||
| }; | ||
| return$value($choices); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Do we need to do all the stuff beside triggering the deprecation? Shouldn't the following code already handle the callback properly?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
I've followed the instruction of someone since I don't wanted to make bad things,
But you're right, adding the test without any code is the right thing to do.
Thanks
cd2bf8e to22f8264CompareSimperfit commentedMar 7, 2016
@fabpot I've added one test for each method, is it ok like that ? Thank you. |
UPGRADE-4.0.md Outdated
| * Using callable strings as choice options in ChoiceType has been deprecated | ||
| in favor of`PropertyPath`. Use a "\Closure" instead | ||
| Before: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Ok now you got one extra here
Simperfit commentedApr 1, 2016
I've rebased and added/removed the space :p |
c3b996d to12975bdCompareUPGRADE-4.0.md Outdated
| ```php | ||
| 'choice_value' => 'range', | ||
| 'choice_label' => function ($choice) { | ||
| return strtoupper($choice); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
You misunderstood the "four" space here mean four for this line only.
Now on got one extra space from line 23 to 37 and missing 3 here one 35 :p
Sorry, after that we're done, thank you for working on this PR :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
I hope this time it's ok :p
Np :)
UPGRADE-4.0.md Outdated
| -`"form.type.submit"` | ||
| -`"form.type.reset"` | ||
| `ArrayAccess` in`ResizeFormListener::preSubmit` method has been removed |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
to not conflict with master it must be before your change
ok just remove it
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
oops sorry
HeahDude commentedApr 2, 2016
Looks perfect now :) Thanks@Simperfit! This one is ready to merge now. Deprecate or revert470b140 ? ping@symfony/decoders |
Simperfit commentedApr 2, 2016
UPGRADE-4.0.md Outdated
| `ArrayAccess` in`ResizeFormListener::preSubmit` method has been removed. | ||
| * Using callable strings as choice options in ChoiceType has been deprecated | ||
| in favor of`PropertyPath`. Use a "\Closure" instead |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
The sentence as is must be added to theUPGRADE-3.1.md file. In this file it should read like "Using callable strings as choice options in ChoiceType has been removed in favor of passingPropertyPath instances."
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
👍
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
| `ArrayAccess` in`ResizeFormListener::preSubmit` method has been removed. | ||
| * Using callable strings as choice options in ChoiceType has been removed in favor of passing PropertyPath instances. | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
I would replace "has been removed" by "is not supported anymore".
But please wait for a symfony decider to tell you if it's ok. Thanks :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
You are right. That sounds a bit better.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
done :)
| `ArrayAccess` in`ResizeFormListener::preSubmit` method | ||
| * Using callable strings as choice options in`ChoiceType` has been deprecated | ||
| and will be used as`PropertyPath` instead of callable in Symfony 4.0. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
missing space at the beginning of the line
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
@fabpot space added.
Simperfit commentedApr 15, 2016
i've rebased with master. |
fabpot commentedApr 15, 2016
IIRC, we were waiting for@Tobion's opinion about merging or reverting instead. |
Tobion commentedApr 15, 2016
I would revert but I'm ok with both ways. |
fabpot commentedApr 15, 2016
Thank you@Simperfit. |
This PR was merged into the 3.1-dev branch.Discussion----------fix#17993 - Deprecated callable strings| Q | A| ------------- | ---| Branch | master| Bug fix? | no| New feature? | no| BC breaks? | no| Deprecations? | yes| Tests pass? | no| Fixed tickets |#17993| License | MIT| Doc PR |Is this ok ?- [x] Rebase when#18057 is mergedCommits-------191b495fix#17993 - Deprecated callable strings
Simperfit commentedApr 17, 2016
NP@fabpot. |
Is this ok ?