Порядок аргументов в методе контроллера - PullRequest
0 голосов
/ 07 мая 2019

Предположим, у нас есть следующий маршрут в Laravel:

Route::get('/blog/{id}/{slug}', ['as' => 'blog', 'uses' => 'Front\PostController@single']);

Где {id} и {slug} являются переменными и будут переданы какАргументы single () метода PostController класса, как показано ниже:

public function single($id, $slug) {}

Но вы также можете передать объект Request ,вот так:

public function single(Request $request, $id, $slug) {}

или даже:

public function single($id, $slug, Request $request) {}

и Laravel все еще может с ними нормально работать ... похоже, порядок аргументов не соответствует или есть какая-то особая техникаприложенное

Ответы [ 2 ]

0 голосов
/ 08 мая 2019

Когда вы используете:

открытая функция single ($ id, $ slug, Request $ request) {}

Вы указываете тип $ request для класса Request.Таким образом, не существует специальной техники, которую использует laravel, но это просто философия PHP, согласно которой, когда вы указываете тип, он поддерживает сам порядок.

Но да, безусловно, есть некоторая логика, которую laravel использует для использования всех данных запросав объекте $ request.

0 голосов
/ 07 мая 2019

Порядок аргументов не важен, за исключением случаев, когда вы используете значение по умолчанию в этих аргументах (доступно начиная с PHP 5.6+), например:

function something($foo, $bar=true) { ... }

Что должно быть последним в аргументах.

Пожалуйста, проверьте официальные документы PHP о "использовании параметров по умолчанию в функциях" :

Значением по умолчанию должно быть константное выражение, а не (например) переменная, член класса или вызов функции.

Обратите внимание, что при использовании аргументов по умолчанию, любые значения по умолчанию должны быть справа от любых аргументов не по умолчанию ; в противном случае все будет работать не так, как ожидалось.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...