Для чего нужен и что выводит метод ::class laravel и почему вызывается без аргументов и скобок?
PhotoController::class;
К примеру, у нас есть какая-либо функция, которая принимает на входе массив классов и вызывает у каждого из класса метод init()
:
Class First {
public function init()
{
echo 'Method init in first class was called';
}
}
Class Second {
public function init()
{
echo 'Method init in second class was called';
}
}
$classes = [
First::class,
Second::class
];
foreach ($classes as $class) {
$classObject = new $class();
if (method_exists($classObject, 'init')) {
$classObject->init();
}
}
Во-первых, этим мы избавляемся от написания полного пути для класса. К примеру, представим, что класс Second
лежит в пространстве имен App
, тогда, если бы мы писали массив $classes
строками, нам бы пришлось использовать следующее:
$classes = [
'Fisrt',
'App\Second'
]
Однако, использовав конструкцию ::class
, мы можем использовать полное название класса (с пространством имен) в конструкции Use
, а в массив занести только сам класс:
Use App\Second;
$classes = [
First::class,
Second::class
];
Тем самым мы избавляемся от написания полного пространства имен. На моём примере польза не очень заметна, но когда пространство имен состоит из 3 и более дочерних пространств имен, код становится гораздо чище.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Доброй ночиЯ написал PHP скрипт, который выводит данные в формате "0
Подскажите, пожалуйста, Есть таблица Access-Log пользователей, вида "User ID" "IP" "Date"Возможно ли найти все дубликаты-мультиаккаунты в ней без огромной...