Назад к вопросам
JuniorТеорияЧасто
Что выведет программа?
<?php
trait Greets
{
public function hello(): string { return 'trait'; }
}
class App
{
use Greets;
public function hello(): string { return 'class'; }
}
echo (new App())->hello(), "\n";class
- Ждать, что
hello()трейта заменит собственный метод класса: метод, объявленный в самом классе, всегда сильнее одноимённого метода трейта. - Ждать фатальной ошибки из-за общего имени: метод класса рядом с методом трейта разрешён, а сталкиваются только два трейта с одним именем метода — их разводит
insteadof.
- Какой
hello()сработает, если уAppне будет своего метода, а у его родителя будет? - Как выбрать метод, если два трейта приносят одно и то же имя?