0

私の大学時代、私はこのようなエラーを処理するphpコードを覚えています..

$rs = $mymodel->find("usr=:usr",array("usr"=>"mahan")) on error echo $mymodel->geterror();

しかし、私は上記のコードが間違っていることを知っています...

もう思い出せないエラー処理コードです..

多分あなたはこのようなことを提案するでしょう

/**First code suggestion**/
    if(!mymodel->find("usr=:usr",array("usr"=>"mahan"))){
        $rs = mymodel->find("usr=:usr",array(":usr"=>"mahan"));
    }

またはこのように

/**Second code suggestion**/
    try{
       $rs = mymodel->find("usr=:usr",array("usr"=>"mahan"));
    }
    catch(Exception $e){
      dump($e);
    }

私の問題は、エラーがあるかどうかをテストするためだけに同じ操作を繰り返したくないということです(最初のコードの提案に示されています)。

そして、2 番目のコードの提案は機能しません。

私が質問の一番上に示したエラー処理は間違っていますが、それは私の問題を解決すると思います(正しいものを覚えていません)...そうでない場合は、あなたの提案を教えてください。

Yii フレームワークを使用しています

4

2 に答える 2

1

あなたはおそらく悪名高いmysql_query( $query ) or die( mysql_error( ) );構成について考えているでしょう。PHPには、「エラー時のdoSomething」構造がありませんでした。そうは言っても、上記の構造は引き続き使用できます。

<?php

function foo( ) {
    return false;
}

function error( $string ) {
    echo $string;
}

$rs = foo( ) or error( 'Alas' );

foo( )を返す場合、それはが呼び出されるfalseことを意味します。trueと評価できるもの(true、int> 1、空でない文字列、リソース、結果セットなど)を返すerror( 'Alas' );場合、は呼び出されません。foo( )error( 'Alas' )

個人的には、しかし、私は次の構成がより好きです:

<?php

function foo( ) {
    return false;
}

function error( $string ) {
    echo $string;
}

$rs = foo( );

if( $rs === false ) { 
    error( 'Alas' );
}

ユーザーが見つからない場合、これは「例外的な」状況ではなく、ユーザーが見つからないというだけです。例外は非常に便利ですが、それ以上リクエストを処理できない状況では、バブリング品質のために例外を使用する傾向があります。

于 2012-04-06T09:50:32.360 に答える