挂钩系统 PHP

时间:2021-04-16 19:37:15

标签: php

我需要一些 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 函数不起作用。

1 个答案:

答案 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);