Статический метод class laravel - для чего он?

99
16 июля 2019, 09:10

Для чего нужен и что выводит метод ::class laravel и почему вызывается без аргументов и скобок?

PhotoController::class;
Answer 1

К примеру, у нас есть какая-либо функция, которая принимает на входе массив классов и вызывает у каждого из класса метод 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 и более дочерних пространств имен, код становится гораздо чище.

READ ALSO
Закрытие доступа к страницам php

Закрытие доступа к страницам php

Есть страницы indexphp, catalog

94
Получение результата работы PHP скрипта

Получение результата работы PHP скрипта

Доброй ночиЯ написал PHP скрипт, который выводит данные в формате "0

136
Ip multiaccount checker PHP (Нахождение дубликатов пользователей по IP)

Ip multiaccount checker PHP (Нахождение дубликатов пользователей по IP)

Подскажите, пожалуйста, Есть таблица Access-Log пользователей, вида "User ID" "IP" "Date"Возможно ли найти все дубликаты-мультиаккаунты в ней без огромной...

121