summaryrefslogtreecommitdiff
path: root/Zend/zend_execute.c
diff options
context:
space:
mode:
authorAndi Gutmans <andi@php.net>2002-11-20 18:00:23 +0000
committerAndi Gutmans <andi@php.net>2002-11-20 18:00:23 +0000
commit227f7838d6555b13a322829d786d8b38ac299e86 (patch)
treee24506a95c0bb02643ebca34cd5ce8a01cf6a07d /Zend/zend_execute.c
parenta257d758a5b71a0513b63360e64c38220aeab4c3 (diff)
downloadphp-git-227f7838d6555b13a322829d786d8b38ac299e86.tar.gz
- Fix build (thanks Marcus)
- Implement abstract methods, syntax: - abstract function foo($vars); - I don't see any reason why modifiers such as static/public need to be - used with abstract. PHP is weakly typed and there would be no meaning to - this anyway. People who want a strictly typed compiled language are - looking in the wrong place.
Diffstat (limited to 'Zend/zend_execute.c')
-rw-r--r--Zend/zend_execute.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c
index a50ce095a2..9b9ffd0d98 100644
--- a/Zend/zend_execute.c
+++ b/Zend/zend_execute.c
@@ -3567,21 +3567,28 @@ int zend_exit_handler(ZEND_OPCODE_HANDLER_ARGS)
int zend_begin_silence_handler(ZEND_OPCODE_HANDLER_ARGS)
{
- EX(Ts)[EX(opline)->result.u.var].tmp_var.value.lval = EG(error_reporting);
- EX(Ts)[EX(opline)->result.u.var].tmp_var.type = IS_LONG; /* shouldn't be necessary */
+ EX_T(EX(opline)->result.u.var).tmp_var.value.lval = EG(error_reporting);
+ EX_T(EX(opline)->result.u.var).tmp_var.type = IS_LONG; /* shouldn't be necessary */
zend_alter_ini_entry("error_reporting", sizeof("error_reporting"), "0", 1, ZEND_INI_USER, ZEND_INI_STAGE_RUNTIME);
NEXT_OPCODE();
}
+int zend_raise_abstract_error_handler(ZEND_OPCODE_HANDLER_ARGS)
+{
+ zend_error(E_ERROR, "Cannot call abstract method");
+ NEXT_OPCODE(); /* Never reached */
+}
+
int zend_end_silence_handler(ZEND_OPCODE_HANDLER_ARGS)
{
zval restored_error_reporting;
restored_error_reporting.type = IS_LONG;
- restored_error_reporting.value.lval = EX(Ts)[EX(opline)->op1.u.var].tmp_var.value.lval;
+ restored_error_reporting.value.lval = EX_T(EX(opline)->op1.u.var).tmp_var.value.lval;
convert_to_string(&restored_error_reporting);
zend_alter_ini_entry("error_reporting", sizeof("error_reporting"), Z_STRVAL(restored_error_reporting), Z_STRLEN(restored_error_reporting), ZEND_INI_USER, ZEND_INI_STAGE_RUNTIME);
zendi_zval_dtor(restored_error_reporting);
+ NEXT_OPCODE();
}
int zend_qm_assign_handler(ZEND_OPCODE_HANDLER_ARGS)
@@ -3839,4 +3846,6 @@ void zend_init_opcodes_handlers()
zend_opcode_handlers[ZEND_DECLARE_CLASS] = zend_declare_class_handler;
zend_opcode_handlers[ZEND_DECLARE_INHERITED_CLASS] = zend_declare_inherited_class_handler;
zend_opcode_handlers[ZEND_DECLARE_FUNCTION] = zend_declare_function_handler;
+
+ zend_opcode_handlers[ZEND_RAISE_ABSTRACT_ERROR] = zend_raise_abstract_error_handler;
}