我试图故意打印一个错误"There is a error",但却得到了"Success"消息?
知道为什么吗?
感谢
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();
您忘记调用父构造函数:
class RestfulRequest extends Restful
{
public function __construct()
{
parent::__construct(); // <-- added
if (count($this->error) > 0)
{
exit('There is an error');
}
使用PHP的类扩展机制,当您重写一个方法时,只调用被重写的方法;除非显式调用,否则不会调用父类中的方法。
因此,在您的示例中,从未调用基类中的__construct()
方法。
为了执行您想要的操作,您需要使RestfulRequest::__construct()
方法显式地调用它的父方法,如下所示:
public function __construct()
{
parent::__construct(); //add this line!
if (count($this->error) > 0)
{
exit('There is an error');
}
echo 'Success';
}
希望能有所帮助。