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