:: class和get_class之间的差异

时间:2015-12-06 14:52:47

标签: php

您能解释一下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

3 个答案:

答案 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)

没有区别,这只是两种编码风格。