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

标签 php oop

<分区>

据我所知,构造函数不返回值。我在下面面临的问题是,我必须在子类的每个方法中重复调用 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.');
     }
  }
..
..
..
}

关于php - 在构造函数中返回值以避免代码重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14896588/

相关文章:

php - 重复 id 或其他记录的数组内的数组

php - Ratchet 与 Laravel

java - 链接到子类中的另一个构造函数

c# - "private"和 "protected Internal"有什么区别?

java - 流水线设计模式实现

javascript - 当时间到达 00h :59m : 59s 之后时,我的小时返回 0

PHP - array_map 比 foreach 快吗?

再次执行 fetch_assoc() 后的 php mysql 结果

flutter - 覆盖抽象类Dart中的最终属性

java - 为什么在 setOnClickListener() 中使用 (this)