我知道两者都给出了相同的结果,但我很期待听到表现。
我不确定,但我认为..
" Button
"导致该类文件也被加载(其Yii函数,其主体只是MyClass::className()
)
" get_called_class()
"我认为这个php的本地类属性不会加载类php文件,只是根据当前命名空间或MyClass::class
返回其名称。
如果我是对的,请告诉我?或者请突出您的知识。
有很多地方我们只想要完整的有质量的班级名称,即使它不会被使用。但我也不喜欢把硬编码的字符串(由于难以重构)
答案 0 :(得分:5)
是的,我发现我是对的。
PHP的本机类属性可以节省性能..(PHP 5.5 +)
见http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.class.class.name
所以这不会导致加载类文件,因此即使类不存在,它也会返回完整的className
注意:使用:: class的类名解析是编译时 转型。这意味着当时类名字符串是 创建没有自动加载已经发生。因此,班级名称 即使该类不存在,也会扩展。没有发出错误 那种情况。
答案 1 :(得分:0)
get_called_class()用于静态方法。
Yii使用autoloading所以无论如何都要加载类。因此这两个命令之间没有显着的时间差异。
在自己的代码上查看性能更为重要。并检查并了解Yii 2.0的这些性能调整链接:Yii2-Docs: Performance Tuning和Yii2-Docs:Lazy Loading and Eager Loading