On 28 January 2016 at 19:17, Lorenzo Fontana <fontanalor...@gmail.com> wrote: > Hello everybody!
Hello Lorenzo, > If *$result* is *null* the output of *get_class* is the name of the > containing class instead of the name of the object I wanted. Yes, that is bad. Perhaps a smaller change would give you the desired behaviour though? If we just give a warning/error if any non-object type is passed as the parameter, that would achieve what you want wouldn't it? And it provides a slightly easier 'upgrade' path for people who, for whatever reason, are currently passing null to it. > the name of the containing class can be easily obtained via *__CLASS__ > or via get_class($this)* or via *get_called_class() The first two can't be used directly as a callable, and so can't be passed around as a function. And get_called_class() returns the late static binding class. So if the smaller change of just giving a warning/error on any non-object as a parameter gives the desired result, I would recommend doing just that. It might even be possible to do it as a bug fix... cheers Dan ## Refactoring if non-objects are no longer allowed. Current code: echo get_class($result); Would need to be changed to: if ($result === null) { echo get_class(); } else { echo get_class($result); } ## get_called_class is late static binding. class foo { static function bar() { //return $fn(null); echo get_class()."\n"; echo get_called_class()."\n"; } } class Quux extends foo { } Quux::bar(); // Output is: // foo // Quux ## Callables can passed around class foo { public static function bar(callable $fn) { return $fn(); } } echo foo::bar('get_class'); -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php