我在php中继承__costruct()方法时遇到问题。 这是我的超级班:
class MyDataMapper
{
private $connection;
function __construct()
{
$this -> connection = new mysqli($HOST, $DB_USER, $PASS, $DB_TABLE);
}
//other methods...
}
我需要使用一个扩展上面的类的新类,所以这就是我所做的:
class DataMapperExtends exstends MyDataMapper
{
function __construct()
{
parent::construct();
}
//other methods...
}
但由于某种原因,这不起作用:我得到一个mysqli错误,发生在我的一个SQL查询的prapre语句上(错误:在非对象上调用成员函数prepare())。 像这样:
<?php $stmt = $this -> connection -> prepare($query); ?>
我不知道为什么会发生这种情况,似乎连接没有初始化。如果我写这个,不要认为子类中有错误:
<?php
class DataMapperExtends extends MyDataMapper
{
public function __construct()
{
//even if it does not make a lot of sense
$this -> connection = new mysqli($HOST, $DB_USER, $PASS, $DB_TABLE);
}
}
?>
一切正常。
我的超类中有错误吗?
谢谢!
答案 0 :(得分:1)
如果您需要将类中的某些内容继承到子类,请将其声明为protected
,而不是private
。受保护的成员和方法可由子类(以及父类)访问。私有成员和方法只能在声明它们的特定类中访问。
答案 1 :(得分:1)
您的变量连接被定义为私有
private $connection;
私人只在课堂上提供。
因此,对于需要访问的子类protected