我试图故意打印错误“有错误”但是收到“成功”消息呢?
知道为什么吗?
由于
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();
答案 0 :(得分:5)
您忘了调用父构造函数:
class RestfulRequest extends Restful
{
public function __construct()
{
parent::__construct(); // <-- added
if (count($this->error) > 0)
{
exit('There is an error');
}
答案 1 :(得分: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';
}
希望有所帮助。