Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 11.11.2020 13:45:35

Не видидит переменную обозначенную global

Помогите функция обратного вызова метода фильтр не в какую не хочет видеть переменную $diametr


Route::post('diametr',  function (Request $request) {
   
    $diametr = (string)$request->diam;
    $offer = new offer();
    $col = $offer->all();
      $result = $col->filter(function ($item) {
        global $diametr;
        return strpos($item, $diametr);
    }); 



    return $result->all();

});

Не в сети

#2 11.11.2020 14:29:58

Re: Не видидит переменную обозначенную global

что это за шляпа, простите...

Не в сети

#3 11.11.2020 15:38:17

Re: Не видидит переменную обозначенную global

Не надо здесь global. Переменные попадают во внутренний scope замыкания с помощью use
function ($item) use ($diametr) {

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


There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Не в сети

#4 11.11.2020 16:41:56

Re: Не видидит переменную обозначенную global

new offer - неправильно.
strpos вернет 0 и фильтр отработает неправильно

Не в сети

#5 11.11.2020 17:29:23

Re: Не видидит переменную обозначенную global

new offer - неправильно.strpos вернет 0 и фильтр отработает неправильно

Все вроде работает если переменную диаметр меняю на явный параметр, я не знаю как по другому создать экземпляр класса

Не в сети

#6 11.11.2020 17:29:58

Re: Не видидит переменную обозначенную global

Не надо здесь global. Переменные попадают во внутренний scope замыкания с помощью usefunction ($item) use ($diametr) {а для новых стрелочных замыканий не понадобится даже этого, там все переменные доступны сразу.

Спасибо попробую))

Не в сети

Подвал раздела