/* {{{ proto bool define(string constant_name, mixed value, boolean case_insensitive=false) |
Define a new constant */ |
ZEND_FUNCTION(define) |
{ |
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sz|b" , &name, |
&name_len, &val, &non_cs) == FAILURE) { |
return ; |
} |
|
... // 类常量定义 此处不做介绍 |
|
... // 值类型判断和处理 |
|
c.value = *val; |
zval_copy_ctor(&c.value); |
if (val_free) { |
zval_ptr_dtor(&val_free); |
} |
c.flags = case_sensitive; /* non persistent */ |
c.name = zend_strndup(name, name_len); |
c.name_len = name_len+1; |
c.module_number = PHP_USER_CONSTANT; |
if (zend_register_constant(&c TSRMLS_CC) == SUCCESS) { |
RETURN_TRUE; |
} else { |
RETURN_FALSE; |
} |
} |
/* }}} */ |