1

可能重复:
在 PHP 中抛出 NotImplementedError?

在编写基类时,我经常逐渐开发,并且只构建我需要的(或者,我正在测试的)。然而,我喜欢我的界面是平衡的。对于每个 getter 一个 setter。在实现 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

看看这个先前的答案:Throw a NotImplementedError in PHP?

非常简单地说,PHP 中不存在异常,但您可以通过扩展现有异常轻松创建自己的异常。先前的答案建议使用 BadMethodCallException 来执行此操作:

class NotImplementedException extends BadMethodCallException
{}

然后,您可以在代码中抛出 NotImplementedException。

于 2012-10-30T14:43:59.880 回答
0

你可以throw new NotImplementedException()——就像Symfony API 中的这个一样。

于 2012-10-30T14:43:12.807 回答
0

在我看来,您有两种可能性:

  1. 从异常类派生并实现一个not implemented exception,你可以抛出。
  2. 将未实现的方法定义为抽象的。然后编译器会产生一个错误。不要忘记将整个基类标记为抽象。
于 2012-10-30T14:45:20.563 回答