diff options
-rw-r--r-- | ext/reflection/php_reflection.c | 3 | ||||
-rwxr-xr-x | ext/reflection/tests/bug38194.phpt | 13 |
2 files changed, 14 insertions, 2 deletions
diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c index 7118bfbec8..3afd5275e6 100644 --- a/ext/reflection/php_reflection.c +++ b/ext/reflection/php_reflection.c @@ -3574,8 +3574,7 @@ ZEND_METHOD(reflection_class, isSubclassOf) return; } - - RETURN_BOOL(instanceof_function(ce, class_ce TSRMLS_CC)); + RETURN_BOOL((ce != class_ce && instanceof_function(ce, class_ce TSRMLS_CC))); } /* }}} */ diff --git a/ext/reflection/tests/bug38194.phpt b/ext/reflection/tests/bug38194.phpt new file mode 100755 index 0000000000..5c888af59d --- /dev/null +++ b/ext/reflection/tests/bug38194.phpt @@ -0,0 +1,13 @@ +--TEST-- +Reflection Bug #38194 (ReflectionClass::isSubclassOf() returns TRUE for the class itself) +--SKIPIF-- +<?php extension_loaded('reflection') or die('skip'); ?> +--FILE-- +<?php +class Object { } + +$objectClass= new ReflectionClass('Object'); +var_dump($objectClass->isSubclassOf($objectClass)); +?> +--EXPECT-- +bool(false) |