PHP扩展:如何使用ini变量

在扩展中,有时候需要使用在php.ini中设定的值,在PHP的扩展中 使用ini变量的方式如下:

首先使用:
   PHP_INI_BEGIN()
   PHP_INI_ENTRY("foo_bar.global_value",      "42", PHP_INI_ALL, NULL)
   PHP_INI_ENTRY("foo_bar.global_string", "foobar", PHP_INI_ALL, NULL)
   PHP_INI_END()

PHP_INI_BEGIN(),PHP_INI_ENTRY(),PHP_INI_END()是Zend定义的一些宏,上述4条语句展开后,形成的结果如下:
 
    static  zend_ini_entry ini_entries[]  =   {  //   BEGIN 的定义
    
0, PHP_INI_ALL, "foo_bar.global_value"sizeof("foo_bar.global_value"), NULL, NULL, NULL, null"42"sizeof("42")-1, NULL, 00,   NULL},
    
0, PHP_INI_ALL, "foo_bar.global_string"sizeof("foo_bar.global_string"), NULL, NULL, NULL, null"foobar"sizeof("foobar")-1, NULL, 00,   NULL},
    
00, NULL, 0, NULL, NULL, NULL, NULL, NULL, 0, NULL, 00, NULL } }
;    // END的定义


可见所有的ini变量都被放到了一个 zend_ini_entry类型的数组中,数组名为 ini_entries.

此时只是定义了这么一个变量,为了能够使用它,需要在MINIT的方法内部进行调用,使用
REGISTER_INI_ENTRIES()完成,这个宏的定义如下:
#define  REGISTER_INI_ENTRIES() zend_register_ini_entries(ini_entries, module_number TSRMLS_CC)
其实就是直接调用了 zend_register_ini_entries() 进行了注册,并且强制使用了TSRM的方式。

为了保证干净的使用这些ini变量,在MSHUTDOWN时需要对已经注册的ini变量进行清除,使用UNREGISTER_INI_ENTRIES()宏完成,定义如下:
#define  UNREGISTER_INI_ENTRIES() zend_unregister_ini_entries(module_number TSRMLS_CC)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值