Диего
имеет место быть )
Antonio
Подскажите, а есть возможность "замедлить" тесты? в определенный момент вместо 200 кода получаю 429 Too Many Requests . Ну и если phpunit не для этого чата, то пошлите куда надо =)
ThunderAL
@JesterAntik это костыль это тебя посылает мидлвэр throttle он в файле App\Http\Kernel можешь запилить if (env('APP_DEBUG', true))
Диего
https://laravel.com/docs/5.5/container#introduction
Диего
в общем прослойка между сервисом работы бд и контроллером
Antonio
@JesterAntik это костыль это тебя посылает мидлвэр throttle он в файле App\Http\Kernel можешь запилить if (env('APP_DEBUG', true))
Я вижу в Kernel объявленный параемтр, но как его сделать условным? О_о 'api' => [ 'throttle:60,1', 'bindings', ],
ThunderAL
'api'=> (env('APP_DEBUG', true)) ? [ 'throttle:60,1', 'bindings', ] : [ 'bindings', ]
ThunderAL
что-то около
ThunderAL
ой
ThunderAL
поменяй массивы местами только))
Antonio
спасибо
ThunderAL
ага
ThunderAL
такстоп!
ThunderAL
нет
ThunderAL
это если оно в .env не находит таёт тебе значение из второго аргумента
ThunderAL
env('test', 'default')
ThunderAL
костыль, не красиво
Antonio
думал я дурак, но PHP тоже говорит, что выражение не может быть использовано для указания значения по умолчанию для свойства класса
Andrey
Не стоит в коде обращаться к env. Лучше config(“app.debug”)
ThunderAL
cat .env TEST=123 $ env('TEST', 11111) » 123 $ env('TEST2', 11111) » 111111
Anton
если у тебя разные настройки для разных окружений, то надо их прописывать не if и смотреть окружение, а в самом конфиге
Anton
прям в .env и определи значение...
invariance
делаешь свою конфиг переменную, хранящую значение для тестового апи
Anton
ну или в нужном .env.XXX
ThunderAL
ему нужно простое решение
ThunderAL
чтобы было понятно
invariance
я назвал изичное)
ThunderAL
+ не костыльно
invariance
и не костыльное
Antonio
чтобы было понятно
ну все манипуляции мне понятны
Antonio
попробовал сдулать вот так: protected $middlewareGroups = config('middleware.groups');
Antonio
проблема остается все та же: в качестве дефолта нельзя использовать вычисляемое значение
invariance
в каком-нибудь config/route.php добавляешь строку api-ratelimit => env("API_RATELIMIT", "throttle:60,1"); в кернеле соотв-но назначаешь 'api' => [ config('route.api-ratelimit'), 'bindings', ], А в phpunit.xml подставляешь свою ENV переменную
Antonio
'api' => [ config('route.api-ratelimit'), 'bindings', ], - это ошибка
invariance
уверен?
Antonio
да
invariance
ну и какая ошибка?
Antonio
expression is not allowed as field default state
ThunderAL
\Illuminate\Routing\Middleware\ThrottleRequests handle($request, Closure $next, $maxAttempts = 60, $decayMinutes = 1)
Диего
в RouteServiceProvider -> mapApiRoutes присваивай middleware в зависимости от окружения
Диего
а в кернель добавь middleware группу
Диего
api-dev
Диего
как то вот
ThunderAL
пили $middlewareGroupsDefault $middlewareGroupsProduction $middlewareGroups = env('APP_DEBUG', false) ? $middlewareGroupsDefault : array_merge($middlewareGroupsDefault, $middlewareGroupsProduction)
Диего
в свойствах класса можно делать условия?
Диего
ну это к Alexandr вопрос )
Antonio
ну в моей вселенной точно
Диего
в моей тоже, может в кернель есть методы
Диего
для динамичного использования
Antonio
бред
У тебя PHP нормально воспримет такой код? class A { public $v = (1=1)?1:0; }
ThunderAL
*==
invariance
нет лол
ThunderAL
$ php -v
Antonio
ну вот,а вы мне даже костыли предлагали сделать по такому принципу =)
invariance
ну вот,а вы мне даже костыли предлагали сделать по такому принципу =)
я не предлагал делать костыли по такому методу
invariance
кек
invariance
я предлагал вариант, который сам юзаю
invariance
вполне себе
Диего
не хочешь не буду ниче больше советовать )
invariance
вот это по сути задание динамического свойства в качестве дефолта для переменной
в каком месте это динамическое свойство, если это переменная конфигурации
invariance
о_О
invariance
конфиг не должен меняться во время исполнения
invariance
он и не меняется
Antonio
но для PHP это вызов функции config() О_о
ThunderAL
через провайдер — самый лучший способ, но мб будет сложно всё остальное это или почти костыли или вообще хрень
ThunderAL
все данные о мидлверах должны быть в нужном файле ВСЕГДА вынесение в другие места тебе грозит утопанием в говнокоде и магическом поведением программы
Диего
провайдеры на то и даны, что бы инициализировать тебе лару как тебе нужно
Antonio
пробуй через роут сервис провайдер
сейчас буду посмотреть, ну не успеваю я сразу все варианты рассмотреть. Сначала начал с самых элементарных
Диего
не смотри другие )
ThunderAL
ага)
ThunderAL
мой с тернарным опереатором это тупой, временный и быстрый способ через мидлвэр — на века
Диего
😕
ThunderAL
иди в App\Providers\AppServiceProvider и твори!
Antonio
сейчас я там наТВАРЬю