Laravel 10.7 — новая версия популярного PHP-фреймворка
Вышла новая версия Laravel 10.7


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

Заберите ссылку на статью к себе, чтобы потом легко её найти!
Раз уж досюда дочитали, то может может есть желание рассказать об этом месте своим друзьям, знакомым и просто мимо проходящим?
Не надо себя сдерживать! ;)

Старт! Горячий старт на просторы интернета
Старт! Горячий старт на просторы интернета
Старт! Меню