Обычно, когда вы вводите модель в методе контроллера , это означает, что вы пытаетесь привязать значение маршрута к модели.Проще говоря, вы хотите, чтобы laravel автоматически волшебно выбрал эту модель для вас.
С другой стороны, когда вы вводите ее через __construct()
, вы хотите, чтобы эти моделибыть создан для вашего использования в классе.Проще говоря, вы хотите, чтобы Laravel создал новый экземпляр этой модели в классе.
Давайте пойдем на практике:
Первая ситуация
//routes
Route::get('/ninjas/{ninja}') //ninja is a number or anything that identifies a model
//Controller
public function index(Ninja $ninja)
{
//$ninja will be a resolved model
}
Другая ситуация,
public function __construct(Ninja $ninja)
{
$this->ninja = $ninja;
}
public function index($ninja_id)
{
$this->ninja->find($ninja_id)
}
Как видно из приведенных выше примеров, это зависит от варианта использования.То есть, если вы намереваетесь затем связать модель с маршрутом, вы вводите в методы контроллера иначе, если хотите, чтобы ваши модели использовались cleaner тогда, вплоть до конструктора.
Приветствия!
PS: примечание, запрашивающее наилучшую практику , обычно привлекает взвешенный ответ, что затрудняет поиск правильного ответа.