Edit report at https://bugs.php.net/bug.php?id=55475&edit=1

 ID:                 55475
 Updated by:         ka...@php.net
 Reported by:        mads at gartneriet dot dk
 Summary:            is_a() triggers autoloader
 Status:             Assigned
 Type:               Bug
 Package:            Scripting Engine problem
 PHP Version:        5.3.7
 Assigned To:        dmitry
 Block user comment: N
 Private report:     N

 New Comment:

... the behaviour I'm talking about is obvious the return value and the fact 
that the autoloader now is called.


Previous Comments:
------------------------------------------------------------------------
[2011-08-22 14:40:46] ka...@php.net

I'm talking about the usual procedure we have about changing behaviour, a 
function suddenly returns the oppersite of what it used to in the middle of a 
stable series is very unlike to do, even for PHP.

I knnow it went from not working to working, but I don't on the fact that such 
a commonly used function will change behaviour like that. What we should do is 
to make a big fat warning in the migration guide for 5.3.x -> 5.4.x about it, 
and in the manual.

It would be the same if we changed substr() to be case insensitive in the 
middle of a release series, lets just not venture in such dark corners.

------------------------------------------------------------------------
[2011-08-22 14:27:31] col...@php.net

But what BC break are you talking about exactly?

It went from not-working (returning always false for strings as first argument) 
to working with autoload.

------------------------------------------------------------------------
[2011-08-22 13:41:16] ka...@php.net

I'm not arguing that the new behaviour is wrong, I believe it is the desired 
too but I don't agree to break BC in the middle of a stable release series nor 
as much as I would like to myself to achieve the right behaviour.

------------------------------------------------------------------------
[2011-08-22 13:31:21] col...@php.net

It seems correct to me as well to trigger autoload in this case. It does and 
always did so for is_subclass_of(), I don't see any reason for a condition of 
"subclasses_only" to yes or no trigger the autoload.

------------------------------------------------------------------------
[2011-08-22 11:00:28] dmi...@php.net

Before the patch, is_a() didn't accept string as the first argument at all, so 
it always returned "false" and never triggered __autoload(). The proposed patch 
didn't revert to original behavior. It just disables autoloading and may lead 
to wrong result.

class a {}
class b extends a {}
var_dump(is_a("b", "a")); // it was false before 5.3.7, now it's true

I would say that the old behaviour was wrong, especially because "instanceof" 
and is_subclass_of() already implemented support for string arguments.

------------------------------------------------------------------------


The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at

    https://bugs.php.net/bug.php?id=55475


-- 
Edit this bug report at https://bugs.php.net/bug.php?id=55475&edit=1

Reply via email to