-
-
Notifications
You must be signed in to change notification settings - Fork 466
/
exception.zep.c
61 lines (43 loc) · 1.34 KB
/
exception.zep.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#ifdef HAVE_CONFIG_H
#include "../ext_config.h"
#endif
#include <php.h>
#include "../php_ext.h"
#include "../ext.h"
#include <Zend/zend_operators.h>
#include <Zend/zend_exceptions.h>
#include <Zend/zend_interfaces.h>
#include "kernel/main.h"
#include "kernel/object.h"
#include "ext/spl/spl_exceptions.h"
#include "kernel/exception.h"
#include "kernel/operators.h"
#include "kernel/memory.h"
/**
* Sample exception class
*/
ZEPHIR_INIT_CLASS(Test_Exception) {
ZEPHIR_REGISTER_CLASS_EX(Test, Exception, test, exception, zend_exception_get_default(TSRMLS_C), test_exception_method_entry, 0);
return SUCCESS;
}
/**
* @link https://github.com/phalcon/zephir/issues/915
*/
PHP_METHOD(Test_Exception, testRuntimePropertyFetch) {
zval *message_param = NULL;
zval *message = NULL;
ZEPHIR_MM_GROW();
zephir_fetch_params(1, 1, 0, &message_param);
if (unlikely(Z_TYPE_P(message_param) != IS_STRING && Z_TYPE_P(message_param) != IS_NULL)) {
zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'message' must be a string") TSRMLS_CC);
RETURN_MM_NULL();
}
if (likely(Z_TYPE_P(message_param) == IS_STRING)) {
zephir_get_strval(message, message_param);
} else {
ZEPHIR_INIT_VAR(message);
ZVAL_EMPTY_STRING(message);
}
zephir_update_property_this(this_ptr, SL("message"), message TSRMLS_CC);
ZEPHIR_MM_RESTORE();
}