- 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