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

Rantai giliran bersih dengan integrasi enum Laravel ' s

Johnathan Smith
Lepaskan: 2025-03-10 11:53:11
asal
826 orang telah melayarinya

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();
Salin selepas log masuk
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();
        }
    }
}
Salin selepas log masuk
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 Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan