创建简单函数时,有时将一小部分逻辑封装在子函数中是合适的。我的问题是:
假设我们永远不会再次使用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必须将calc
保留在全局内存中:)
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 */ }
}
答案 0 :(得分:2)
检查此答案:anonymous function performance in PHP
正如它所说,它通常没有太大的区别。如果您想确定:很大程度上取决于您的特定PHP和服务器版本,因此您必须对其进行基准测试。
话虽如此,版本2比版本1更具可读性,但版本3 - 具有私有功能的类将是最易读的解决方案,因为您的代码清楚地告诉其他程序员calc()
未在其他地方使用。 / p>
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 */ }
}