在查看一些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/