php ini begin,PHP_INI_BEGIN, STD_PHP_INI_ENTRY

#include "main/php.h"

#define PHP_METHOD ZEND_METHOD

#include "Zend/zend_API.h"

#define ZEND_METHOD(classname, name)ZEND_NAMED_FUNCTION(ZEND_MN(classname##_##name))

#define ZEND_NAMED_FUNCTION(name)void name(INTERNAL_FUNCTION_PARAMETERS)

#include "Zend/zend.h"

#define INTERNAL_FUNCTION_PARAMETERS int ht, zval *return_value, zval **return_value_ptr, zval *this_ptr, int return_value_used TSRMLS_DC

//PHP_METHOD宏,声明方法,第一个参数指定类名,第二个参数指定方法名

PHP_METHOD(Person, __construct);

STD_PHP_INI_ENTRY

#define STD_PHP_INI_ENTRYSTD_ZEND_INI_ENTRY

//Zend/zend_ini.h

#define STD_ZEND_INI_ENTRY(name, default_value, modifiable, on_modify, property_name, struct_type, struct_ptr) \

ZEND_INI_ENTRY2(name, default_value, modifiable, on_modify, (void *) XtOffsetOf(struct_type, property_name), (void *) &struct_ptr##_id)

#define ZEND_INI_ENTRY2(name, default_value, modifiable, on_modify, arg1, arg2) \

ZEND_INI_ENTRY2_EX(name, default_value, modifiable, on_modify, arg1, arg2, NULL)

#define ZEND_INI_ENTRY2_EX(name, default_value, modifiable, on_modify, arg1, arg2, displayer) \

ZEND_INI_ENTRY3_EX(name, default_value, modifiable, on_modify, arg1, arg2, NULL, displayer)

#define ZEND_INI_ENTRY3_EX(name, default_value, modifiable, on_modify, arg1, arg2, arg3, displayer) \

{ 0, modifiable, name, sizeof(name), on_modify, arg1, arg2, arg3, default_value, sizeof(default_value)-1, NULL, 0, 0, 0, displayer },

#define PHP_INI_BEGINZEND_INI_BEGIN

#define PHP_INI_ENDZEND_INI_END

#define ZEND_INI_BEGIN()static const zend_ini_entry ini_entries[] = {

#define ZEND_INI_END(){ 0, 0, NULL, 0, NULL, NULL, NULL, NULL, NULL, 0, NULL, 0, 0, 0, NULL } };

//使用案例

PHP_INI_BEGIN()

STD_PHP_INI_ENTRY("yar.packager", "msgpack", PHP_INI_PERDIR, OnUpdateString, default_packager, zend_yar_globals, yar_globals)

PHP_INI_END()

//对应的实际代码是

static const zend_ini_entry ini_entries[] = {

{0, PHP_INI_PERDIR, "yar.packager", sizeof("yar.packager"), OnUpdateString, (void *)XtOffsetOf(zenf_yar_globals, default_packager), (void *)&yar_globals##_id, NULL, "msgpack", sizeof("msgpack")-1, NULL, 0, 0, 0, NULL},

{ 0, 0, NULL, 0, NULL, NULL, NULL, NULL, NULL, 0, NULL, 0, 0, 0, NULL } };

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值