Что означает класс ClassName:: PHP?

Когда я читаю код, написанный в рамках Laravel, я вижу много использования ClassName::class. В чем смысл модификатора ::class? Является ли это особенностью Laravel или PHP? Я искал, но не смог найти документацию.

Ответ 1

С 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

Ответ 2

Он просто возвращает имя класса с пространством имен! Начиная с PHP 5.5 ключевое слово класса также используется для разрешения имен классов. Вы можете получить строку, содержащую полное имя класса ClassName, с помощью класса ClassName:: class. Это особенно полезно для классов с именами.

namespace NS {
    class ClassName {
    }
    echo ClassName::class;
}

Вышеприведенный пример выводит:

NS\ClassName