PHP 5.4:获取实例变量的完全限定类名


我知道 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 以获取更多信息。

相关内容

  • 没有找到相关文章

最新更新