Edit report at https://bugs.php.net/bug.php?id=61265&edit=1
ID: 61265
Comment by: jwalton at m3hc dot com
Reported by: manchokapitancho at gmail dot com
Summary: __autoload should know about traits
Status: Open
Type: Feature/Change Request
Package: Class/Object related
PHP Version: 5.4.0
Block user comment: N
Private report: N
New Comment:
Actually, the ambiguous ones (i.e. is_a) do not call the autoload.
Previous Comments:
------------------------------------------------------------------------
[2012-03-26 22:04:42] phristen at yahoo dot com
Ok, my point is still valid though.
Imagine I used is_a($a, "A", true) instead.
------------------------------------------------------------------------
[2012-03-26 03:42:08] phpmpan at mpan dot pl
`instanceof` operator does not trigget class loading:
-----------------------------------------
class X {}
function __autoload($name) {
echo "Loading $name...\n";
}
$x = new X();
if ($x instanceof X) {
echo 'x is X';
}
if ($x instanceof NonExistingClass) {
echo 'blarg';
}
-----------------------------------------
The same applies to argument types.
------------------------------------------------------------------------
[2012-03-25 17:10:13] phristen at yahoo dot com
This would certainly be a nice feature.
However, keep in mind that it is not always possible to tell whether something
is a class or an interface.
For example, when doing something like this, we can't tell whether 'A' is an
interface or a class:
if ($a instanceof A) {
}
------------------------------------------------------------------------
[2012-03-08 14:39:39] manchokapitancho at gmail dot com
Yes, there is a use case.
Currently, I use a workaround but in general, the idea behind is that after I
locate the file, corresponding to the class name being autoloaded,
I require_once the file and then check if the class is really inside
(class_exists). As of 5.4, class_exists returns false for traits and I have to
use
class_exists || trait_exists. Not a big deal, really, but it is still possible
to
have different paths for classes (ex. /classes) and different one for traits
(/traits).
------------------------------------------------------------------------
[2012-03-08 13:26:06] shiranai7 at hotmail dot com
Sorry.. it should say "It is NOT a critical feature" instead of "NOW".
------------------------------------------------------------------------
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=61265
--
Edit this bug report at https://bugs.php.net/bug.php?id=61265&edit=1