Как создать объект, имея только имя класса?

Вот пример кода:

class App {
    public function show (){
        return 'Hello';
    }
}


// .... получили в переменную $name название класса

$name = 'App';

// Я знаю что статический метод можно вызвать следующим образом

$class = call_user_func("$name::show");

// Но так как метод у меня не статический,
// Как можно создать объект, что бы вызвать опр. метод?
// Этот вариант работает

$class = new $name ();

$class->show();

// Такое ощушение что это не правильный подход (говно код), какие есть решения?
  • Вопрос задан
  • 2394 просмотра
Решения вопроса 1
benbor
@benbor
Помог ответ - не забудь лайкнуть
Почему же говнокод. Это скриптовый язык, динамическая типизация. Если есть необходимость, то почему и нет. Вопрос в архитектуре, может Вам не стоит вообще юзать динамический класс?
PS. Есть еще Reflection в PHP. Быть может она Вам покажется менее "говнокодом".
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
undefine
@undefine
Senior Software Engineer / PHP
Попробуйте сервис локатеры. Pimple, например.
Положите в него класс по некому алиасу, а потом достаньте.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы