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

Reply via email to