diff options
author | Marcus Boerger <helly@php.net> | 2003-08-30 23:51:42 +0000 |
---|---|---|
committer | Marcus Boerger <helly@php.net> | 2003-08-30 23:51:42 +0000 |
commit | f1c92fa4c522f1ebde315437641bcddd9efadc9c (patch) | |
tree | 9b766b5679031b0dcae110a02e41f799edf6a2db | |
parent | c803e4643d65faabf2f37248e855d0f0c713991e (diff) | |
download | php-git-f1c92fa4c522f1ebde315437641bcddd9efadc9c.tar.gz |
- Calling abstract methods should be a error for consistency reason.
- So in reflection_api we use the reflection_exception again.
-rw-r--r-- | Zend/zend_default_classes.c | 9 | ||||
-rw-r--r-- | Zend/zend_default_classes.h | 1 | ||||
-rw-r--r-- | Zend/zend_exceptions.c | 9 | ||||
-rw-r--r-- | Zend/zend_exceptions.h | 1 | ||||
-rw-r--r-- | Zend/zend_execute.c | 6 | ||||
-rw-r--r-- | Zend/zend_reflection_api.c | 2 | ||||
-rw-r--r-- | ext/reflection/php_reflection.c | 2 |
7 files changed, 4 insertions, 26 deletions
diff --git a/Zend/zend_default_classes.c b/Zend/zend_default_classes.c index 5dd4da1dfa..ead9e4b7e9 100644 --- a/Zend/zend_default_classes.c +++ b/Zend/zend_default_classes.c @@ -25,7 +25,6 @@ #include "zend_builtin_functions.h" zend_class_entry *default_exception_ptr; -zend_class_entry *abstract_exception_ptr; static zend_object_value zend_default_exception_new(zend_class_entry *class_type TSRMLS_DC) { @@ -347,9 +346,6 @@ static void zend_register_default_exception(TSRMLS_D) zend_declare_property_null(default_exception_ptr, "file", sizeof("file")-1, ZEND_ACC_PROTECTED); zend_declare_property_null(default_exception_ptr, "line", sizeof("line")-1, ZEND_ACC_PROTECTED); zend_declare_property_null(default_exception_ptr, "trace", sizeof("trace")-1, ZEND_ACC_PROTECTED); - - INIT_CLASS_ENTRY(ce, "abstract_exception", NULL); - abstract_exception_ptr = zend_register_internal_class_ex(&ce, default_exception_ptr, NULL TSRMLS_CC); } ZEND_API zend_class_entry *zend_exception_get_default(void) @@ -357,11 +353,6 @@ ZEND_API zend_class_entry *zend_exception_get_default(void) return default_exception_ptr; } -ZEND_API zend_class_entry *zend_exception_get_abstract(void) -{ - return abstract_exception_ptr; -} - ZEND_API void zend_throw_exception_ex(zend_class_entry *exception_ce, long code TSRMLS_DC, char *format, ...) { zval *ex; diff --git a/Zend/zend_default_classes.h b/Zend/zend_default_classes.h index c3e592df9f..9b6e17661c 100644 --- a/Zend/zend_default_classes.h +++ b/Zend/zend_default_classes.h @@ -25,7 +25,6 @@ BEGIN_EXTERN_C() ZEND_API zend_class_entry *zend_exception_get_default(void); -ZEND_API zend_class_entry *zend_exception_get_abstract(void); ZEND_API void zend_register_default_classes(TSRMLS_D); /* exception_ce NULL or zend_exception_get_default() or a derived class diff --git a/Zend/zend_exceptions.c b/Zend/zend_exceptions.c index 5dd4da1dfa..ead9e4b7e9 100644 --- a/Zend/zend_exceptions.c +++ b/Zend/zend_exceptions.c @@ -25,7 +25,6 @@ #include "zend_builtin_functions.h" zend_class_entry *default_exception_ptr; -zend_class_entry *abstract_exception_ptr; static zend_object_value zend_default_exception_new(zend_class_entry *class_type TSRMLS_DC) { @@ -347,9 +346,6 @@ static void zend_register_default_exception(TSRMLS_D) zend_declare_property_null(default_exception_ptr, "file", sizeof("file")-1, ZEND_ACC_PROTECTED); zend_declare_property_null(default_exception_ptr, "line", sizeof("line")-1, ZEND_ACC_PROTECTED); zend_declare_property_null(default_exception_ptr, "trace", sizeof("trace")-1, ZEND_ACC_PROTECTED); - - INIT_CLASS_ENTRY(ce, "abstract_exception", NULL); - abstract_exception_ptr = zend_register_internal_class_ex(&ce, default_exception_ptr, NULL TSRMLS_CC); } ZEND_API zend_class_entry *zend_exception_get_default(void) @@ -357,11 +353,6 @@ ZEND_API zend_class_entry *zend_exception_get_default(void) return default_exception_ptr; } -ZEND_API zend_class_entry *zend_exception_get_abstract(void) -{ - return abstract_exception_ptr; -} - ZEND_API void zend_throw_exception_ex(zend_class_entry *exception_ce, long code TSRMLS_DC, char *format, ...) { zval *ex; diff --git a/Zend/zend_exceptions.h b/Zend/zend_exceptions.h index c3e592df9f..9b6e17661c 100644 --- a/Zend/zend_exceptions.h +++ b/Zend/zend_exceptions.h @@ -25,7 +25,6 @@ BEGIN_EXTERN_C() ZEND_API zend_class_entry *zend_exception_get_default(void); -ZEND_API zend_class_entry *zend_exception_get_abstract(void); ZEND_API void zend_register_default_classes(TSRMLS_D); /* exception_ce NULL or zend_exception_get_default() or a derived class diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index 4156717dbf..fcf91034bd 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -33,7 +33,6 @@ #include "zend_extensions.h" #include "zend_fast_cache.h" #include "zend_ini.h" -#include "zend_default_classes.h" #define get_zval_ptr(node, Ts, should_free, type) _get_zval_ptr(node, Ts, should_free TSRMLS_CC) #define get_zval_ptr_ptr(node, Ts, type) _get_zval_ptr_ptr(node, Ts TSRMLS_CC) @@ -2501,8 +2500,8 @@ int zend_do_fcall_common_helper(ZEND_OPCODE_HANDLER_ARGS) zend_bool should_change_scope; if (EX(function_state).function->common.fn_flags & ZEND_ACC_ABSTRACT) { - zend_throw_exception_ex(zend_exception_get_abstract(), 0 TSRMLS_CC, "Abstract method %s::%s called", EX(function_state).function->common.scope->name, EX(function_state).function->common.function_name); - goto fcall_exception; + zend_error(E_ERROR, "Abstract method %s::%s called", EX(function_state).function->common.scope->name, EX(function_state).function->common.function_name); + NEXT_OPCODE(); /* Never reached */ } zend_ptr_stack_n_push(&EG(argument_stack), 2, (void *) EX(opline)->extended_value, NULL); @@ -2635,7 +2634,6 @@ int zend_do_fcall_common_helper(ZEND_OPCODE_HANDLER_ARGS) EG(function_state_ptr) = &EX(function_state); zend_ptr_stack_clear_multiple(TSRMLS_C); -fcall_exception: if (EG(exception)) { if (return_value_used && EX_T(EX(opline)->result.u.var).var.ptr) { zval_ptr_dtor(&EX_T(EX(opline)->result.u.var).var.ptr); diff --git a/Zend/zend_reflection_api.c b/Zend/zend_reflection_api.c index de0ee0e0f7..4df1f9d438 100644 --- a/Zend/zend_reflection_api.c +++ b/Zend/zend_reflection_api.c @@ -973,7 +973,7 @@ ZEND_METHOD(reflection_method, invoke) if (!(mptr->common.fn_flags & ZEND_ACC_PUBLIC) || (mptr->common.fn_flags & ZEND_ACC_ABSTRACT)) { if (mptr->common.fn_flags & ZEND_ACC_ABSTRACT) { - zend_throw_exception_ex(zend_exception_get_abstract(), 0 TSRMLS_CC, + zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC, "Trying to invoke abstract method %s::%s", mptr->common.scope->name, mptr->common.function_name); } else { diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c index de0ee0e0f7..4df1f9d438 100644 --- a/ext/reflection/php_reflection.c +++ b/ext/reflection/php_reflection.c @@ -973,7 +973,7 @@ ZEND_METHOD(reflection_method, invoke) if (!(mptr->common.fn_flags & ZEND_ACC_PUBLIC) || (mptr->common.fn_flags & ZEND_ACC_ABSTRACT)) { if (mptr->common.fn_flags & ZEND_ACC_ABSTRACT) { - zend_throw_exception_ex(zend_exception_get_abstract(), 0 TSRMLS_CC, + zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC, "Trying to invoke abstract method %s::%s", mptr->common.scope->name, mptr->common.function_name); } else { |