Edit report at https://bugs.php.net/bug.php?id=55475&edit=1
ID: 55475 Updated by: dmi...@php.net Reported by: mads at gartneriet dot dk Summary: is_a() triggers autoloader -Status: Assigned +Status: Closed Type: Bug Package: Scripting Engine problem PHP Version: 5.3.7 Assigned To: dmitry Block user comment: N Private report: N New Comment: I've committed the revert.is_a.behaviour.to.ignoring.strings.diff by alan at akbkhome dot com into 5.3. 5.4 is going to support string argument. Previous Comments: ------------------------------------------------------------------------ [2011-09-15 09:58:17] dmi...@php.net Automatic comment from SVN on behalf of dmitry Revision: http://svn.php.net/viewvc/?view=revision&revision=316810 Log: Fixed bug #55475 (is_a() triggers autoloader). (alan at akbkhome dot com) ------------------------------------------------------------------------ [2011-09-07 06:30:47] vchernoivan at gmail dot com I guess it is no use to argue if the behaviuor is correct or not, or how precise the manual is. Since IT IS BREAKING EXISTING CODE, for me, too. Before the change if (is_a($date,"DateTime")) return $date->format(...); /// some code handling datetime strings worked just fine. Now it triggers __autoload and results in completely broken page. For sure, personally I can change every piece of MY OWN code. But consider users of tons of PHP libraries! What do you think, how long will it take to update every piece of them? Vote for reverting to prior-5.7 behavior until 5.4 ------------------------------------------------------------------------ [2011-08-29 07:15:47] tyr...@php.net "note the "FALSE otherwise" ..." note "if the object" ... Tyrael ------------------------------------------------------------------------ [2011-08-26 10:24:39] kkaminski at itens dot pl +1 for reverting change in 5.3 branch and implementing it in 5.4 (or giving up as it really CHANGES BEHAVIOR) Currently __autoload throws Exceptions to break code execution on some frameworks. This is clean solution as if developer makes a typo, code still can handle missing class and for instance - display a dedicated error report. Unfortunately, with your latest 'fix' all PEAR packages are now broken on frameworks with __autoload + exceptions - due to isError implementation. Are you really sure is it MY duty to rewrite / repatch all code (external) code to work around your 'fix' ? How I am supposed to handle missing classes in this case? With exceptions I can catch everything and handle myself. Whats the other way? ------------------------------------------------------------------------ [2011-08-24 05:16:11] jha dot rajeev at gmail dot com I have a question re. the correct behavior of custom __autoload() functions when called from is_a() in 5.3.7. How do we handle/report missing classes? is is_a() prepared to handle any sort of exceptions or does it assume that __autoload will return TRUE/FALSE only? what if I just did something like is_a("",ABCD)? ------------------------------------------------------------------------ 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