您能解释一下get_class($instance)
和ClassName::class
之间的区别吗?
<?php
// PHP 5.5
var_dump(get_class(new Datetime())); // string(8) "DateTime"
var_dump(Datetime::class); // string(8) "Datetime" with lower t
答案 0 :(得分:9)
在PHP中,类名不具备传感性。
似乎get_class($obj)
返回真正的类名(在PHP核心中),::class
返回用户代码中使用的类名。
<?php
// PHP 5.5
var_dump(get_class(new DaTeTImE())); // string(8) "DateTime"
var_dump(DaTeTImE::class); // string(8) "DaTeTImE"
//来自PHP团队: &#39; :: class&#39;构造完全是在编译时完成的,基于传入的表观类名。它不检查实际类名的拼写,甚至不存在类的存在
<?php
echo dAtEtImE::class; // Output is "dAtEtImE"
echo ThisDoesNotExist::class; // Output is "ThisDoesNotExist"
答案 1 :(得分:0)
另一点是get_class以实例作为参数,:: class直接在Class定义上操作,而无需初始化任何实例。您可能想要获取类名,而无需偶尔创建实例。
答案 2 :(得分:-3)
没有区别,这只是两种编码风格。