将函数和参数作为参数传递给中间函数,然后调用命名函数

时间:2017-11-20 20:02:22

标签: php wordpress

我正在尝试为我的WordPress主题构建一个中间函数,用于处理瞬态的所有检查和返回。我想从模板调用瞬态函数,传入临时名称和函数,如果瞬态不存在则调用。此外,如果实际调用该函数,我需要传递参数。

我无法找到任何关于将多个参数传递到一起以便稍后使用的内容。对于多种用途,我可以依赖最终调用函数的默认参数,因此将第三个参数$args设置为false。我查看了使用序列化,但这是一次一个变量,我需要能够一次传递几个参数。

我称之为瞬态函数:

$posts = transitize('transientname', 'functionname', "4, false, array($post->projectsiteid)");

瞬态检查功能:

function transitize($transientname, $functionname, $args=false) {
    if (false === ($transient_exists = get_site_transient($transientname))) {
        $functionresult = ($args) ? $functionname($args) : $functionname();
        set_site_transient($transientname, $functionresult, HOUR_IN_SECONDS);
        return $functionresult;
    }
    else {
        return $transient_exists;
    }
}

如何准备第三个参数,包含3个参数供以后使用,以便后面的函数调用有效?

1 个答案:

答案 0 :(得分:1)

将第三个参数更改为数组:

$posts = transitize('transientname', 'functionname', array(4, false, array($post->projectsiteid)));

更改此行以使用call_user_func_array

$functionresult = ($args) ? call_user_func_array($functionname, $args) : $functionname();