2

我试图故意打印一个错误“有一个错误”但得到“成功”消息?

知道为什么吗?

谢谢

abstract class Restful
{
  public $error = array();

  public function __construct()
  {
     //Doing something here
     //....
     //....
     $this->validate_params();
  }

  public function validate_params()
  {
     $this->error[] = 'test error';
  }
}

class RestfulRequest extends Restful
{
  public function __construct()
  {
     if (count($this->error) > 0)
     {
        exit('There is an error');
     }

     echo 'Success';
  }
}

new RestfulRequest();
4

2 回答 2

5

您忘记调用父构造函数:

class RestfulRequest extends Restful
{
  public function __construct()
  {
     parent::__construct(); // <-- added
     if (count($this->error) > 0)
     {
        exit('There is an error');
     }
于 2013-02-15T12:02:21.280 回答
0

使用 PHP 的类扩展机制,当你重写一个方法时,只调用被重写的方法;除非您显式调用它,否则不会调用父类中的方法。

因此,在您的示例中,__construct()永远不会调用基类中的方法。

为了做你想做的事,你需要让RestfulRequest::__construct()方法显式调用它的父方法,如下所示:

public function __construct()
  {
     parent::__construct();    //add this line!
     if (count($this->error) > 0)
     {
        exit('There is an error');
     }

     echo 'Success';
  }

希望有帮助。

于 2013-02-15T12:03:48.797 回答