Как создать объект, имея только имя класса? Вот пример кода:class App {
public function show (){
return 'Hello';
}
}
// .... получили в переменную $name название класса
$name = 'App';
// Я знаю что статический метод можно вызвать следующим образом
$class = call_user_func("$name::show");
// Но так как метод у меня не статический,
// Как можно создать объект, что бы вызвать опр. метод?
// Этот вариант работает
$class = new $name ();
$class->show();
// Такое ощушение что это не правильный подход (говно код), какие есть решения?

21 Авг 2019 в 07:08
171 +1
0
Ответы
1

В вашем примере кода вы уже правильно создали объект класса, используя переменную с именем класса.
Следующий код будет работать:

$name = 'App';
$class = new $name();
$result = $class->show();
echo $result; // Выведет 'Hello'

Этот код создает объект класса App и вызывает метод show().
Если вам нужно вызвать нестатический метод класса, вы должны создать объект этого класса и вызывать нужный метод на этом объекте, как в примере выше.

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