我需要一些 PHP 方面的帮助。
在我网站的functions.php文件中,我创建了两个函数
$hooks = array();
function addHook( $hook, $func) {
global $hooks;
$hooks[$hook][] = $func;
}
和
function addToHead() {
global $hooks;
foreach($hooks as $hook => $functions){
if ( $hook == 'head' ) {
foreach($functions as $function){
call_user_func( $function );
}
}
}
}
我在 head.php 文件中调用 addToHead() 函数。
然后我在需要的地方调用函数 addHook()。
因为 addHook() 函数是在 addToHead() 函数之后调用的,所以 addToHead 函数不起作用。
答案 0 :(得分:1)
您需要在函数调用之前将钩子设为全局。
global $hooks;
$hooks = array();
function addHook($hook, $func) {
global $hooks;
$hooks[$hook][] = $func;
}
print_r($hooks);
或者您可以扩展您的函数以使用 use
并按引用传递。
$hooks = array();
function addHook($hook, $func) use (&$hooks) {
$hooks[$hook][] = $func;
}
print_r($hooks);