Laravel World
8.47K subscribers
1.25K photos
25 videos
9 files
2.08K links
Laravel & PHP news
Download Telegram
Релиз Laravel 8.60
Откатили фишку с добавлением адреса для сброса пароля в toMailCallback, так как это ломало некоторые приложения, в том числе Нову.
В большинстве случаях в качестве административной панели мы используем Laravel Nova. И всё бы ничего если бы на одном из проектов, заказчик не захотел локализацию всей админки для модераторов из разных стран, с возможностью добавления языков.

https://habr.com/ru/post/577088/
Релиз Laravel 8.61
Основная фишка новой версии — тест-методы assertModelExists и assertModelMissing для проверки существования модели в базе данных.
https://laravel-news.com/laravel-8-61-0
Livewire: v2.6
Вышла новая версия, содержащая огромное количество нововведений. Автор пакета, Caleb Porzio, всё подробно расписал в отдельной статье
https://laravel-news.com/livewire-v2-6-0
Стратегии уменьшения количества запросов в Laravel-приложении
https://freek.dev/2075-strategies-for-decreasing-the-number-of-queries-in-a-laravel-app
Рефакторинг функции обратного вызова
Совет дня от Povilas Korop
Если используете один и тот же колбэк несколько раз, то вынесите его в отдельную переменную. Даже если используете его всего один раз — вынесите для лучшей читаемости кода.
Symfony Mailer официально заменил SwiftMailer в грядущем Laravel 9
Но есть несколько критических изменений, подробнее о них в блоке «Breaking changes», по ссылке:
https://github.com/laravel/framework/pull/38481
Обычно в блогах идентификатор и слаг являются частью URL-адресов сообщений. Например, hello-world.test/blog/1/foo. По некоторым причинам иногда приходится изменять заголовок, что весьма проблематично, если вы уже поделились своим сообщением в социальных сетях, поскольку URL-адрес будет поврежден. Расскажу как решить эту проблему.
https://benjamincrozat.com/en/blog/hXD0b8/how-to-make-unbreakable-urls-laravel-project
Как лимитировать количество результатов в Eloquent-запросе с помощью метода limit() и как сделать пагинацию с помощью метода simplePaginate().
https://www.digitalocean.com/community/tutorials/how-to-limit-and-paginate-query-results-in-laravel-eloquent
Использование макросов Laravel - мощный способ расширить дефолтное поведение основных классов в Laravel, таких как Collections, Stringables и Reponses. В этой статье рассказывается, как эти макросы работают под капотом.
https://www.jeroenvanrensen.nl/blog/laravel-macros
Не обязательно регистрировать мидлвар
Совет дня
Если у вас есть мидлвар, который нужно применить к определенному маршруту, то вы можете передать его прямо в маршрут без регистрации в кернел-файле.
Наболело: что выбрать — Битрикс или Laravel? Мнение руководителя digital-компании

Мы часто доказываем клиенту, что выбор распространенной в России системы 1С-Битрикс — плохая идея для больших и нестандартных проектов. Но есть задачи, которые он решает хорошо. Я решил изложить свою позицию в одной статье.

Чаще всего нам поручают создание проектов с нестандартной логикой, стартапов, интегрированных решений и сайтов с высокой посещаемостью. Поэтому наша основная платформа для разработки — это связка из Vue.js на фронтенде и PHP-фреймворка Laravel на бэкенде. Наше «поэтому» часто оказывается неочевидным для заказчика. Значит, нужны пояснения.

https://vc.ru/services/293486-nabolelo-chto-vybrat-bitriks-ili-laravel-mnenie-rukovoditelya-digital-kompanii
Похоже Тейлор сливает Lumen. На вопрос, стоит ли сегодня его использовать, он ответил отрицательно.

Также он отметил, что Laravel и Lumen на Octane будут иметь примерно одинаковую скорость. Так как преимущество Lumen в скорости заключалось в меньших накладных расходах на начальную загрузку. А преимущество Octane — отсутствие накладных расходов на начальную загрузку.
Обнаружение проблем n+1 через лотерейный подход, то есть запускаем проверку не каждый раз, а с некоторым шансом. Также как сделана в Laravel очистка сессий.
https://timacdonald.me/introducing-lazy-loading-prevention-into-an-existing-laravel-application/
Релиз Laravel 8.62
Множество изменений, накопившихся за две недели.
https://github.com/laravel/framework/releases/tag/v8.62.0

Из основного:

— новый метод $request->collect() для получения данных из входящего запроса в виде коллекции.
https://laravel.com/docs/8.x/requests#retrieving-input

— анонимные index компоненты для сбора всех компонентов шаблона в одном каталоге.
https://laravel.com/docs/8.x/blade#anonymous-index-components

— резервные шаблоны 4xx.blade.php (ошибки клиента) и 5xx.blade.php (ошибки сервера) для серий кодов состояний HTTP, если не существует соответствующей страницы для определенного кода.
https://laravel.com/docs/8.x/errors#fallback-http-error-pages
Ресурсы для API в Laravel

Вы узнаете, что такое Ресурсы и как их использовать для API в Laravel-приложениях.

Ресурсы (Resources) — дополнительный слой поверх Eloquent-моделей. Они позволяют поддерживать единый формат возвращаемых данных. Плюс позволяют отсекать лишние или секретные данные, например, пароли и токены.

https://laravel.demiart.ru/laravel-resources/
Начиная с этой недели, у новых Laravel-приложений в базовом классе TestCase будет трейт LazilyRefreshDatabase.

И теперь вам больше не нужно использовать трейт RefreshDatabase в ваших тестах.

Новый трейт будет «лениво» обновлять базу данных, когда тест в первый раз пытается к ней обратится.

Существующие приложения могут по желанию добавить этот трейт в свой базовый тестовый класс.
Релиз Xdebug 3.1
Добавлена поддержка PHP 8.1. Добавлены функции сжатия файлов для трассировки и профилирования. Новые функции xdebug_notify() и xdebug_connect_to_client() и xdebug_info().
Полный список всех изменений: https://xdebug.org/updates#x_3_1_0
Релиз Laravel 8.63
https://github.com/laravel/framework/releases/tag/v8.63.0

Обратите внимание на новый метод whereBelongsTo(), который автоматически определяет правильные отношения и внешний ключ для указанной модели:
$posts = Post::whereBelongsTo($user)->get();
https://laravel.com/docs/8.x/eloquent-relationships#querying-belongs-to-relationships