diff options
| -rw-r--r-- | ext/reflection/php_reflection.c | 2 | ||||
| -rw-r--r-- | ext/reflection/reflectionclass_for_traits.phpt | 20 |
2 files changed, 21 insertions, 1 deletions
diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c index 309b10c1bb..1f16c4da78 100644 --- a/ext/reflection/php_reflection.c +++ b/ext/reflection/php_reflection.c @@ -4084,7 +4084,7 @@ ZEND_METHOD(reflection_class, isInstantiable) return; } GET_REFLECTION_OBJECT_PTR(ce); - if (ce->ce_flags & (ZEND_ACC_INTERFACE | ZEND_ACC_EXPLICIT_ABSTRACT_CLASS | ZEND_ACC_IMPLICIT_ABSTRACT_CLASS)) { + if (ce->ce_flags & (ZEND_ACC_INTERFACE | ZEND_ACC_TRAIT | ZEND_ACC_EXPLICIT_ABSTRACT_CLASS | ZEND_ACC_IMPLICIT_ABSTRACT_CLASS)) { RETURN_FALSE; } diff --git a/ext/reflection/reflectionclass_for_traits.phpt b/ext/reflection/reflectionclass_for_traits.phpt new file mode 100644 index 0000000000..526310a8b9 --- /dev/null +++ b/ext/reflection/reflectionclass_for_traits.phpt @@ -0,0 +1,20 @@ +--TEST-- +Tests some parts of ReflectionClass behavior for traits +--FILE-- +<?php + +trait T {} + +$r = new ReflectionClass('T'); +var_dump(Reflection::getModifierNames($r->getModifiers())); +var_dump($r->isAbstract()); +var_dump($r->isInstantiable()); +var_dump($r->isCloneable()); + +?> +--EXPECT-- +array(0) { +} +bool(false) +bool(false) +bool(false) |
