2017-12-18 4 views
0

API呼び出しが呼び出されたときに、アプリケーションコードと応答メッセージを上位に返す一般的なシステムを作成するにはどうすればよいですか?複合関数応答を返す

たとえば、私はUserクラスをuser.phpに持っています。

  • ユーザーはすでになど
  • 無効なパラメータ
  • が存在する:私のアプリケーションの最高レベルから、私たちは約10物事は、そのプロセス中に間違って行くことができ

    $user = new User(); 
    $user->register($params); 
    

    を呼び出すことができるのは、app.phpを言わせて。

私はちょうど0か1を返すことを望んでいない、私はまた、呼び出し元に知ってほしい帽子が間違っていたここではいくつかのアイデアは、すなわち['result'=>0, 'reason'=>'not unique']

私は真剣に嫌い

  1. 例外..
  2. 配列を返す応答、あるこれを行うための標準的な方法は何ですか?

+0

私はカスタム例外、definitellyに行くだろう – jeprubio

+1

複雑な成功の応答のためのオブジェクトのエラー状態の例外。 – Sammitch

+0

異なる手順で実行します。ユーザーオブジェクトを作成する前に、データの検証を行います(重複のチェックなどを含む)。このために使用して拡張できる多くの検証ライブラリがあります。 –

答えて

2

あなたは標準のこのようなことを扱う方法について尋ねました。一般的に、これらの種類のエラーを処理する最良の方法は、例外を使用することです。例外を使用することで、新しい種類の障害状態を追加するときに、インタフェース(メソッドと呼び出し元)の各側での作業を減らすことができます。あなたは、維持しやすく、より弾力性のあるコードを手に入れることができます。また、パフォーマンスが向上します。例外はパフォーマンスコストがありますが、パフォーマンスコストは発生時にのみ発生します。

配列やオブジェクトを返す方法もOKです。しかし、新しい条件を追加するときは、インターフェースの両面を調整する必要があります。

ここでは、phpマニュアルの書き方があります。 http://php.net/manual/en/functions.returning-values.php

+0

ここでは例外は使用しません。例外は、何もできない予期せぬ事態に使用されるべきです。ハードウェアやネットワークの問題のように。この場合、「ユーザーは既に存在する」または「無効なパラメータ」は完全に予測可能な問題であり、適切に処理する必要があります。 –

+0

@FrédéricClaussetそして、関数から、ステータスとステータスメッセージの両方の応答をどのように返すのですか? –

+0

@J Doe私はステータスのみを返し、メッセージをAPIのドキュメントに入れます。別のコンピュータにメッセージを使用するとどうなりますか?しかし私達は怒ります:-) –

関連する問題