Можно ли вызвать трейт динамически? class PatchController extends Controller{
public function actionIndex($name, $method){
//Как мне здесь подключить трейт "$name" и вызвать в нем метод "$method" ?
}
private function log($msg){
echo($msg);
}
}
trait Test{
public function test(){
$this->log('ok');
}
}

21 Авг 2019 в 07:06
146 +1
0
Ответы
1

Да, можно вызвать трейт динамически. Для этого нужно использовать метод use внутри класса и передать ему имя трейта в виде строки. Затем можно вызвать метод трейта, используя оператор ->.

Пример использования трейта в методе actionIndex:

class PatchController extends Controller{
public function actionIndex($name, $method){
$traitName = 'Test';
$this->useTrait($traitName);
$this->$method(); // Вызов метода трейта
}
private function log($msg){
echo($msg);
}
private function useTrait($traitName){
$trait = $traitName;
$this->$trait = new $trait; // Динамическое добавление и использование трейта
}
}
trait Test{
public function test(){
$this->log('ok');
}
}

Таким образом, в методе actionIndex можно передать имя трейта и вызвать его метод, передавая имя метода вторым параметром.

20 Апр в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 493 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир