summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikita Popov <nikic@php.net>2015-02-12 23:25:09 +0100
committerNikita Popov <nikic@php.net>2015-02-12 23:25:09 +0100
commit240fbd36f18efcec817b0b8ecd85763ec6abf007 (patch)
tree262493af9a0d3acaf45cf387f4afde7b717c7d51
parent8c81d80e10e0f189307fc8ff4a8fb34bd0cb1fcb (diff)
downloadphp-git-240fbd36f18efcec817b0b8ecd85763ec6abf007.tar.gz
Add test to ensure ReflectionClass works correctly with traits
Some of these were not working correctly before Guilherme's patch. Another was broken by it and is fixed in this commit as well.
-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)