1

カスタム関数のエラー処理を使用していますが、3つのユーザーエラータイプ(NOTICE、WARNING、およびERROR)がすべてtrueを返すことに注意してください。

関数が誤って処理された場合(たとえば、無効なデータが挿入された場合) 、 trigger_error関数を使用して関数をエスケープしました。関数をエスケープする最良の方法は、次を使用することだと思いました。

return trigger_error('Error notice here');

問題は、エラーがtrueを返すことです。成功するとすべての関数がtrueに戻るわけではありませんが、将来的にはこれを使用できるように思えます(したがって、falseはエラーを表します)。

この関数がtrueを返す理由はありますか、それとも無効な関数を終了する際の悪い習慣に従っていますか?

私はこれに対する解決策が次のようになることを知っています:

trigger_error('Error notice here');
return false;

しかし、もっとエレガントな方法があると思いました。うまくいけば、そうでない場合でも、ベストプラクティスへの洞察があります。

4

2 に答える 2

5

TRUEエラーをトリガーする操作が成功したために戻ります。FALSE2番目の引数に無効なエラータイプを指定した場合です。

1行でエラー(ちなみに、私が見た方法では意味がありません)を返し、トリガーしたい場合は、次TRUEのようにすることができます。

return !trigger_error('Error notice here');

ちなみに、E_USER_ERRORIをトリガーすると、戻り値を評価するコードに到達することはないと思います。これは、エラーハンドラーを登録してキャッチしない限り、エラーが致命的となるためです。

コードで処理できるエラーメッセージを表示して関数を終了する場合は、例外を使用する必要があります。これらが手続き型関数のコンテキストで意味をなすかどうかは非常に議論の余地がありますが。

于 2012-09-11T12:58:32.387 に答える
1

あなたはよりエレガントな解決策について尋ねましtrigger_error()た。

エラーをトリガーするのではなく、例外をスローする方がより洗練された方法である可能性があります。

于 2012-09-11T13:42:11.600 に答える