如何只调用一次函数(全局变量作用域)

时间:2012-03-15 作者:Ben Pearson

我一直在努力找出在WordPress中使用函数最有效的方法。

我有一个大的slow函数big\\u slow\\u function(),理想情况下只运行一次。但是我需要在整个主题文件中使用此函数返回的布尔值(在header.php、page.php、sidebar.php、footer.php、loop-page.php、functions.php等中)。

我想知道怎么做。

我试着把这个放在我的函数中。php尝试并避免多次调用big\\u slow\\u function():

global $my_important_boolean;

function $get_my_important_boolean()
{
    global $my_important_boolean;

    if ($my_important_boolean == NULL) // if big_slow_function() has not been run yet
        $my_important_boolean = big_slow_function();

    return $my_important_boolean;
}
然后我在我的主题文件中放了这样的代码:

if ($get_my_important_boolean()) {
    // customize content to user
}
但是big\\u slow\\u函数()仍在每次运行。我不确定我做错了什么,并且发现很难在WordPress中找到关于变量范围的好文档。也许我需要向变量传递一个引用/指针?

非常感谢您对这个问题的任何帮助,因为我已经为此奋斗了一段时间。

1 个回复
最合适的回答,由SO网友:Geert 整理而成
function my_big_function() {

    static $result;

    // Function has already run
    if ( $result !== null )
        return $result;

    // Lot of work here to determine $result
    $result = \'whatever\';

    return $result;
}

Also see: https://stackoverflow.com/questions/6188994/static-keyword-inside-function

结束