1

重複の可能性:
PHP で NotImplementedError をスローしますか?

基本クラスを作成するときは、徐々に開発し、必要なもの (またはテストしているもの) だけを作成することがよくあります。それでも、インターフェースのバランスが取れているのが好きです。すべてのゲッターに対してセッター。CRUD を実装するとき、今は R だけが必要な場合でも、CUD 用のスタブを先に書きたいと思います。

これらに実装されていない例外をスローさせたい。このようなエラーや例外を発生させるにはどうすればよいですか?

例えば:

class Resource {
  /**
   * get Issues a GET-request to Online, fetch with $this::$id
   * @returns $this
   */
  protected function get() {
    if ($this->id) {
      $attributes = http_build_query(array("id" => $this->id));
      $url = "{$this->url}?{$attributes}";
      $options = array_merge(array('method' => 'GET'));
      $response = _http_request($url, $options);
      $this->parse($response);
    }
    return $this;
  }

  /**
   * post Place a new object on Online
   *
   * @param $attributes ....
   * @returns Source $this
   */
  protected function post($attributes = array()) {
    throw new NotImplementedError();
  }

  /**
   * put Updates an object on Online
   *
   * @param $attributes ....
   * @returns $this
   */
  protected function put($attributes = array()) {
    throw new NotImplementedError();
  }

  /**
   * delete Removes an object from Online, selected by $this::$id.
   * @returns $this
   */
  protected function delete() {
    throw new NotImplementedError();
  }
}
4

3 に答える 3

2

この以前の回答をご覧ください: PHP で NotImplementedError をスローしますか?

簡単に言えば、PHP には存在しませんが、既存の Exception を拡張することで独自の例外を簡単に作成できます。前の回答では、BadMethodCallException を使用してこれを行うことを提案しています。

class NotImplementedException extends BadMethodCallException
{}

次に、コード内で NotImplementedException をスローできます。

于 2012-10-30T14:43:59.880 に答える
0

私が見るように、あなたには2つの可能性があります:

  1. 例外クラスから派生し、not implemented exceptionスローできる を実装します。
  2. 実装されていないメソッドを抽象として定義します。コンパイラはエラーを生成します。基本クラス全体を抽象としてマークすることを忘れないでください。
于 2012-10-30T14:45:20.563 に答える
0

Symfony API のこのthrow new NotImplementedException()ようにできます。

于 2012-10-30T14:43:12.807 に答える