Я пытаюсь реализовать простую функцию add_hook
с использованием PHP, но сталкиваюсь с некоторыми проблемами при обновлении глобального массива, в котором я должен хранить доступные / установленные хуки. Если я использую add_hook
из main.php
, он работает нормально, и я могу добавить столько ловушек, сколько необходимо, но если делать то же самое из включенного файла, $hooks
var обновляется только из функции.
main.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
functions.php
add_hook("build_admin_menu", "hd_modify_menu");
Если I print_r
в конце функции add_hook
, она напечатает добавленный хук, но я думаю, что проблема в том, что "global" $hooks
не обновляется при вызове add_hook
от functions.php
.
Может кто-нибудь объяснить мне, почему это происходит и что я могу сделать, чтобы исправить? Очень ценится!