i know both gives same results but i am looking forward to hear about performance.
i am not sure but i think..
"MyClass::className()
" cause that class file to be loaded as well (its Yii function whom body is just simply get_called_class()
)
"MyClass::class
" i think this php's native class property don't load class php file and just return its name based on current namespace or use
.
Let me know if i am right? or highlight your knowledge please.
There are many places where we just want full qualitfied class name even it's not going to be used that time. but i also don't like putting hardcoded strings (due to hard refactoring)
Yes i just found i was right.
PHP's native class property is performance saving..(PHP 5.5+)
see here http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.class.class.name
so this don't cause class file to be loaded, so even if class doesn't exists it will return full className
Note: The class name resolution using ::class is a compile time transformation. That means at the time the class name string is created no autoloading has happened yet. As a consequence, class names are expanded even if the class does not exist. No error is issued in that case.
get_called_class() is for using in static methods.
Yii uses autoloading so the classes are loaded anyway. So there is no significant time difference between these both commands.
It's more important to look on the performance on your own code. And check and understand these performance tuning links for Yii 2.0: Yii2-Docs: Performance Tuning and Yii2-Docs:Lazy Loading and Eager Loading