Оптимізація дій за допомогою Fluent Class у Laravel

4
Перекладено ШІ
Оригінал: Laravel News
Оновлено: 15 січня, 2026
Вам цікаво, як покращити обробку даних у вашому Laravel-додатку? У нашому новому блозі ми розглянемо переваги використання класу Fluent для спрощення валідації та елегантного перетворення даних. Читайте далі, щоб дізнатися, як цей підхід може змінити вашу кодову базу!

Клас Fluent у Laravel надає потужні можливості для трансформації даних у класах дій. Перетворюючи масиви на екземпляри Fluent під час передачі атрибутів до дій, ви отримуєте безліч переваг для свого коду.

Хоча масиви забезпечують простий спосіб передачі даних до дій, екземпляри Fluent пропонують зручні методи трансформації та елегантні варіанти валідації. Це особливо корисно під час роботи зі складними даними або реалізації умовної логіки валідації.

Ось базова реалізація:

namespace App\Actions;
 
use App\Models\Product;
use Illuminate\Support\Fluent;
 
class CreateProduct
{
    // Використовуючи Fluent замість масиву
    public function execute(Fluent $data): Product
    {
        return Product::create([
            'name' => $data->name,
            'description' => $data->description,
            'categories' => $data->array('categories'),
            'status' => $data->enum('status', ProductStatus::class),
            'published_at' => $data->date('published_at')
        ]);
    }
}
 
// Використання в тестах
it('can create a new product', function() {
    $product = (new CreateProduct)->execute(new Fluent([
        'name' => 'Преміум навушники',
        'description' => 'Бездротові навушники з шумозаглушенням',
        'categories' => ['електроніка', 'аудіо'],
        'status' => ProductStatus::Active,
        'published_at' => now()
    ]));
});

Підхід Fluent особливо вражає під час реалізації складної валідації з умовними правилами:

class PaymentValidator
{
    public function validate(array $data)
    {
        $validator = Validator::make($data, [
            'method' => 'required|string',
            'amount' => 'required|numeric|min:1'
        ]);
 
        $validator->sometimes(
            ['account_name', 'routing_number'],
            'required',
            function (Fluent $input) {
                return $input->method === 'bank_transfer';
            }
        );
 
        $validator->sometimes(
            'card_verification',
            'required|size:3',
            function (Fluent $input) {
                return $input->get('method') === 'credit_card' &&
                    $input->get('amount') > 500;
            }
        );
 
        return $validator;
    }
}

Використання екземплярів Fluent надає більш просунутий підхід до обробки даних у ваших діях та валідаціях. Вони слугують універсальним інструментом для трансформацій, зберігаючи при цьому зрозумілість та читабельність коду. Вбудовані доступи та методи трансформації суттєво зменшують обсяг шаблонного коду, роблячи ваші наміри ясними

Популярні

Logomark Logotype

Інтеграція Laravel Socialite з бібліотекою Google Client PHP

Ви хочете навчитися, як інтегрувати Google OAuth у вашому проекті Laravel, використовуючи Socialite? Дізнайтеся, як налаштувати доступ до сервісів Google, таких як Календар, у нашій сьогоднішній статті

Logomark Logotype

"SQLSTATE[HY000] [2002] Connection refused" у Laravel в GitHub Actions

Чи стикалися ви з помилкою «SQLSTATE[HY000] [2002] Connection refused» під час налаштування GitHub Actions для вашого додатку на Laravel? У нашій статті ми розглянемо три поширені причини цієї помилки та надамо рішення для їх усунення. Читайте далі, щоб дізнатися, як ваш CI/CD потік може працювати бездоганно!

Logomark Logotype

Журнал аудиту в Laravel

Хочете забезпечити повну прозорість у своїх Laravel-додатках? Пакет Laravel Audit Log допоможе вам детально відстежувати всі зміни моделей Eloquent та відповідати вимогам регуляторів. Читайте далі, щоб дізнатися, як цей потужний інструмент може підвищити надійність вашого проєкту