起步
Zend引擎提供了另种管理设置值(INI)的途径。现在弄个简单的,我们经常看到php.ini里有诸如display_errors = On这样的全局设置。假设我们需要为我们拓展定义一个值:hello.greeting并用函数hello_ini()返回它的内容。
在php.ini:
[hello]
hello.greeting=1
为了避免命名空间的冲突,我们拓展的名字作为所有值的前缀。仅仅是一种约定,一个句点用来分隔拓展名和说明性的初始设定名字。
声明变量 php_hello.h
用ext_skel工具初始化的拓展有个好处就是它能帮我们在特定的位置写上注释。
这是说如果我们需要声明全局变量,需要将放置在宏BEBIN与END之间。并提供了示例,因此在这边添加:
ZEND_BEGIN_MODULE_GLOBALS(hello)
zend_long greetingZEND_END_MODULE_GLOBALS(hello)
ZEND_BEGIN_MODULE_GLOBALS()和ZEND_END_MODULE_GLOBALS()用来创建一个名为zend_hello_globals的结构,它包含一个long型的变量。然后有条件地将HELLO_G()定义为从线程池中取得数值,或者从全局作用域中得到-如果你编译的目标是非多线程环境。
工具还为我生成了:
#define HELLO_G(v) ZEND_MODULE_GLOBALS_ACCESSOR(hello, v)#if defined(ZTS)
|