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