我知道两者都给出了相同的结果,但我期待听到性能.
我不确定,但我认为..
" MyClass::className()"导致该类文件也被加载(它的Yii函数只是简单的身体get_called_class())
" MyClass::class"我认为这个php的本机类属性不会加载类php文件,只是根据当前命名空间或者返回它的名称use.
如果我是对的,请告诉我?或者请突出您的知识.
有很多地方我们只想要完全合格的班级名称,即使它不会在那个时候使用.但我也不喜欢放硬编码的字符串(由于难以重构)
是的我发现我是对的.
PHP的本机类属性可以节省性能..(PHP 5.5+)
见http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.class.class.name
所以这不会导致加载类文件,所以即使class不存在,它也会返回完整的className
注意:使用:: class的类名解析是编译时转换.这意味着在创建类名字符串时,尚未发生自动加载.因此,即使该类不存在,类名也会扩展.在这种情况下不会发出错误.