/
githubmirror
/
framework
Обзор
Документация
Войти
/
githubmirror
/
framework
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
13.x
src/Illuminate/Http/Concerns/CanBePrecognitive.php
67 строк
2 KB
Markus Heinemann
allow precognitive requests to use wildcards with array validations (#57437) (#57486)
09 янв 2026, 19:44
Не верифицирован
09 янв 2026, 19:44
dc77c09
Код
Авторство
О чём код?
<?php namespace Illuminate\Http\Concerns; use Illuminate\Support\Collection; trait CanBePrecognitive { /** * Filter the given array of rules into an array of rules that are included in precognitive headers. * * @param array $rules * @return array */ public function filterPrecognitiveRules($rules) { if (! $this->headers->has('Precognition-Validate-Only')) { return $rules; } $validateOnly = explode(',', $this->header('Precognition-Validate-Only')); return (new Collection($rules)) ->filter(fn ($rule, $attribute) => $this->shouldValidatePrecognitiveAttribute($attribute, $validateOnly)) ->all(); } /** * Determine if the given attribute should be validated. * * @param string $attribute * @param array $validateOnly * @return bool */ protected function shouldValidatePrecognitiveAttribute($attribute, $validateOnly) { foreach ($validateOnly as $pattern) { $regex = '/^'.str_replace('\*', '[^.]+', preg_quote($pattern, '/')).'$/'; if (preg_match($regex, $attribute)) { return true; } } return false; } /** * Determine if the request is attempting to be precognitive. * * @return bool */ public function isAttemptingPrecognition() { return $this->header('Precognition') === 'true'; } /** * Determine if the request is precognitive. * * @return bool */ public function isPrecognitive() { return $this->attributes->get('precognitive', false); } }