Когда я читаю код, написанный в рамках Laravel, я вижу много применений класса ClassName::class
. В чем смысл модификатора ::class
? Является ли это особенностью Laravel или PHP? Я искал, но не смог найти документацию.
Начиная с PHP 5.5 ключевое слово класса также используется для разрешения имен классов. Вы можете получить строку, содержащую полное имя класса ClassName, с помощью
ClassName::class
. Это особенно полезно для классов с именами.
Например
namespace MyProject; class Alpha{ } namespace MyOtherProject; class Beta{ } echo Alpha::class; // displays: MyProject\Alpha echo Beta::class; // displays: MyOtherProject\Beta
Он просто возвращает имя класса с пространством имен! Начиная с PHP 5.5 ключевое слово класса также используется для разрешения имен классов. Вы можете получить строку, содержащую полное имя класса ClassName, с помощью класса ClassName :: class. Это особенно полезно для классов с именами.
namespace NS { class ClassName { } echo ClassName::class; }
Вышеприведенный пример выводит:
NS\ClassName