Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork9.7k
[ExpressionLanguage] throws an exception on calling uncallable method#24041
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
| if (!is_object($obj)) { | ||
| thrownew \RuntimeException('Unable to get a property on a non-object.'); | ||
| } | ||
| if (($toCall =array($obj,$this->nodes['attribute']->attributes['value'])) && !is_callable($toCall)) { |
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 (!is_callable($toCall = array($obj, $this->nodes['attribute']->attributes['value']))) {
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.
@nicolas-grekas fixed
| $registerCallback($el); | ||
| } | ||
| /** |
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.
please add also an@expectedExceptionMessage annotation
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. I did not add before to be consistent with the codebase in this component. I use@expectedExceptionMessageRegExp instead :)
fabpot commentedSep 5, 2017
Thank you@fmata. |
…able method (fmata)This PR was merged into the 2.7 branch.Discussion----------[ExpressionLanguage] throws an exception on calling uncallable method| Q | A| ------------- | ---| Branch? | 2.7| Bug fix? | yes| New feature? | no| BC breaks? | no| Deprecations? | no| Tests pass? | yes| Fixed tickets | n/a| License | MIT| Doc PR | n/aWhen we evaluate an expression, if a callable is incorrect (not exists or not accessible) a warning is printed.This PR handles this case and throws a \RuntimeException when `is_callable()` returns `false` :```php$el = new ExpressionLanguage();$el->evaluate('foo.myfunction()', array('foo' => new \stdClass()));```**Before:**`Warning: call_user_func_array() expects parameter 1 to be a valid callback, class 'stdClass' does not have a method 'myfunction' in /home/.../src/Symfony/Component/ExpressionLanguage/Node/GetAttrNode.php on line 84`**After:**`Fatal error: Uncaught RuntimeException: Unable to call method "myfunction" of object "stdClass". in /home/.../src/Symfony/Component/ExpressionLanguage/Node/GetAttrNode.php:81`Commits-------c8b65ae [ExpressionLanguage] throws an exception on calling uncallable method
Uh oh!
There was an error while loading.Please reload this page.
When we evaluate an expression, if a callable is incorrect (not exists or not accessible) a warning is printed.
This PR handles this case and throws a \RuntimeException when
is_callable()returnsfalse:Before:
Warning: call_user_func_array() expects parameter 1 to be a valid callback, class 'stdClass' does not have a method 'myfunction' in /home/.../src/Symfony/Component/ExpressionLanguage/Node/GetAttrNode.php on line 84After:
Fatal error: Uncaught RuntimeException: Unable to call method "myfunction" of object "stdClass". in /home/.../src/Symfony/Component/ExpressionLanguage/Node/GetAttrNode.php:81