1.什么是模块全局变量
模块全局变量存在于模块初始化(PHP_MINIT_FUNCTION(extname))到模块注销(PHP_MSHUTDOWN_FUNCTION(extname))期间。在不同的环境下,在这期间存在一个或多个请求,共享模块全局变量。
2.模块变量类型的定义
在引入php相关头文件后,定义:
PHP_BEGIN_MODULE_GLOBALS(extname)
std::string name;
std::string version;
PHP_END_MODULE_GLOBALS(extname)
PHP_BEGIN_MODULE_GLOBALS 宏的定义为:
#define ZEND_BEGIN_MODULE_GLOBALS(module_name) \
typedef struct _zend_##module_name##_globals {
PHP_END_MODULE_GLOBALS 宏的定义为:
#define ZEND_END_MODULE_GLOBALS(module_name) \
} zend_##module_name##_globals;
所以上面的模块变量定义展开来就是:
typedef struct _zend_extname_globals {
std::string name;
std::string