'致命错误调用私有方法'但方法受到保护

时间:2012-08-01 03:50:16

标签: php oop

第一次在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);
  ...

Testprinter扩展了testgiver。这是课程的扩展:

require_once('testgiver.php');

class testprinter extends testgiver
{...

在testgiver中声明方法:

protected function dbConnect($userconnecttype)
{...

再次感谢!

3 个答案:

答案 0 :(得分:9)

已经Alexander Larikov表示您无法从类实例访问protected methods但不仅访问protected方法,而且您无法从类实例访问private方法。要从protected的实例访问parent class的{​​{1}}方法,请在子类中声明subclass,然后调用public method protected method 1}}来自子类的公共方法,即

parent class

DEMO.

答案 1 :(得分:0)

您无法从类实例访问受保护的方法。阅读Members declared protected can be accessed only within the class itself and by inherited and parent classes

documentation

答案 2 :(得分:0)

阿尔法,伟大的写作!

我觉得我差点把它拿到我想要的地方,但我得到了

Fatal Error, call to undefined method NameofClass::myFunction() in line 123456

我在这里缺少什么?

我的原始类和扩展类都在同一个.php文件中,但对myFunction的调用发生在另一个文件中。这是不允许的吗?

注意:我会在评论中添加此内容,但系统不会让我包含评论,直到我的声誉为50.