H
H
Hazrat Hajikerimov2014-12-19 14:37:52
PHP
Hazrat Hajikerimov, 2014-12-19 14:37:52

How to create an object with only the class name?

Here is an example code:

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


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

$name = 'App';

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

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

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

$class = new $name ();

$class->show();

// Такое ощушение что это не правильный подход (говно код), какие есть решения?

Answer the question

In order to leave comments, you need to log in

2 answer(s)
B
Boris Benkovsky, 2014-12-19
@hazratgs

Why govnokod. It's a scripting language, dynamic typing. If there is a need, then why not. The question is in architecture, maybe you should not use a dynamic class at all?
PS. There is also Reflection in PHP. Perhaps it will seem less "shit code" to you.

K
Konstantin Chukhlomin, 2014-12-19
@undefine

Try the service locators. Pimple, for example.
Put a class in it according to some alias, and then get it.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question