Bug #55475 [Com]: is_a() triggers autoloader
| From: | alan at akbkhome dot com | Date: | Tue, 23 Aug 2011 06:26:22 +0000 |
| Subject: | Bug #55475 [Com]: is_a() triggers autoloader | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-162831@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=55475&edit=1
ID: 55475
Comment by: alan at akbkhome dot com
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:
From the manual.
"Returns TRUE if the object is of this class or has this class as one of its
parents, FALSE otherwise."
note the "FALSE otherwise" ...
Defiantly a bug..
Previous Comments:
------------------------------------------------------------------------
[2011-08-23 05:17:52] mads at gartneriet dot dk
DB_DataObject uses is_a() to check if a variable is both an object and an instance of a particular
object.
PEAR::isError() does too.
This just gives warnings in my code, and I could of course easily fix these two places in my local
pear-code. But then it will bite me the next time I upgrade those packages from PEAR.
------------------------------------------------------------------------
[2011-08-22 21:46:19] colder@php.net
What code? Do you have some example?
------------------------------------------------------------------------
[2011-08-22 19:17:28] mads at gartneriet dot dk
Maybe not a bug, but it is behaving different ind 5.3.7 than in the previous versions, which makes
some of the code from PEAR that i use, give errors.
------------------------------------------------------------------------
[2011-08-22 18:36:59] stas@php.net
This is not a bug. If first argument is a string, it is interpreted as a class
name and autoloader is called for it. Actually, IIRC, one the reasons why is_a was
un-deprecated is that it can work with strings.
------------------------------------------------------------------------
[2011-08-22 15:46:05] johannes@php.net
is_a()'s first argument is documented to be an object. If called with a string, following the
documentation, I would actually expect a "Warning: is_a() expects parameter 1 to be object,
string given" and return NULL.
That aside and looking at the actual behavior: Previously is_a() could be used to check whether the
parameter is an object AND of a specific type in one go. This can't be done anymore. In $a =
"test"; is_a($a, "foo"); test might be an existing class and might be of type
foo. Now people have to do is_object() && is_a().
I don't like having such behavior change in bug fix versions as I don't like going back
and forth which is annoying for documentation and confusing for users. I would love to keep it out
of 5.3.8 to have that as low risk quick release for the hash issue. Which means a rollback to the
old way is even harder to do. (two versions with the new behavior out)
------------------------------------------------------------------------
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