PHP 使用从包含的文件调用更新全局变量 - 范围问题



>我正在尝试使用 PHP 实现一个简单的add_hook函数,但在更新我必须存储可用/设置钩子的全局数组时遇到了一些麻烦。如果我使用add_hookfrommain.php它工作正常,我可以根据需要添加任意数量的钩子,但如果从包含的文件执行相同的操作,则$hooksvar 仅从函数内部更新。

主.php

require dirname(__FILE__) . '/includes/functions.php'; 
$hooks = array();
function add_hook($hook_name, $function)
{   
global $hooks;
$hooks[$hook_name] = $function;
}
add_hook("hook_name", "some_function");

function execute_hook($hook_name)
{
global $hooks;
foreach ($hooks[$hook_name] as $function) {
if (function_exists($function[0])) {
call_user_func($function[0]);
}
}
}
function execute_hooks($hook_name)
{
global $hooks;
print_r($hooks);
if (array_key_exists($hook_name, $hooks)) {
execute_hook($hook_name);
}
}
print_r($hooks); 
// Array ( [hook_name] => some_function )
// missing the array added from functions.php

函数.php

add_hook("build_admin_menu", "hd_modify_menu");

如果我在add_hook函数的末尾print_r,它将打印添加的钩子,但我认为问题是"全局"$hooks似乎没有随着functions.phpadd_hook调用而更新。

谁能向我解释为什么会发生这种情况以及我可以做些什么来解决?非常感谢!

请检查您的代码

require dirname(__FILE__) . '/includes/functions.php'; 
// $hooks = array();

$hook数组在包含函数后重新分配.php . 您需要注释/删除它。 如上图。

希望这对你有帮助

相关内容

  • 没有找到相关文章

最新更新