在构造函数中返回值以避免代码中的重复


return value in constructors to avoid dupplications in code

据我所知,构造函数不返回值。下面我面临的问题是,我必须在子类的每个方法中重复调用check_error(),看看父$error数组中是否有错误。

是否有机会更改我的代码以删除复制,从而使其更加用户友好和可维护?

感谢

class RestfulRequest extends Restful
{
  public function __construct()
  {
     parent::__construct();
     if (is_array($this->error))
     {
        return 'Error found';
     }
  }
..
..
..
}

我知道上面的代码是不可能的,但我添加它只是为了向您展示我首先需要的东西。没有重复,每次启动只检查一次。

abstract class Restful
{
  public $error = array('error1', 'error2');
  abstract public function check_error();
  abstract public function method_one();
  abstract public function method_two();
}
class RestfulRequest extends Restful
{
  public function __construct()
  {
     parent::__construct();
  }
  public function check_error()
  {
     return (is_array($this->error)) ? false : true;
  }
  public function method_one()
  {
     if ($this->check_error() === false)
     {
        return 'Error found';
     }
     return 'No error';
  }
  public function method_two()
  {
     if ($this->check_error() === false)
     {
        return 'Error found';
     }
     return 'No error';
  }
}
$obj_restful = new RestfulRequest();
echo $obj_restful->method_one();
echo $obj_restful->method_two();
构造函数不能返回值,但可以抛出异常。
Class RestfulRequest extends Restful
{
  public function __construct()
  {
     parent::__construct();
     if (is_array($this->error))
     {
        throw new Exception('Error found.');
     }
  }
..
..
..
}