انتقل إلى المحتوى

PHP السمات

تدعم Queuety عدد PHP 8 سمات لتسجيل المعالجات دون إعداد. أضف تعليقات توضيحية إلى فئات المعالجات باستخدام #[QueuetyHandler]، ثم استخدم الاكتشاف التلقائي لتسجيلها كلها دفعة واحدة.

السمة #[QueuetyHandler]

PHP
use Queuety\Handler;
use Queuety\Attributes\QueuetyHandler;

#[QueuetyHandler( name: 'send_email', queue: 'emails', max_attempts: 5 )]
class SendEmailHandler implements Handler {
    public function handle( array $payload ): void {
        wp_mail( $payload['to'], $payload['subject'], $payload['body'] );
    }

    public function config(): array {
        return [];
    }
}

معلمات السمة:

المعلمة النوع الافتراضي الوصف
name string (مطلوب) اسم المعالج المستخدم للتوجيه
queue string 'default' قائمة الانتظار الافتراضية لهذا المعالج
max_attempts int 3 الحد الأقصى لعدد مرات التشغيل قبل دفن المهمة
needs_wordpress bool false تُخزّن في السمة؛ ولا يقرأها Queuety حاليًا

الاكتشاف التلقائي

افحص دليلًا بحثًا عن فئات المعالجات المشروحة وسجّلها كلها:

PHP
use Queuety\Queuety;

$count = Queuety::discover_handlers(
    __DIR__ . '/handlers',  // directory to scan
    'MyPlugin\\Handlers'    // PSR-4 namespace prefix
);
// $count = number of handlers registered

يفحص هذا كل ملفات .php في الدليل وأدلته الفرعية، ويستنتج اسم كل فئة من بادئة مساحة الاسم ومسار الملف، ثم يحمّلها عبر أداة التحميل التلقائي لديك، ويسجّل الفئات التي تحمل السمة #[QueuetyHandler] وتنفّذ Handler أو Step أو Contracts\Job.

الاكتشاف التلقائي عبر CLI

سطر الأوامر
# Preview discovered handlers
wp queuety discover /path/to/handlers MyPlugin\\Handlers

# Discover and register
wp queuety discover /path/to/handlers MyPlugin\\Handlers --register

مثال على المخرجات:

الكود
+-----------------------------------+----------+------------+
| class                             | type     | name       |
+-----------------------------------+----------+------------+
| MyPlugin\Handlers\SendEmailHandler | handler  | send_email |
| MyPlugin\Handlers\SyncDataHandler  | handler  | sync_data  |
| MyPlugin\Handlers\BuildPromptStep  | step     | (none)     |
+-----------------------------------+----------+------------+

أفضل الممارسات

سجّل المعالجات عند تهيئة الإضافة:

PHP
add_action( 'plugins_loaded', function () {
    Queuety::discover_handlers(
        __DIR__ . '/src/Handlers',
        'MyPlugin\\Handlers'
    );
} );

يحل هذا محل استدعاءات Queuety::register() اليدوية لكل معالج. وسيُكتشف المعالج الجديد تلقائيًا عند إضافة فئة تحمل السمة إلى الدليل.

الجمع بين التسجيل التلقائي واليدوي

تتعايش المعالجات المكتشفة تلقائيًا والمعالجات المسجّلة يدويًا في السجل نفسه. يمكنك استخدام النهجين في المشروع نفسه:

PHP
// Auto-discover the bulk of handlers
Queuety::discover_handlers( __DIR__ . '/handlers', 'MyPlugin\\Handlers' );

// Manually register a handler without the attribute
Queuety::register( 'legacy_handler', LegacyHandler::class );