diff options
| author | Nikita Popov <nikic@php.net> | 2015-02-12 23:25:09 +0100 |
|---|---|---|
| committer | Nikita Popov <nikic@php.net> | 2015-02-12 23:25:09 +0100 |
| commit | 240fbd36f18efcec817b0b8ecd85763ec6abf007 (patch) | |
| tree | 262493af9a0d3acaf45cf387f4afde7b717c7d51 | |
| parent | 8c81d80e10e0f189307fc8ff4a8fb34bd0cb1fcb (diff) | |
| download | php-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.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) |
