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

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

假设我们再也不会使用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){/ *做一些计算* /}
}

点赞