summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/reflection/php_reflection.c2
-rw-r--r--ext/reflection/reflectionclass_for_traits.phpt20
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)