gpt4 book ai didi

php - PHP 中的惰性函数定义 - 这可能吗?

转载 作者:可可西里 更新时间:2023-11-01 13:33:51 26 4
gpt4 key购买 nike

在 JavaScript 中,您可以使用 Lazy Function Definitions通过仅在第一次调用函数时执行昂贵的一次性操作来优化对函数的第 2 - N 次调用。

我想在 PHP 5 中做同样的事情,但不允许重新定义函数,也不允许重载函数。

实际上我想做的就像下面这样,只是进行了优化,所以第 2-N 次调用(比如 25-100)不需要重新检查它们是否是第一次调用。

$called = false;
function foo($param_1){
global $called;
if($called == false){
doExpensiveStuff($param_1);
$called = true;
}
echo '<b>'.$param_1.'</b>';
}

PS 我考虑过使用 include_once() 或 require_once() 作为函数的第一行来仅执行一次外部代码,但我听说这些也很昂贵。

有什么想法吗?还是有更好的方法来解决这个问题?

最佳答案

使用本地静态变量:

function foo() {
static $called = false;
if ($called == false) {
$called = true;
expensive_stuff();
}
}

避免为此使用全局变量。它扰乱了全局 namespace 并使函数的封装性降低。如果除了函数内部之外的其他地方需要知道它是否被调用,那么将这个函数放在像 Alan Storm 指出的类中是值得的。

关于php - PHP 中的惰性函数定义 - 这可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/118698/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com