Команда 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Чи стикалися ви з помилкою «SQLSTATE[HY000] [2002] Connection refused» під час налаштування GitHub Actions для вашого додатку на Laravel? У нашій статті ми розглянемо три поширені причини цієї помилки та надамо рішення для їх усунення. Читайте далі, щоб дізнатися, як ваш CI/CD потік може працювати бездоганно!
Досліджуйте новий пакет Data Model для PHP, який спрощує процес гідратації об'єктів без зайвих складнощів! Дізнайтеся, як впровадження типобезпечних об'єктів може революціонізувати ваш підхід до розробки, читаючи нашу статтю
Laravel пропонує потужні можливості повнотекстового пошуку за допомогою методів whereFullText та orWhereFullText, що дозволяють здійснювати складні запити до бази даних. Дізнайтеся, як реалізувати ефективний пошук для вашого блогу чи системи управління контентом