- PHP-фреймворк Laravel выпустил версию 10.7.
- Добавлен метод
pipe()
для слояProcess
- Метод
setValue()
классаValidator
- Проверка наличия вызываемых слушателей событий в тестах.
- Примечания к релизу.
PHP-фреймворк Laravel выпустил версию 10.7
PHP-фреймворк Laravel выпустил версию 10.7 12 апреля 2023 года, включающую новые возможности и улучшения, внесённые различными разработчиками сообщества Laravel.
Одним из заметных дополнений является метод pipe()
в слое Process
, который позволяет выполнять команды последовательно и передавать вывод предыдущей команды на вход следующей.
Другим дополнением является метод setValue()
в классе Validator
, который позволяет разработчикам устанавливать значение заданного атрибута. Кроме того, релиз включает исправления различных ошибок и проблем, о которых сообщало сообщество Laravel.
Давайте подробнее рассмотрим возможности и изменения, представленные в Laravel 10.7.
Добавлен метод pipe()
для слоя Process
Wendell Adriel предоставил метод pipe()
для слоя Process
. Этот метод будет выполнять команды последовательно и передавать вывод предыдущей команды на вход следующей:
$pipe = Process::pipe(function ($pipe) {
$pipe->command('cat test.txt'),
$pipe->command('grep -i "foo"'),
});
$pipe->run()->output(); // "foo"
Это может быть удобно, когда требуется связать результат выполнения группы команд.
Метод setValue()
класса Validator
Joël Harkes предоставил метод setValue()
в классе Validator
для установки значения заданного атрибута. Автор PR дал следующее описание необходимости этого метода:
Для разработки пакетов я хотел бы сделать возможным для правил переопределять данные, чтобы сделать валидацию "безопасной для типов". Сейчас нет возможности эффективно обновить значение в строке. Я могу вызвать
setData()
, но это приведет к полной перезагрузке самих правил, а также к значительному замедлению работы.
// с этим PR:
$this->validator->setValue($attribute, $value);
// раньше: очень медленно!
Arr::set($this->data, $attribute, $value);
$this->validator->setData($this->data);
Если вы хотите узнать больше подробностей, ознакомьтесь с описанием к Pull Request #46716.
Проверка наличия вызываемых слушателей событий в тестах.
Luke Kuzmish предоставил возможность подтверждать вызываемые события слушателей, что ранее было невозможно:
Event::assertListening(
StationAssistanceRequested::class,
CreateDemandWorkOrder::class, // имеет метод __invoke()
);
Подробности см. в выпуске #46652 и Pull Request #46683.
Примечания к релизу.
Полный список новых функций и обновлений можно посмотреть ниже, а разницу между версиями 10.6.0 и 10.7.1 - на GitHub. Следующие примечания к выпуску взяты непосредственно из журнала изменений:
v10.7.1
Изменено
- Изменен метод
Illuminate/Process/Factory::pipe()
. Он будет запускать pipe немедленно (e34ab39)
v10.7.0
Добавлено
- Позволяет использовать
Illuminate/Foundation/Testing/WithFaker
, когда приложение не привязано (#46529) - Позволяет
Event::assertListening
проверять наличие вызываемых слушателей событий (#46683) - Добавлен
Illuminate/Process/Factory::pipe()
(#46527) - Добавлен
Illuminate/Validation/Validator::setValue
(#46716)
Исправлено
- Исправление PHP 8.0 для заданий Closure (#46505)
- Исправление ошибки
preg_split
при наличии слэша в атрибуте вIlluminate/Validation/ValidationData
(#46549) - Исправлена несовместимость
Cache::spy
сCache::get
(#46689) - server command: Исправлен вывод Closing сервера при недействительном
$requestPort
(#46726) - Исправлено вложенное объединение при отсутствии экземпляра
JoinClause
(#46712) - Исправление метода построения запросов
whereBetween
с временными интервалами даты carbon (#46720)
Изменено
- Удаление ненужных параметров в методах
creatable()
/destroyable()
вIlluminate/Routing/PendingSingletonResourceRegistration
(#46677) - Возврат ненулевого кода выхода для не перехваченных исключений (#46541)
Перевод с английского официальных новостей Laravel:
https://laravel-news.com/laravel-10-7-0
Заберите ссылку на статью к себе, чтобы потом легко её найти!
Раз уж досюда дочитали, то может может есть желание рассказать об этом месте своим друзьям, знакомым и просто мимо проходящим?
Не надо себя сдерживать! ;)