【发布时间】:2021-04-15 17:36:22
【问题描述】:
class A
{
public $variable
public function someFunction()
{
$this->variable = 'I am a variable';
}
}
class B extends A
{
public function anotherFunction()
{
parent::someFunction();
$stmt = $this->dbc->prepare('INSERT INTO table(row) VALUES(:variable)');
$stmt->bindParam(':variable', $this->variable);
$stmt->execute();
$stmt = null;
$dbc = null;
}
}
如何在不再次调用 someFunction() 的情况下从“A 类”继承 $variable。
我遇到的问题是我的“A 类”将产品添加到购物篮中,而“B 类”将它们插入到数据库中。当我在“B 类”中调用someFunction() 以获取存储在“A 类”属性中的所有产品详细信息时,它再次将产品添加到购物篮中,因为该方法被调用了两次,一次在“A 类”中,然后再次在“A 类”中'B级'。
我可以将所有代码保留在一个类中,但这会违反 SRP 原则,不是吗?
编辑:上面的代码只是为了描述我的问题,它不是我真实脚本的精确表示,因此它与将产品添加到购物篮没有任何关系。我只是想让事情变得简单。
【问题讨论】:
-
我删除了
parent::someFunction();并且它可以工作,现在看起来很合乎逻辑,因为这段代码再次调用了该函数。我虽然有必要访问存储在该方法中的属性。
标签: php oop inheritance