Зачем использовать хинтинг переменных в Laravel или PHP? - PullRequest
0 голосов
/ 13 июня 2018

PHP не является строгим языком типизации, верно?Я работаю с Laravel 5.1 и PHP 7.2

Я бы сделал свой маршрут следующим образом

Route::get('/getSizes', 'JobTickeController@getSizes')->name('getSizes');

в JobTicketController там я определяю свою функцию следующим образом

public function getSizes(Request $response){

}

Мой вопрос, даже если PHP не является строгой типизацией (по умолчанию), почему я должен определять Request тип переменной перед $request переменной?Этот код выдает исключение без подсказки типа Request.

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

Хотя другие говорят о том, что PHP не является языком со строгой типизацией, нет ответа на вопрос, зачем нужен хинтинг типа.

В вашем приложении Laravel происходит следующее.Laravel попытается запустить метод getSizes в вашем контроллере, разрешив любые напечатанные аргументы из «Контейнера (службы)» , также известного как IoC.Если он не находит привязок, он попытается создать экземпляр класса.Предполагается, что любые аргументы, не имеющие хинтинга типа, являются «параметрами маршрута» .

Поскольку у вашего маршрута нет параметров, $request не может быть присвоено какое-либо значение без указания типа.При вводе подсказки аргумент $request с классом Illuminate\Http\Request Laravel автоматически разрешит эту привязку из своего контейнера и сделает ее доступной в вашем методе.

TLDR:

  • ВашИсключение выдается в случае, если вы не напечатаете подсказку, потому что нет параметра маршрута для использования в качестве значения.
  • При использовании печатания на клавиатуре Laravel автоматически разрешит привязку из контейнера или создаст экземпляр класса, если он не был связан.

См. Метод ввода в документации .

0 голосов
/ 13 июня 2018

Сначала нет ничего с именем Loose Type, но вы можете сказать PHP is not a strictly typed language, например, JAVA.

В вашем примере это a Type Hinting, поэтому здесь вы заставляете функцию приниматьпараметры только с типом Request.

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