Команда Laravel випустила версію 12.45 з JsonApiResource, класом касту AsBinary, помічником для вкладень із хмарного сховища та іншими оновленнями.
Mior Muhammad Zaki додав JsonApiResource, який дозволяє виводити API-ресурси за специфікацією JSON:API замість звичного JsonResource:
use Illuminate\Http\Resources\JsonApi\JsonApiResource;
class UserResource extends JsonApiResource {}
Створювати JSON API-ресурси можна командою make:resource з прапорцем --json-api:
php artisan make:resource PostResource --json-api
Деталі реалізації — Pull Request #57571.
Kacper Pruszyński додав каст AsBinary, який зберігає значення у вигляді бінарних байтів і повертає їх у PHP як рядок:
protected function casts(): array
{
return [
'id' => AsBinary::uuid(isRequired: true),
'public_id' => AsBinary::ulid(), // optional by default
'custom' => AsBinary::of('xor1', false),
];
}
Деталі реалізації — Pull Request #58254.
Philo Hermans додав метод вкладення fromCloudStorage(), який спрощує додавання до листів файлів із хмари:
// Before:
Attachment::fromStorageDisk(Storage::getDefaultCloudDriver(), $attachment->path);
// After:
Attachment::fromCloudStorage($attachment->path);
Деталі реалізації — Pull Request #58201.
Andy Hinkle додав підтримку enum для ключів сесії — тепер можна передавати сам enum замість рядкового значення. Це узгоджується з іншими частинами фреймворка:
enum CheckoutSession: string
{
case Cart = 'checkout.cart';
case ShippingAddress = 'checkout.shipping_address';
case PaymentMethod = 'checkout.payment_method';
}
// Before
session()->put(CheckoutSession::Cart->value, $items);
session()->get(CheckoutSession::Cart->value);
// After (>=12.45)
session()->put(CheckoutSession::Cart, $items);
session()->get(CheckoutSession::Cart);
Деталі реалізації — Pull Request #58241.
За аналогією з підтримкою enum у сесіях, Jack Bayliss додав BackedEnum для ключів кешу:
// Before
Cache::put(AnalyticalGraph::PROFILE->value, $result);
// After
Cache::put(AnalyticalGraph::PROFILE, $result);
Деталі реалізації — Pull Request #58246.
Ali Khosrojerdi додав метод markEmailAsUnverified() як доповнення до markEmailAsVerified() для скидання підтвердження email у записі моделі:
$user->markEmailAsUnverified();
Деталі реалізації — Pull Request #58255.
Додає прапорець
--readableдо командиenv:encrypt, який генерує по-рядковий зашифрований формат: імена змінних залишаються видимими, а значення шифруються. Це дозволяє бачити, які змінні існують, не розкриваючи конфіденційні дані, і полегшує перегляд пул-реквестів — рев'ювери бачать, які змінні додано, видалено або перейменовано, без дешифрування файлу.
Деталі реалізації — Pull Request #58262.
Повний перелік нових можливостей і змін дивіться нижче, а також diff між 12.44.0 та 12.45.0 на GitHub. Наступні нотатки взяті з changelog:
m::close() — @lucasmichot у https://github.com/laravel/framework/pull/58278Arr::array() — @mischasigtermans у https://github.com/laravel/framework/pull/58280--readable до env:encrypt для видимих імен ключів — @mathiasgrimm у https://github.com/laravel/framework/pull/58262BelongsToMany::createOrFirst — @mischasigtermans у https://github.com/laravel/framework/pull/58284nth(), split() і splitIn() — тепер кидають InvalidArgumentException для некоректних параметрів — @mischasigtermans у https://github.com/laravel/framework/pull/58283Str::chopStart() та Str::chopEnd(), щоб не повертали порожній рядок при пустому needle — @mischasigtermans у https://github.com/laravel/framework/pull/58286AsBinary — @plumthedev у https://github.com/laravel/framework/pull/58254persistentFake() та тести — @jackbayliss у https://github.com/laravel/framework/pull/58287@throws \InvalidArgumentException до деяких докблоків — @alipowerful7 у https://github.com/laravel/framework/pull/58289Validator::sometimes() з атрибутами, що містять . — @crynobone у https://github.com/laravel/framework/pull/58291Встановлення Xdebug може бути складним завданням, але в цій статті ми розкриємо, як швидко та просто налаштувати його за допомогою Docker на прикладі Laravel. Дочитайте до кінця, щоб дізнатися, як за кілька хвилин зробити Xdebug вашим надійним помічником у розробці
Чи стикалися ви з помилкою «SQLSTATE[HY000] [2002] Connection refused» під час налаштування GitHub Actions для вашого додатку на Laravel? У нашій статті ми розглянемо три поширені причини цієї помилки та надамо рішення для їх усунення. Читайте далі, щоб дізнатися, як ваш CI/CD потік може працювати бездоганно!
Досліджуйте потужний пакет Intervention Image для PHP, який виводить редагування зображень на новий рівень з оновленою версією 3. Чи готові ви дізнатися, які нові можливості та функції чекають на вас у цьому інструменті