#php #traits
Вопрос:
У меня есть два класса признаков: TournamentTrait и TournamentUtilTrait для уменьшения дублирования кода. Один из методов, возвращающих массив турнирных трасс
trait TournamentUtilTrait {
/**
* @param $itemId
* @return TournamentTrait[]
*/
public static function getByTournamentId($itemId): array {
$c = get_called_class();
return DbUtil::getAll(call_user_func(array($c::QUERIES_NAME, 'getByTournamentId'), $itemId), $c::CLASS_NAME);
}
}
Но у меня есть класс, который вызывает getByTournamentId, но должен возвращать другой тип:
/**
* @return TournamentCategory[]
* @throws Exception
*/
function getTournamentCategories() {
if (!isset($this->tournamentCategories))
$this->tournamentCategories= TournamentTournamentCategoryUtil::getByTournamentId($this->getId());
return $this->tournamentCategories;
}
И TournamentCategoryУтил, используя признак, и TournamentCategory, используя признак
class TournamentCategoryUtil implements TournamentCategoryConstants {
use TournamentUtilTrait;
}
class TournamentCategory implements TournamentCategoryConstants {
use TournamentTrait;
}
и в данный момент я получаю такое предупреждение:
Предупреждение:(267, 9) Ожидается, что возвращаемое значение будет » TournamentCategory []», «TournamentTrait[]» .