diff options
| author | Andi Gutmans <andi@php.net> | 2002-11-20 18:00:23 +0000 |
|---|---|---|
| committer | Andi Gutmans <andi@php.net> | 2002-11-20 18:00:23 +0000 |
| commit | 227f7838d6555b13a322829d786d8b38ac299e86 (patch) | |
| tree | e24506a95c0bb02643ebca34cd5ce8a01cf6a07d /Zend/zend_execute.c | |
| parent | a257d758a5b71a0513b63360e64c38220aeab4c3 (diff) | |
| download | php-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.c | 15 |
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; } |
