@fuckman

Зачем в php передавать в метод название класса аргумента?

Я новичёк в php, изучаю ларавел. Там часто в методы передаются названия классов, зачем это делается и как называется эта фича?
Например:
public function __construct(Guard $auth, Registrar $registrar)
	{
		$this->auth = $auth;
		$this->registrar = $registrar;

		$this->middleware('guest', ['except' => 'getLogout']);
	}
  • Вопрос задан
  • 421 просмотр
Решения вопроса 3
dedalik
@dedalik
Веб разработчик
Это называеться Dependency Injection, в скобках вы передаёте объект, который будете использовать внутри класса.
Если объект передан через __construct(Guard $auth), как у вас в коде, значит можно будет использовать данный класс в каждом методе. Если вам нужно использовать класс только один раз, вы можете передать нужный класс методу, вместо
public function __construct(Guard $auth) {},
public function myMethod(Guard $auth) {}

Передача второго параметра может быть такой:

public function myMethod(Guard $auth, $id) {}
или такой:
public function myMethod($id, Guard $auth) {}

Laravel сам знает что где
Ответ написан
Комментировать
alexey-m-ukolov
@alexey-m-ukolov Куратор тега Laravel
Комментировать
JhaoDa
@JhaoDa
LaravelRUS Team
Это называется DI — Dependency Injection. laravel.com/docs/5.1/container#introduction
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы