-
Notifications
You must be signed in to change notification settings - Fork 7.9k
get_class() disallow null parameter RFC #2082
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
Conversation
The RFC was accepted 15-3. |
@@ -1009,7 +1009,7 @@ ZEND_FUNCTION(get_class) | |||
{ | |||
zval *obj = NULL; | |||
|
|||
if (zend_parse_parameters(ZEND_NUM_ARGS(), "|o!", &obj) == FAILURE) { | |||
if (zend_parse_parameters(ZEND_NUM_ARGS(), "|o", &obj) == FAILURE) { |
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.
shouldn't the logic also be removed from source which handles obj == NULL
at 1016
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.
@antanas-arvasevicius I don't think so. The parameter is still optional, and so calling get_class()
returns the current scope, or gives a warning and returns false, if called from outside a class's scope.
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.
oh, sorry. Right, I've missed that get_class() could be still a valid call. But it's now similar effect as get_called_class(), couldn't get_called_class() work in any methods and return current class name then get_class($object); would do only one thing, returns a class name of a given object and no more else :)
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.
@antanas-arvasevicius get_called_class is aware of the 'late static binding' aka the real class, not the current scope class, so they are not equivalent. https://3v4l.org/ISkEZ
Changes get_class() to disallow null being a valid parameter, as that behaviour is highly astonishing.
The ratio of the number of characters in the RFC to the actual code change, is too darn high.
https://wiki.php.net/rfc/get_class_disallow_null_parameter