2016-06-22 3 views
2

私のクラスにはこの機能があります。デフォルトでは、値をエコーするだけでなく、オプションのパラメータを使用して値を変数に戻す必要があります。return/echo in function(簡略化IF)のための最も簡単な方法

public function test($return = false) { 

    $value = 'demo123'; 

    if ($return) { 
     return $value; // optional 
    } else { 
     echo $value; // default 
    } 

} 

(私はこれで多くの機能を持っているので、私は多くの行を保存することができます)1行で、この短い「場合」にする方法はあります。

私は三元演算子を試しましたが、私はこれをどうにか使うことができるかどうか分かりません。

このリターン/エコー機能を実行するには、最良の、正しい、美容方法はありますか?

+1

ラインは高価ではありません、プログラマの時間は – Steve

+1

'$リターンがある$値を返す:?$ [値] – Thamilan

+4

エコーを使用すると、文の末尾にドットを省略だからこそ、@Steve? ;) – Rizier123

答えて

4

ラインは高価ではないため、コードの行を減らすことは、特に読みやすさを低下させる場合に特に有用な目標ではありません。

ただし、あなたが戻ってくるように、else節を削除することができます。

public function test($return = false) 
{ 
    $value = 'demo123'; 

    if ($return) { 
     return $value; // optional 
    } 
    echo $value; // default 
} 
+0

私は関数からの戻り値の終了を忘れました....ありがとう! – norr

1

これは私があなたのケースで行うと思います。各関数の最後には1行のコードしかありません。

public function test($return = false) 
{ 
    $value = 'demo123'; 

    return returnMe($return, $value); 
} 

private function returnMe($return = false, $value){ 
    if ($return) { 
     return $value; 
    }else{ 
     echo $value; 
     return false; 
    } 
} 
2

コードレプリケーションのためにこれを実行している場合、すべての結果を$ returnを評価する別の関数に渡します。

private function returnOrEcho($value, $return){ 
    if($return) return $value; 
    echo $value; 
} 

public function test($return = false){ 
    $value = 'demo123'; 
    return $this->returnOrEcho($value, $return); 
} 

public function test2($return = false){ 
    $value = 'demo456'; 
    return $this->returnOrEcho($value, $return); 
} 
関連する問題