定义简短的私有PHP嵌套函数(子函数) - 最佳性能?最佳实践?

时间:2016-09-27 16:12:00

标签: php performance optimization

创建简单函数时,有时将一小部分逻辑封装在子函数中是合适的。我的问题是:

假设我们永远不会再次使用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 */ }
}

1 个答案:

答案 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 */ } }