summaryrefslogtreecommitdiff
path: root/ext/reflection/php_reflection.c
diff options
context:
space:
mode:
authorMarcus Boerger <helly@php.net>2004-03-09 16:38:37 +0000
committerMarcus Boerger <helly@php.net>2004-03-09 16:38:37 +0000
commit50ee116f08e28ec83e23594b9fd5a95fff51d533 (patch)
treef9896b73e53e3cd439e956cd19841aec6a0c72a9 /ext/reflection/php_reflection.c
parent494d8207fe1e85fcf6f33a833c3209df529468a6 (diff)
downloadphp-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.c23
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);
}
/* }}} */