0

失敗した場合にエラー テキストを返すように設計された一連の php 関数があります。彼らはテキストを返していません。私の関数は次のようになります。

function poop(){
    $stuff = stuff;
    $things = things;
    if($stuff != stuff){
        return 'e: stuff does not equal stuff!';
    }
    if($things != things){
        return 'e: things do not equal things!';
    }
    // if we got this far all is good!
    return true;

}

次のようにコードで関数を呼び出します。

if(poop() === true){
    // do things that require poop
} else {
    echo poop();
}

poop() がブール値の真の値を返さなかった場合、これは「e:」文字列を文字列として返し、それをページに出力すると思っていましたが、実際にはそうではありません。これはコードの残りの部分に問題があるためなのか、それともこの機能が実際には PHP に存在しないためなのか? すべての関数チェックからエラーが返されるようにするにはどうすればよいですか? ページに文字列として出力するには、return の代わりに echo を使用する必要がありますか?

4

2 に答える 2

2

関数を複数回呼び出さないでください。その戻り値を変数に保存します。

$ret = poop();
if ($ret === true) {
    // Do things that require the success.
} else {
    // Log your error message here:
    echo "An error occurred: ".$ret;
    logMessage($ret);
    // etc.
}

また、 PHP の例外を調べて、よりクリーンな可能性がある (ただし、おそらくより遅い) エラー処理の解決策を調べることもできます。

于 2012-08-23T03:48:37.953 に答える
0

これを試して:

if( poop() !== TRUE )
    echo poop();

私はこのコードでそれを使用しました:

function poop(){ 
    $stuff = 'stuff'; 
    $things = 'things'; 
    // this is where we have wrong value
    if($stuff != 'stuff1'){ 
        return 'e: stuff does not equal stuff!'; 
    } 
    if($things != 'things'){ 
       return 'e: things do not equal things!'; 
    } 
    // if we got this far all is good! 
    return true; 

}

私はあなたをよく理解してくれることを願っています。私はPHPも初心者です。:) エラー メッセージ文字列を返す代わりに、例外をスローすることもお勧めです。

于 2012-08-23T03:57:42.960 に答える