diff options
author | Marcus Boerger <helly@php.net> | 2004-03-09 16:38:37 +0000 |
---|---|---|
committer | Marcus Boerger <helly@php.net> | 2004-03-09 16:38:37 +0000 |
commit | 50ee116f08e28ec83e23594b9fd5a95fff51d533 (patch) | |
tree | f9896b73e53e3cd439e956cd19841aec6a0c72a9 /ext/reflection/php_reflection.c | |
parent | 494d8207fe1e85fcf6f33a833c3209df529468a6 (diff) | |
download | php-git-50ee116f08e28ec83e23594b9fd5a95fff51d533.tar.gz |
Clearify the different method/class flags (as discussed with Andi).
Diffstat (limited to 'ext/reflection/php_reflection.c')
-rw-r--r-- | ext/reflection/php_reflection.c | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c index 89bd0a9282..97b71d5059 100644 --- a/ext/reflection/php_reflection.c +++ b/ext/reflection/php_reflection.c @@ -269,13 +269,17 @@ static void _class_string(string *str, zend_class_entry *ce, zval *obj, char *in if (ce->get_iterator != NULL) { string_printf(str, "<iterateable> "); } - if (ce->ce_flags & ZEND_ACC_ABSTRACT_CLASS) { - string_printf(str, "abstract "); + if (ce->ce_flags & ZEND_ACC_INTERFACE) { + string_printf(str, "interface "); + } else { + if (ce->ce_flags & (ZEND_ACC_IMPLICIT_ABSTRACT_CLASS|ZEND_ACC_EXPLICIT_ABSTRACT_CLASS)) { + string_printf(str, "abstract "); + } + if (ce->ce_flags & ZEND_ACC_FINAL_CLASS) { + string_printf(str, "final "); + } + string_printf(str, "class "); } - if (ce->ce_flags & ZEND_ACC_FINAL_CLASS) { - string_printf(str, "final "); - } - string_printf(str, (ce->ce_flags & ZEND_ACC_INTERFACE) ? "interface " : "class "); string_write(str, ce->name, ce->name_length); if (ce->parent) { string_printf(str, " extends %s", ce->parent->name); @@ -952,7 +956,7 @@ ZEND_METHOD(reflection, getModifierNames) array_init(return_value); - if (modifiers & (ZEND_ACC_ABSTRACT | ZEND_ACC_ABSTRACT_CLASS)) { + if (modifiers & (ZEND_ACC_ABSTRACT | ZEND_ACC_EXPLICIT_ABSTRACT_CLASS)) { add_next_index_stringl(return_value, "abstract", sizeof("abstract"), 1); } if (modifiers & (ZEND_ACC_FINAL | ZEND_ACC_FINAL_CLASS)) { @@ -2252,7 +2256,7 @@ ZEND_METHOD(reflection_class, isFinal) Returns whether this class is abstract */ ZEND_METHOD(reflection_class, isAbstract) { - _class_check_flag(INTERNAL_FUNCTION_PARAM_PASSTHRU, ZEND_ACC_ABSTRACT_CLASS); + _class_check_flag(INTERNAL_FUNCTION_PARAM_PASSTHRU, ZEND_ACC_IMPLICIT_ABSTRACT_CLASS); } /* }}} */ @@ -3192,7 +3196,8 @@ ZEND_API void zend_register_reflection_api(TSRMLS_D) { REGISTER_MAIN_LONG_CONSTANT("M_FINAL", ZEND_ACC_FINAL, CONST_PERSISTENT|CONST_CS); /* Class modifiers */ - REGISTER_MAIN_LONG_CONSTANT("C_ABSTRACT", ZEND_ACC_ABSTRACT_CLASS, CONST_PERSISTENT|CONST_CS); + REGISTER_MAIN_LONG_CONSTANT("C_IMPLICIT_ABSTRACT", ZEND_ACC_IMPLICIT_ABSTRACT_CLASS, CONST_PERSISTENT|CONST_CS); + REGISTER_MAIN_LONG_CONSTANT("C_EXPLICIT_ABSTRACT", ZEND_ACC_EXPLICIT_ABSTRACT_CLASS, CONST_PERSISTENT|CONST_CS); REGISTER_MAIN_LONG_CONSTANT("C_FINAL", ZEND_ACC_FINAL_CLASS, CONST_PERSISTENT|CONST_CS); } /* }}} */ |