scu*_*ffe 5 php optimization design-patterns
在JavaScript中,只需在第一次调用函数时执行昂贵的一次性操作,就可以使用" 延迟函数定义"来优化对函数的第2次调用.
我想在PHP 5中做同样的事情,但不允许重新定义函数,也不会重载函数.
实际上我想做的就像下面这样,只是优化了所以第二次 - 第N次呼叫(比如25-100)不需要重新检查它们是否是第一次呼叫.
$called = false;
function foo($param_1){
global $called;
if($called == false){
doExpensiveStuff($param_1);
$called = true;
}
echo '<b>'.$param_1.'</b>';
}
Run Code Online (Sandbox Code Playgroud)
PS我曾经考虑使用include_once()或require_once()作为函数的第一行来执行外部代码一次,但我听说这些也很昂贵.
有任何想法吗?还是有更好的方法来解决这个问题?
dir*_*ide 13
使用本地静态var:
function foo() {
static $called = false;
if ($called == false) {
$called = true;
expensive_stuff();
}
}
Run Code Online (Sandbox Code Playgroud)
避免使用全局.它使全局命名空间变得混乱,并使函数封装得更少.如果除了函数内部之外的其他地方需要知道它是否被调用,那么将这个函数放在像Alan Storm所说的类中是值得的.
| 归档时间: |
|
| 查看次数: |
1951 次 |
| 最近记录: |