我知道 PHP 5.5
上有一个静态class
字段,但我必须坚持使用 PHP 5.4。是否可以从变量中获取完全限定的类名?
例:
namespace MyAwesomeNamespace
class Foo {
}
代码中的其他地方:
public function bar() {
$var = new MyAwesomeNamespaceFoo();
// maybe there's something like this??
$fullClassName = get_qualified_classname($var);
// outputs 'MyAwesomeNamespaceFoo'
echo $fullClassName
}
你应该使用get_class
如果您使用的是命名空间,则此函数将返回包括命名空间在内的类的名称,因此请注意您的代码是否对此进行了任何检查。
namespace Shop;
<?php
class Foo
{
public function __construct()
{
echo "Foo";
}
}
//Different file
include('inc/Shop.class.php');
$test = new ShopFoo();
echo get_class($test);//returns ShopFoo
这是来自here
的直接复制粘贴示例
我知道
这是一个古老的问题,但对于仍然发现这个的人,我建议这种方法:
namespace Foo;
class Bar
{
public static function fqcn()
{
return __CLASS__;
}
}
// Usage:
use FooBar;
// ...
Bar::fqcn(); // Return a string of FooBar
如果使用 PHP 5.5,您可以简单地执行以下操作:
namespace Foo;
class Bar
{}
// Usage:
use FooBar;
// ...
Bar::class; // Return a string of FooBar
希望这有帮助...
更多信息 ::类 在这里.
对于使用 PHP 8.0 及更高版本的开发人员,您现在无需get_class
即可轻松完成此操作。
PHP8 引入了对对象::class
的支持。例:
public function bar() {
$var = new MyAwesomeNamespaceFoo();
echo $var::class;
}
这是 RFC 以获取更多信息。