ホーム>source

基本的に、以下を最適化できる方法を探しています。 PHPプログラマーではありません。Rubyの世界ではこれは簡単ですが、現時点では次のようになっています。

if(count($methods) == 1) {
    $resp = $this->$methods[0];
}
else if(count($methods) > 1) {
    $resp = $this->$methods[0]->$methods[1];
}

ここでメソッド配列をループし、それらを連鎖させる方法はありますか?

ありがとう!

あなたの答え
  • 解決した方法 # 1

    あなたが望むのは基本的に配列の削減です:

    $resp = array_reduce($methods, function ($o, $p) { return $o->$p; }, $this);
    
    

    $o->$p が必要かどうかは不明です  (プロパティアクセス)または $o->$p()  (メソッド呼び出し)、しかしあなたはそれを理解することができます。

  • 前へ java - JPAクエリ:サブクエリをグループ化条件に結合する
  • 次へ Clojureのget-inのようなpython関数はありますか?