我有一个代码段
<?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();
我应该有一个输出test
,但我得到的输出是testtest
?
为什么tester()
被调用两次?
答案 0 :(得分:5)
PHP脚本语言不区分大小写。(不适用于变量)
由于您的child
类没有任何构造函数,因此会触发父类构造函数。
当你这样做时..
$t = new Test();
触发父类构造函数,即public function testing()
,(查看类匹配的名称)
来自PHP Docs ..
为了向后兼容,如果PHP 5找不到__construct() 给定类的函数,并且该类没有从a继承 父类,它将搜索旧式构造函数, 通过班级的名字。