summaryrefslogtreecommitdiff
path: root/ext
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
parent494d8207fe1e85fcf6f33a833c3209df529468a6 (diff)
downloadphp-git-50ee116f08e28ec83e23594b9fd5a95fff51d533.tar.gz
Clearify the different method/class flags (as discussed with Andi).
Diffstat (limited to 'ext')
-rw-r--r--ext/reflection/php_reflection.c23
-rwxr-xr-xext/spl/spl_functions.c2
-rwxr-xr-xext/spl/spl_iterators.c2
3 files changed, 16 insertions, 11 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);
}
/* }}} */
diff --git a/ext/spl/spl_functions.c b/ext/spl/spl_functions.c
index b4fd7507cf..fc9c315ea6 100755
--- a/ext/spl/spl_functions.c
+++ b/ext/spl/spl_functions.c
@@ -45,7 +45,7 @@ void spl_register_interface(zend_class_entry ** ppce, char * class_name, zend_fu
*ppce = zend_register_internal_class(&ce TSRMLS_CC);
/* entries changed by initialize */
- (*ppce)->ce_flags = ZEND_ACC_ABSTRACT | ZEND_ACC_INTERFACE;
+ (*ppce)->ce_flags = ZEND_ACC_INTERFACE;
}
/* }}} */
diff --git a/ext/spl/spl_iterators.c b/ext/spl/spl_iterators.c
index d3973ed4b9..2168787987 100755
--- a/ext/spl/spl_iterators.c
+++ b/ext/spl/spl_iterators.c
@@ -1204,7 +1204,7 @@ PHP_MINIT_FUNCTION(spl_iterators)
REGISTER_SPL_STD_CLASS_EX(FilterIterator, spl_dual_it_new, spl_funcs_FilterIterator);
REGISTER_SPL_ITERATOR(FilterIterator);
- spl_ce_FilterIterator->ce_flags |= ZEND_ACC_ABSTRACT_CLASS;
+ spl_ce_FilterIterator->ce_flags |= ZEND_ACC_EXPLICIT_ABSTRACT_CLASS;
REGISTER_SPL_SUB_CLASS_EX(ParentIterator, FilterIterator, spl_dual_it_new, spl_funcs_ParentIterator);
REGISTER_SPL_IMPLEMENTS(ParentIterator, RecursiveIterator);