【问题标题】:Call top level class function in php在php中调用顶级类函数
【发布时间】:2019-08-03 18:23:00
【问题描述】:

我有一个场景,我有三个单独的类文件 A.php、B.php、C.php。

A.php 是独立文件,有一些功能,'B' 扩展 'A','C' 扩展 'B'。

在“C.php”文件中,我可以访问“B.php”的功能,但不能访问“A.php”的功能。

这是我的结构 -

在 A.php -

class A {
    public function testA(){
        echo "AA";
    }
}

在 B.php -

class B extends A{
    public function testB(){
        echo "BB";
    }
}

在 C.php 中 -

class C extends B{
    //Here i am able to call class B's function like 
    public function testC(){
        $this->testB();
    }

    //but not able to call Class A's function 
    public function testC1(){
        $this->testA();  // Here its giving error
    }
}

请让我知道这样做是否正确。如何在“C.php”中访问“A.php”函数

问候

【问题讨论】:

  • 什么错误?! 3v4l.org/3E2Z7
  • 更新后的代码有效,所以我不知道您现在遇到了什么问题。然而,这是一个非常奇怪的例子。 testC()testC1() 没有理由存在,因为您可以直接调用 testA()testB()

标签: php class inheritance multiple-inheritance


【解决方案1】:

如果您发布错误消息,很可能是内存不足,对吧?那是因为你的代码中有一个无限循环。

在课堂C,你有

public function testB() 
{ 
    $this->testB(); 
} 

这是一种永远调用它自己的方法,会耗尽你所有的内存。

如果你想从父类调用testB(),你应该这样称呼它:

public function testB() 
{ 
    parent::testB(); 
} 

如果你扩展了一个类并且你重写了一个方法(比如你的C类中的testB())并且想要调用父类实现,你需要使用parent::而不是$this->来调用它。

Here's a demo

【讨论】:

  • @Atul - 那么会发生什么?它有效吗?你有任何错误吗?如果是,那么错误信息是什么?据我所知,更新的代码没有问题?测试时有效:3v4l.org/7RpOE
  • @Atul - 如果这个答案可以帮助你让你的代码正常工作,那么请接受它。此外,如果它确实对您有所帮助,那么您应该回滚对问题的更新,因为它完全改变了它。第一个代码有问题,更新的代码没有。未来的访问者将不知道问题或答案在谈论什么。
猜你喜欢
  • 1970-01-01
  • 2014-01-02
  • 1970-01-01
  • 1970-01-01
  • 2016-12-06
  • 2013-06-19
  • 2012-09-26
  • 2015-10-31
  • 2013-02-02
相关资源
最近更新 更多