2017-04-05 2 views
1

背景:大コントローラ内部falseを返すべきでない関数をチェックするにはどうすればよいですか?

私は、と呼ばれて多くの異なる機能を持つユーザーを作成するには、その順序を更新するために、イベントにスケジュールします。これらの各操作は、モデル層に機能によって処理されている...ここで、これらの機能の一つの例です。

$user_id = 1; 
$data = array('name' => 'Billy'); 

if (updateUser($user_id, $data) === false) { 
    // handle error? 
} 

// continue with rest of controller 

問題:

私は最終的に今日真偽の確認を取り、実現しますこのようなコーディングの理由はありません。

updateUser()がfalseを返した場合、私のデータベースのデータを更新できないデータベース抽象化レイヤーで深刻な問題が発生しました。これは決して起こるべきではないので、とにかくユーザーにとって(適切な行動をとることができる)実際的なエラーはありません。

基本的に私のアプリは根本的に壊れています。

質問:

私ははfalseを返すべきではありません機能をチェックするためにわざわざする必要がありますか?もしそうなら、どのように?または、私はちょうど何もチェックなしでこれらのように呼び出す必要がありますか?

updateUser($foo) 
createBooking($bar) 
scheduleEvent($qux) 
+2

_「これは決して起こらないはずです」_確かに、それでもなお起こる可能性があります(dbサーバーがダウンし、接続が一時的に接続されているなどの理由で)。そのようなことが起こった場合、何か問題が生じたことをユーザーに示して、再度試してもらいたいのですか?コード/サーバー/システムにバグや問題がないとは決して考えないでください。以下のjeroenの答えはそれを扱う正しい方法です。 –

+0

それは理にかなっています!おそらくエラーログパッケージを調べるべきです。 –

+2

...と例外(正常なフローからの例外を言うだけです)で動作します。 –

答えて

5

何も起こらない関数内で何かが発生した場合は、exceptionをスローします。

そして、それを実行したいすべての例外を処理(catch)できます。たとえば、ユーザーにフレンドリーなメッセージを表示し、すべての詳細をログに記録して、何が問題になったのか、どこに問題があるかを知ることができます。

ifステートメントを削除し、有効/通常オプションがある場合にのみこれらのステートメントを使用することができます。

関連する問題