Moh*_*sal 4 php oop abstract-class overriding function
我有一个代码片段
<?php
abstract class Testing{
public abstract function tester();
public function testing(){
$this->tester();
}
}
class Test extends Testing{
public function tester(){
echo 'test';
}
}
$t = new Test();
$t->testing();
Run Code Online (Sandbox Code Playgroud)
我应该有一个输出,test但我得到的输出是testtest?
为什么tester()被叫两次?
PHP脚本语言不区分大小写.(虽然不适用于变量)
由于您的child类没有任何构造函数,因此父类构造函数会被触发.
当你这样做..
$t = new Test();
Run Code Online (Sandbox Code Playgroud)
触发了父类构造函数,即public function testing()(参见类匹配的名称)
来自PHP文档 ..
为了向后兼容,如果PHP 5找不到给定类的__construct()函数,并且该类没有从父类继承,则它将按类的名称搜索旧式构造函数.