在创建简单函数时,有时将一小部分逻辑封装在子函数中是合适的.我的问题是:
假设我们再也不会使用calc函数了,在运行这种类型的过程时,PHP解析器中哪一个最容易?
1.嵌套函数:(PHP必须每次重新定义calc 🙂
function doSomething($a, $b, $c) {
$calc = function($val) { /* do some calculation */ };
if($a>$c) return $calc($c);
else if($a<$b) return $calc($b);
else return $calc($c);
}
2.第二个功能:(PHP必须在全局内存中保持计算:)
function doSomething($a, $b, $c) {
if($a>$c) return calc($c);
else if($a<$b) return calc($b);
else return calc($c);
}
function calc($val) { /* do some calculation */ }
3.一类:(更多代码,仍然在全局内存中)
class something {
static public function doSomething($a, $b, $c) {
if($a>$c) return self::calc($c);
else if($a<$b) return self::calc($b);
else return self::calc($c);
}
static private function calc($val) { /* do some calculation */ }
}
最佳答案 检查这个答案:
anonymous function performance in PHP
正如它所说,它通常没有太大的区别.如果您想确定:很大程度上取决于您的特定PHP和服务器版本,因此您必须对其进行基准测试.
话虽如此,版本2比版本1更具可读性,但版本3 – 具有私有函数的类将是最易读的解决方案,因为您的代码清楚地告诉其他程序员其他地方没有使用calc().
一类{
静态公共函数doSomething($a,$b,$c){
if($a> $c)返回self :: calc($c);
else if($a< $b)返回self :: calc($b);
else return self :: calc($c);
}
static private function calc($val){/ *做一些计算* /}
}