переопределенный метод вызывается дважды



У меня есть фрагмент кода



<?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() вызывается дважды?



Ссылка ссылка на ideon

568   1  

1 ответ:

Язык сценариев PHP является нечувствительным к регистру. (не относится к переменным, хотя )

Так как ваш child класс не имеет никакого конструктора, конструктор родительского класса будет уволен.

Когда вы делаете это..

$t = new Test();

Запускается конструктор родительского класса, который является public function testing() , (смотрите название класса соответствует )

Из PHP Docs..

Для обратной совместимости, если PHP 5 не может найти __сооружать() функция для данного класса, и класс не унаследовал ее от a родительский класс, он будет искать функцию конструктора старого стиля, по названию класса.

Comments

    Ничего не найдено.