PHP السمات
تدعم Queuety عدد PHP 8 سمات لتسجيل المعالجات دون إعداد. أضف تعليقات توضيحية إلى فئات المعالجات باستخدام #[QueuetyHandler]، ثم استخدم الاكتشاف التلقائي لتسجيلها كلها دفعة واحدة.
السمة #[QueuetyHandler]
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 حاليًا |
الاكتشاف التلقائي
افحص دليلًا بحثًا عن فئات المعالجات المشروحة وسجّلها كلها:
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) |
+-----------------------------------+----------+------------+
أفضل الممارسات
سجّل المعالجات عند تهيئة الإضافة:
add_action( 'plugins_loaded', function () {
Queuety::discover_handlers(
__DIR__ . '/src/Handlers',
'MyPlugin\\Handlers'
);
} );
يحل هذا محل استدعاءات Queuety::register() اليدوية لكل معالج. وسيُكتشف المعالج الجديد تلقائيًا عند إضافة فئة تحمل السمة إلى الدليل.
الجمع بين التسجيل التلقائي واليدوي
تتعايش المعالجات المكتشفة تلقائيًا والمعالجات المسجّلة يدويًا في السجل نفسه. يمكنك استخدام النهجين في المشروع نفسه:
// 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 );