Как создать объект, имея только имя класса? Вот пример кода: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
205 +1
0
Ответы
1

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

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

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

20 Апр 2024 в 13:06
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир