第一次在PHP中扩展一个类,我遇到一个致命的错误,说该方法是私有的,而不是.我确信这是一些基本的东西,但我已经研究过书籍和论坛,而且我无法确定我为完成此错误所做的工作.任何帮助非常感谢.详情如下:
错误信息:
致命错误:在第726行的/root/includes/classes/testprinter.php中从上下文'testprinter'调用私有方法testgiver :: dbConnect()
testprinter的第726行代码如下:
private function buildquestionarray()
{
$query = "etc etc";
**$conn = $this->dbConnect('read');
$result = $conn->query($query);
...
Run Code Online (Sandbox Code Playgroud)
Testprinter扩展了testgiver.这是类的扩展:
require_once('testgiver.php');
class testprinter extends testgiver
{...
Run Code Online (Sandbox Code Playgroud)
并在testgiver中声明方法:
protected function dbConnect($userconnecttype)
{...
Run Code Online (Sandbox Code Playgroud)
再次感谢!
如前所述Alexander Larikov,您无法protected methods从类实例访问,但不仅protected可以访问private方法,还无法从类实例访问方法.要访问protected的方法,parent class从一个实例subclass声明一个public method子类中,然后调用protected method的parent class从子类,即公共方法
class testgiver{
protected function dbConnect($userconnecttype)
{
echo "dbConnect called with the argument ".$userconnecttype ."!";
}
}
class testprinter extends testgiver
{
public function buildquestionarray() // public instead of private so you can call it from the class instance
{
$this->dbConnect('read');
}
}
$tp=new testprinter();
$tp->buildquestionarray(); // output: dbConnect called with the argument read!
Run Code Online (Sandbox Code Playgroud)