summaryrefslogtreecommitdiff
path: root/ext/reflection/php_reflection.c
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2018-08-23 02:02:26 +0300
committerDmitry Stogov <dmitry@zend.com>2018-08-23 02:02:26 +0300
commit67397970b25d03254f000c36a73204720475b324 (patch)
treec5d7442c3b5ac4739eaaf18a6102cc5b33c1efb4 /ext/reflection/php_reflection.c
parent92fdf9d6292712b184bb569ad5a1aa15a65d137e (diff)
downloadphp-git-67397970b25d03254f000c36a73204720475b324.tar.gz
Replace zend_class_entry->traits by persistent zend_class_entry->trait_names.
Move trait binding code into ZEND_DECLARE_*CLASS opcodes. Remove ZEND_ADD_TRIAIT and ZEND_BIND_TRAITS opcodes.
Diffstat (limited to 'ext/reflection/php_reflection.c')
-rw-r--r--ext/reflection/php_reflection.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c
index 6f34cf29bf..c481e79618 100644
--- a/ext/reflection/php_reflection.c
+++ b/ext/reflection/php_reflection.c
@@ -4888,8 +4888,13 @@ ZEND_METHOD(reflection_class, getTraits)
for (i=0; i < ce->num_traits; i++) {
zval trait;
- zend_reflection_class_factory(ce->traits[i], &trait);
- zend_hash_update(Z_ARRVAL_P(return_value), ce->traits[i]->name, &trait);
+ zend_class_entry *trait_ce;
+
+ trait_ce = zend_fetch_class_by_name(ce->trait_names[i].name,
+ ce->trait_names[i].lc_name, ZEND_FETCH_CLASS_TRAIT);
+ ZEND_ASSERT(trait_ce);
+ zend_reflection_class_factory(trait_ce, &trait);
+ zend_hash_update(Z_ARRVAL_P(return_value), ce->trait_names[i].name, &trait);
}
}
/* }}} */
@@ -4915,7 +4920,7 @@ ZEND_METHOD(reflection_class, getTraitNames)
array_init(return_value);
for (i=0; i < ce->num_traits; i++) {
- add_next_index_str(return_value, zend_string_copy(ce->traits[i]->name));
+ add_next_index_str(return_value, zend_string_copy(ce->trait_names[i].name));
}
}
/* }}} */