【问题标题】:overriden method getting called twice被覆盖的方法被调用两次
【发布时间】:2014-05-22 12:48:52
【问题描述】:

我有一个代码 sn-p

<?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() 会被调用两次?

参考link to ideone

【问题讨论】:

    标签: php function oop abstract-class overriding


    【解决方案1】:

    PHP 脚本语言不区分大小写。但不适用于变量

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

    当你这样做时..

    $t = new Test();
    

    父类构造函数被触发,即public function testing(),(查看类名匹配

    来自PHP Docs..

    为了向后兼容,如果 PHP 5 找不到 __construct() 给定类的函数,并且该类没有从 父类,它将搜索旧式构造函数, 按班级名称。

    【讨论】:

      猜你喜欢
      • 2011-12-13
      • 1970-01-01
      • 2017-06-19
      • 2013-10-15
      • 1970-01-01
      • 2021-11-04
      • 1970-01-01
      • 1970-01-01
      • 2010-11-29
      相关资源
      最近更新 更多