TMS*_*TMS 12 php scope require-once
似乎如果require_once在函数内调用,则包含的文件不会扩展全局变量范围.如何require_once从函数中将文件转换为全局范围?
我正在尝试做的是一些动态模块加载器:
function projects_init()
{
...
foreach ($projects as $p) {
require_once($p['PHPFile']);
$init_func = $p['init'];
if ($init_func)
$init_func();
}
}
Run Code Online (Sandbox Code Playgroud)
如果无法使用require_once这种方式,最简单的解决方案是什么?(请不要沉重的框架.)
编辑:它也适用于PHP 5.2.
上面的答案是对的,你可以用它global来得到你需要的东西.在包含的文件中只是在文件的开头声明变量global,这样代码将在函数范围内运行,但它会改变全局变量(是的,你必须小心并声明你需要改变的全局变量但它应该工作),例如:
function a() {
require_once("a.php");
}
a();
echo $globalVariable;
Run Code Online (Sandbox Code Playgroud)
并在a.php文件中:
global $globalVariable;
$globalVariable="text";
Run Code Online (Sandbox Code Playgroud)
总结所有信息:
功能不是问题,无论如何它们都是全球性的
对于全局变量,有两个选项:
projects_init()在我的例子中)| 归档时间: |
|
| 查看次数: |
15554 次 |
| 最近记录: |