全局扩展
在Zephir中,扩展全局变量仅限于简单的标量类型,如 int/bool/double/char 等。 此处不允许使用复杂类型,例如字符串/数组/对象/资源。
您可以通过将以下结构添加到 config.json 来启用扩展全局变量:
"type": "<some-valid-type>",
"default": <some-compatible-default-value>
}
复合(命名空间)全局变量具有以下结构:
可选的 module 键(如果存在)将全局的初始化过程放入模块范围的 GINIT
生命周期事件中,这意味着它只会在每个PHP进程中设置一次, 而不是为每个请求重新初始化,这是默认值:
{
"globals": {
"allow_some_feature": {
"type": "bool",
"default": true,
"module": true
},
"type": "int",
}
}
}
在任何方法中,您可以使用内置函数globals_get
/ globals_set
读/写扩展全局变量:
如果你想从PHP中改变这些全局变量,一个好的选择是包含一个针对这个的方法:
namespace Test;
class MyOptions
{
public static function setOptions(array options)
boolean someOption, anotherOption;
if fetch someOption, options["some_option"] {
globals_set("some_option", someOption);
}
if fetch anotherOption, options["another_option"] {
globals_set("another_option", anotherOption);
}
}
}