Rumah >pembangunan bahagian belakang >tutorial php >Rantai giliran bersih dengan integrasi enum Laravel ' s

Rantai giliran bersih dengan integrasi enum Laravel ' s

Johnathan Smith
Johnathan Smithasal
2025-03-10 11:53:11832semak imbas

Cleaner Queue Chains with Laravel's Enum Integration

Laravel kini menyokong penggunaan enum dengan nilai -nilai sandaran secara langsung dalam kaedah fasad bas

, tanpa mengakses atribut onQueue secara manual penghitungan. Peningkatan ini mewujudkan kod yang lebih bersih dan lebih ekspresif apabila mengendalikan rantai kerja dan beratur. value

Peningkatan ini amat berguna apabila membina saluran paip kerja yang kompleks yang perlu diarahkan kepada barisan yang berbeza berdasarkan keutamaan, keperluan sumber, atau logik perniagaan.

use App\Enums\QueueType;

// 直接使用枚举,无需 ->value
Bus::chain($jobs)
    ->onQueue(QueueType::Background)
    ->dispatch();
Berikut adalah contoh sebenar pelaksanaan sistem pemprosesan dokumen:

<?php namespace App\Enums;

enum ProcessingQueue: string
{
    case Immediate = 'realtime';
    case Standard = 'default';
    case Batch = 'batch-process';
    case LowPriority = 'low-priority';
}

namespace App\Services;

use App\Enums\ProcessingQueue;
use App\Jobs\ProcessDocument;
use App\Jobs\GenerateThumbnail;
use App\Jobs\ExtractMetadata;
use App\Jobs\NotifyUser;
use App\Models\Document;
use Illuminate\Support\Facades\Bus;

class DocumentProcessor
{
    public function process(Document $document, bool $isPriority = false)
    {
        $queue = $isPriority
            ? ProcessingQueue::Immediate
            : ProcessingQueue::Standard;

        Bus::chain([
            new ProcessDocument($document),
            new ExtractMetadata($document),
            new GenerateThumbnail($document),
            new NotifyUser($document->user, 'Document processing complete')
        ])
        ->onQueue($queue)
        ->dispatch();

        return $document;
    }

    public function batchProcess(array $documentIds)
    {
        foreach ($documentIds as $id) {
            $document = Document::find($id);

            Bus::chain([
                new ProcessDocument($document),
                new GenerateThumbnail($document)
            ])
            ->onQueue(ProcessingQueue::Batch)
            ->dispatch();
        }
    }
}
Peningkatan ini memudahkan pelaksanaan giliran sambil mengekalkan keselamatan jenis dan meningkatkan kebolehbacaan kod.

Atas ialah kandungan terperinci Rantai giliran bersih dengan integrasi enum Laravel ' s. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn