2017-04-25 9 views
0

私は基本的にこの関連2つのクエリがあります。PHP関数から返された値を表示する方法はありますか?

は、クラスに次のPHPの関数を考えるには、ケース1では

function sendResponse(){ 
    $car="Lambo"; 
    echo $car; 
} 
function sendResponseTwo(){ 
    $car="Lambo"; 
    echo $car; 
    return $car; 
} 
function getResponse(){ 
    //case 1: 
    $carName=$this->sendResponse(); 
    //ABOVE WON'T WORK AS THE FUNCTION RETURNS NOTHING. 

    //case 2: 
    $carName=$this->sendResponseTwo(); 
    //THIS WILL PRINT THE NAME OF CAR 
} 
  1. xyz.php、によってエコー値を取得する方法があると言います別の関数で関数を呼び出していますが、を使用せずにを呼び出していますか?

  2. ケース2の場合、echoステートメント(私は戻り値のみが必要です)によって出力される値を停止する方法はありますか?

    ob_start(); 
    $foo->sendResponse(); 
    $response = ob_get_clean(); 
    

    それが最初の場所で実用的なデザインではない理由です:

+1

出力バッファリングを理解するのに役立ちます。 – CBroe

+0

それはなんですか?すべてのリンク? –

+1

これらを試してみてください。http://php.net/manual/en/function.ob-start.php http://php.net/manual/en/function.ob-get-contents.php –

答えて

1

あなたの両方の質問に答えは、output buffer(ob)にあります、これはあなたが理解に役立つことを願っています。ここでは3つの関数を使用していますob_start()は出力バッファを開始し、ob_end_clean()はバッファの出力をクリーンアップし、​​は今までエコーされた文字列として出力します。 Thisは、あなたがより良い​​

Try this code snippet here

<?php 

class x 
{ 
    function sendResponse() 
    { 
     $car = "Lambo1"; 
     echo $car; 
    } 

    function sendResponseTwo() 
    { 
     $car = "Lambo2"; 
     echo $car; 
     return $car; 
    } 

    function getResponse() 
    { 
     //case 1: 
     $carName = $this->sendResponse(); 
     //ABOVE WON'T WORK AS THE FUNCTION RETURNS NOTHING. 
     //case 2: 
     $carName = $this->sendResponseTwo(); 
     //THIS WILL PRINT THE NAME OF CAR 
    } 

} 
ob_start();//this will start output buffer 
$obj= new x(); 
$obj->getResponse(); 
$string=ob_get_contents();//this will gather complete content of ob and store that in $string 
ob_end_clean();//this will clean the output buffer 
echo $string; 
?> 
1

あなたは、出力バッファリングを使用する必要があります。

$response = $foo->sendResponse(); 
echo $foo->sendResponse(); 
<?=$foo->sendResponse()?> 

(この最後のオプションは、説明のために共有され、炎を開くために意図されていない:あなたは関数は常に値を返すようなら、それはあなたの好みに合わせて、両方のことを行うために些細です短い公開タグについての戦争)