Можно ли получить имя класса, используя его имя, сохраненное в строке в PHP?

У меня есть имя класса, сохраненное в строке в PHP. Можно ли разрешить имя класса с помощью строки?

Если предположить, что у меня есть класс Myclass, мне понадобится что-то вроде:

'Myclass'::class

person naneri    schedule 02.12.2015    source источник
comment
Все данные из вашего ввода будут выглядеть именно так?   -  person kav    schedule 02.12.2015
comment
Я не понимаю, какой ввод?   -  person naneri    schedule 02.12.2015
comment
@naneri, ты хочешь использовать это так $dynamic_name_of_the_class::class?   -  person Tintu C Raju    schedule 02.12.2015
comment
Возможный дубликат создания экземпляра класса из переменной в PHP?   -  person oshell    schedule 02.12.2015
comment
@HoschNok нет, мне нужно получить полное имя класса из строки без создания объекта, который является экземпляром класса.   -  person naneri    schedule 02.12.2015
comment
Пожалуйста, дополните. Каким образом полное имя класса будет отличаться от Myclass?   -  person VolkerK    schedule 02.12.2015


Ответы (1)


Я не совсем понимаю, как использовать ::class вместо строки. Простой факт заключается в том, что, если это сработает, он просто выведет ту же строку, что и у вас уже есть. т.е. в вашем примере 'MyClass'::class выведет строку MyClass.

Может быть, вы пытаетесь создать строку, содержащую только имя класса, и пытаетесь разрешить пространство имен? Это не сработает. Но вы можете получить текущее пространство имен, используя __NAMESPACE__ зарезервированное слово:

namespace foo\bar;
echo __NAMESPACE__;  //will output 'foo\bar'

Вы можете использовать это вместе со строкой имени класса, чтобы создать полное имя класса для текущего пространства имен.

Если вы хотите получить имя класса из другого пространства имен, вам необходимо заранее знать пространство имен; без пространства имен PHP вообще не сможет найти класс.

person Simba    schedule 02.12.2015