覆盖的方法被调用两次。

4

我有一段代码片段

<?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()两次?
参考ideone链接
1个回答

5

PHP脚本语言不区分大小写。(对变量不适用)

由于您的child类没有任何构造函数,因此父类构造函数将被触发。

当您执行此操作时...

$t = new Test();

父类构造函数被触发,即public function testing(),(注意类名匹配)。
PHP文档中得知...
为了向后兼容,如果PHP 5找不到给定类的__construct()函数,并且该类没有继承自父类的构造函数,则会搜索旧式构造函数,名称与类名相同。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接