是否可以使用保存在 PHP 中的字符串中的名称来检索类名?

Is it possible to retrieve a classname using its name saved in a string in PHP?

我在 PHP 的字符串中保存了一个 class 名称。 是否可以使用字符串解析 class 名称?

如果假设我有一个名为 'Myclass' 的 class,我需要这样的东西:

'Myclass'::class

我不完全清楚 ::class 对字符串有什么用。一个简单的事实是,如果这可行,它只会输出与您已有的字符串相同的字符串。即在您的示例中,'MyClass'::class 将输出字符串 MyClass.

也许您正在尝试使用仅包含 classname 的字符串并尝试解析名称空间?这行不通。但是您可以使用 __NAMESPACE__ 保留字获取当前命名空间:

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

您可以将它与 class 名称字符串结合使用,为当前命名空间构建完全限定的 class 名称。

如果你想从不同的命名空间获得一个class名称,那么你必须事先知道命名空间;没有命名空间,PHP 根本无法找到 class。