在查看一些PHP代码时,我发现了一件奇怪的事情。这是它的简单示例说明:

文件A.php:

<?php
class A{
    public function methodA(){
        echo $this->B;
    }
}
?>

文件B.php:
<?php
    class B extends A{
        public $B = "It's working!";
    }
?>

文件test.php:
<?php
    require_once("A.php");
    require_once("B.php");
    $b = new B();
    $b->methodA();
?>

运行test.php会输出“它正在工作!”,但问题是为什么它能工作? :)这是功能还是错误?类A中的方法methodA也可以调用类B中的方法,这些方法在OOP中不起作用。

最佳答案

您只实例化B类。暂时忽略A,并假装methodA()B类的一部分。

当类B扩展A时,它将获得A的所有功能。直到代码运行(而不是之前),才会评估$this->B。因此,不会发生错误,并且不会发生,因为$this->B类中存在B

关于php - PHP继承,使用子变量的父函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9727062/

10-11 22:33
查看更多