我在想你能不能帮我一下..
我有两个类,一个扩展另一个。B 类将由各种不同的对象扩展并用于常见的数据库交互。现在我希望 B 类处理它的连接和断开连接,而无需来自 A 类或任何外部输入..
据我了解,问题是扩展类不会自动运行其 __construct 函数。有解决办法吗?
提前致谢..
class a extends b
{
public function __construct()
{
}
public function validateStuff()
{
$this->insert_record();
}
}
class b
{
public function __construct()
{
$this->connect();
}
protected function connect()
{
return true;
}
public function insert_record()
{
return true;
}
}
最佳答案
类b中定义的父类__construct()
方法如果实例化子类a会自动运行,除非有__construct()
类 a 中定义的方法。
class a extends b {
}
class b {
public function __construct()
{
echo 'In B Constructor';
}
}
$x = new a();
如果在 a 类中定义了 __construct()
方法,那么这会覆盖在 b 类中使用 __construct()
方法....它将运行而不是类b __construct()
方法
class a extends b {
public function __construct()
{
echo 'In A Constructor';
}
}
class b {
public function __construct()
{
echo 'In B Constructor';
}
}
$x = new a();
因此,如果您的子类定义了 __construct()
方法,那么如果您也想执行该方法,则需要显式调用父类的构造函数。
class a extends b {
public function __construct()
{
parent::__construct();
echo 'In A Constructor';
}
}
class b {
public function __construct()
{
echo 'In B Constructor';
}
}
$x = new a();
关于PHP - 扩展的 __construct,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3477224/