Что здесь происходит в PHP с классами?

Если у меня есть этот код, отображается строка "test". Это в PHP 5.3. Это какой-то надзор, на который не следует полагаться, или это какой-то способ достижения множественного наследования в PHP?

class Test1
{
    function getName()
    {
        return $this->name;
    }
}

class Test2
{
    public $name = 'test';

    function getName()
    {
        return Test1::getName();
    }
}

$test = new Test2;
echo $test->getName();

РЕДАКТИРОВАТЬ:

Как было указано в комментариях GZipp, это фактически задокументированное поведение. См. Эту страницу: http://us2.php.net/manual/en/language.oop5.basic.php и заголовок «Пример №2 Некоторые примеры псевдопеременной $ this».

Классы A и B имеют аналогичные отношения с двумя моими тестовыми классами выше, и строки

$b = new B();
$b->bar();

показывают более или менее тот же результат, что и мой пример.

7
задан Gnuffo1 2 October 2010 в 13:58
поделиться