gpt4 book ai didi

PHP - 扩展的 __construct

转载 作者:IT王子 更新时间:2023-10-29 01:11:08 26 4
gpt4 key购买 nike

我在想你能不能帮我一下..

我有两个类,一个扩展另一个。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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com