WordPress do_action() 和 do_action_ref_array() 区别

追格官方小助手/ 2023年01月29日/ WordPress/ 浏览 2454

WordPress do_action() 和 do_action_ref_array() 区别,其实就是 PHP 中 call_user_func 函数 和 call_user_func_array 函数的区别。


它们的第一个参数都是回调函数,do_action() 还可以有多个参数,它们都是回调函数的参数,do_action_ref_array() 只有两个参数,第二个参数是要被传入回调函数的数组。


如果传递一个数组给 do_action_ref_array(),数组的每个元素的值都会当做一个参数传递给回调函数,数组的 key 回调掉。


如果传递一个数组给 do_action(),整个数组会当做一个参数传递给回调函数,数字的 key 还会保留住。


比如有个如下的回调函数:


function test_callback()
{
    $args = func_get_args();
    $num = func_num_args();

    echo $num . "个参数:";
    echo "";

    print_r($args);
    echo "";
}


然后我们分别使用 do_action() 函数 和 do_action_ref_array() 函数进行回调:


$args = array('foo' => 'bar', 'hello' => 'world', 0 => 123);

do_action('test_callback', $args);

do_action_ref_array('test_callback', $args);


最后输出结果:


1 个参数:


Array ( [0] => Array ( [foo] => bar, [hello] => world, [0] => 123 ) )


3个参数:


Array ( [0] => bar, [1] => world, [2] => 123 )


发表评论

暂无评论,抢个沙发...

客服 工单