Laravel World
8.46K subscribers
1.25K photos
25 videos
9 files
2.08K links
Laravel & PHP news
Download Telegram
До релиза Laravel 9 остается всего около месяца.

Что известно о новой версии фреймворка на данный момент:
— минимальные требования: PHP 8+
— анонимные миграции по умолчанию
— подключен Symfony Mailer
— переработанная страница ошибок
— Query Builder Interface
Релиз Composer 2.2
https://blog.packagist.com/composer-2-2/

Минимальные требования увеличены до PHP >=7.2.5. По статистике, менее 10% пользователей композера имеют более старую версию языка.

Увеличена производительность. Заметно уменьшено использование памяти и процессора. В некоторых случаях, до 90%.

Новый параметр конфигурации allow-plugins для повышения безопасности — не позволяет пакетам запускаться во время установки.
https://getcomposer.org/doc/06-config.md#allow-plugins

Напоминаю, что у нас есть дружелюбный Laravel-чат, где можно обсудить наши новости и получить помощь более опытных товарищей. Присоединяйтесь!

@laravel_web
В настоящее время аксессоры и мутаторы добавляются к модели путем определения методов get{Foo}Attribute и set{Foo}Attribute на модели. Эти условно названные методы затем используются, когда разработчики пытаются получить доступ к свойству $model->foo на модели.

Новый способ определения поведения доступа к атрибутам / мутации в одном методе, отмеченном типом возврата Illuminate\Database\Eloquent\Casts\Attribute. В сочетании с “именованными аргументами” PHP 8+, это позволит разработчикам определять поведение доступа и мутации в одном методе с беглым, современным синтаксисом, возвращая экземпляр Illuminate\Database\Eloquent\Casts\Attribute.

https://medium.com/@volodymyrafanasiev/новый-способ-записи-гетеров-и-сеттеров-в-laravel-9-2407d248c44f
Релиз Laravel Roach
Адаптер для Roach — мощного инструмента веб-скрапинга, аналога питоновского Scrapy.
https://github.com/roach-php/laravel
Если вам нужно промаппить постраничные данные, то используйте метод through, а не map. Map удалит экземпляр пагинации и вернёт коллекцию, в то
время как through работает с самими данными.
👍16
👍6
Создавайте столько угодно дисков. И вместо
Storage::get('/invoices/1.jpg')
используйте
Storage::disk('invoices')->get('1.jpg');
Наглядно и удобно в поддержке.
👍44👎6
Конструктор запросов имеет метод explain(), который позволяет мгновенно получить план выполнения запроса. Полезно при отладке медленных запросов.
👍121
Вместо использования where() в маршрутах, вы можете задать глобальные паттерны в RouteServiceProvider.
👍127👎6
Релиз Laravel 8.78
https://github.com/laravel/framework/releases/tag/v8.78.0

Также зарелизено:
— Breeze 1.6.1
— Dusk 6.20
— Horizon 5.7.18
— Jetstream 2.5.1
— Octane 1.2.2
— Telescope 4.6.10
👍28
Maduro сделал новый формат вывода команды route:list в Laravel 9.

https://github.com/laravel/framework/pull/40269
👍183👎5
В Laravel есть несколько интересных скрытых трейтов. Например Conditionable, который позволяет использовать методы when и unless в вашем классе. Методы принимают value, callback и default.
Когда условие when истинно, то будет запущен коллбек и возвращён его результат. Если ложь — то вернёт $this или дефолтное значение, если оно указано.
👍100👎3
В Laravel 8.79 добавят полнотекстовой поиск для MySQL и PostgreSQL. Разумеется предварительно нужно создать соответствующие индексы.
👍107
Laravel 9 будет требовать PHP 8. А он уже стоит на ваших серверах?
Anonymous Poll
59%
Да
41%
Нет
👍76👎10
Начата работа над Laravel 10
👍104
Вышла обновленная версия Ignition, которая будет дефолтной страницей ошибок в Laravel 9. Но вы можете уже сейчас установить её для своих проектов на Laravel 8.
https://freek.dev/2168-ignition-the-most-beautiful-error-page-for-laravel-and-php-got-a-major-redesign
👍21
Релиз Laravel 8.80
https://github.com/laravel/framework/releases/tag/v8.80.0

Из интересного:

— Возможность указывать общий Контроллер для группы маршрутов:
Route::controller(OrderController::class)->group(function () {
Route::get('/orders/{id}', 'show');
Route::post('/orders', 'store');
});

—Новый метод сортировки ключей по колбэку sortKeysUsing():
$sorted = $collection->sortKeysUsing('strnatcasecmp');

— Метод Blade::render() для рендера строк:
Blade::render('Hello, {{ $name }}', ['name' => 'Claire']);
// Returns 'Hello, Claire'

Blade::render('@if($foo) Foo @else Bar @endif', ['foo' => true]);
// Returns 'Foo '
👍64