如果我从“workingCLass”调用“myClass :: getItems()”,将调用getId方法?那个回声“你好”或“再见”的人?谢谢。
class myClass extends otherClass {
function getId(){
echo "hello";
}
}
class otherClass{
function getItems(){
$this->getId();
}
function getId(){
echo "bye";
}
}
class workingClass extends myClass {
function __construct(){
$this->getItems();
}
}
答案 0 :(得分:2)
"hello"
的那个,因为您明确指定了要调用的那个。
问题是,它不是静态的,你可以在静态环境中调用它。
编辑:使用$this
时,它不会调用任何内容,因为getItems()
中没有workingClass
。如果workingClass
扩展了otherClass
,它就会执行"bye"
。
答案 1 :(得分:2)
这将导致致命错误,因为您静态调用此方法(::
)并且在此方法中使用$this
特殊变量,该变量引用workingClass
(来自它被称为)workingClass
没有getId
方法。
好的,现在在修复示例之后我可以说它会输出'hello',因为当从对象($this->
)调用方法时,PHP将始终运行在最新子类中定义的一个。