我想知道你能不能帮帮我..
我有两个类,一个扩展了另一个。类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;
}
}发布于 2010-08-13 22:01:35
如果实例化子类a,,则类b中定义的父__construct()方法将自动运行,除非在类a中定义了__construct()方法。
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();发布于 2010-08-13 21:29:04
我不确定我是否完全理解您的要求,但是您可以从孩子的构造函数中调用parents construct方法
parent::__construct();这是我所知道的唯一选择。
发布于 2010-08-13 21:29:36
在a::__construct()中调用parent::__construct()
class a extends b
{
public function __construct()
{
parent::__construct();
}
public function validateStuff()
{
$this->insert_record();
}
}如果你没有做任何特定于a的事情,你可以完全省略a的构造函数。
https://stackoverflow.com/questions/3477224
复制相似问题