ID: 39435 Updated by: [EMAIL PROTECTED] Reported By: mp at webfactory dot de -Status: Open +Status: Closed Bug Type: Class/Object related Operating System: any PHP Version: 5.2.0 Assigned To: pollita New Comment:
The function needs to be passed an object not a name of an object. Previous Comments: ------------------------------------------------------------------------ [2006-12-13 08:40:04] mp at webfactory dot de Checked PHP 5.2.1-dev (cli) (built: Dec 13 2006 08:24:06). var_dump(Iterator instanceof Traversable) now returns false, also with non-builtin (userland) classes, but should be true. var_dump("Iterator" instanceof Traversable) now gives an fatal error "instanceof expects an object instance, constant given". It should accept the first operand as a string just like is_subclass_of does and check if the class named "Iterator" subclasses/implements the other operand. $x = "Iterator"; var_dump($x instanceof Traversable) returns false. If $x is not an object but a string it might want to behave like the former case (string constant)? ------------------------------------------------------------------------ [2006-12-12 23:26:46] [EMAIL PROTECTED] This bug has been fixed in CVS. Snapshots of the sources are packaged every three hours; this change will be in the next snapshot. You can grab the snapshot at http://snaps.php.net/. Thank you for the report, and for helping us make PHP better. This has been changed to throw a proper error message rather than the uninformative one given. Perhaps in future versions this can be changed to allow constant strings giving the expected output, but not currently. ------------------------------------------------------------------------ [2006-11-08 18:26:52] [EMAIL PROTECTED] Sara should have a patch as soon as she gets online ------------------------------------------------------------------------ [2006-11-08 17:36:17] mp at webfactory dot de Description: ------------ instanceof produces wrong results when the first operand is not an object instance but a class name or a string containing a class name. Reproduce code: --------------- var_dump(Iterator instanceof Traversable); var_dump("Iterator" instanceof Traversable); Expected result: ---------------- bool(true) bool(true) Actual result: -------------- bool(false) Fatal error: Invalid opcode 138/1/1. in ... ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=39435&edit=1