PHP Atribut
Queuety mendukung 8 atribut PHP untuk pendaftaran handler tanpa konfigurasi. Beri anotasi pada kelas handler Anda dengan #[QueuetyHandler] dan gunakan penemuan otomatis untuk mendaftarkan semuanya sekaligus.
Atribut #[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 [];
}
}
Parameter atribut:
| Parameter | Tipe | Default | Deskripsi |
|---|---|---|---|
name |
string |
(wajib) | Nama handler yang digunakan untuk pemanggilan |
queue |
string |
'default' |
Antrean default untuk handler ini |
max_attempts |
int |
3 |
Jumlah maksimum eksekusi sebelum job dikubur |
needs_wordpress |
bool |
false |
Disimpan pada atribut; Queuety belum membacanya saat ini |
Penemuan otomatis
Pindai direktori untuk menemukan kelas handler beranotasi dan daftarkan semuanya:
use Queuety\Queuety;
$count = Queuety::discover_handlers(
__DIR__ . '/handlers', // directory to scan
'MyPlugin\\Handlers' // PSR-4 namespace prefix
);
// $count = number of handlers registered
Proses ini memindai setiap file .php di direktori beserta subdirektorinya, menentukan nama setiap kelas dari prefiks namespace dan jalur file, memuatnya melalui autoloader Anda, lalu mendaftarkan kelas yang memiliki atribut #[QueuetyHandler] dan mengimplementasikan Handler, Step, atau Contracts\Job.
Penemuan otomatis melalui CLI
# Preview discovered handlers
wp queuety discover /path/to/handlers MyPlugin\\Handlers
# Discover and register
wp queuety discover /path/to/handlers MyPlugin\\Handlers --register
Contoh keluaran:
+-----------------------------------+----------+------------+
| class | type | name |
+-----------------------------------+----------+------------+
| MyPlugin\Handlers\SendEmailHandler | handler | send_email |
| MyPlugin\Handlers\SyncDataHandler | handler | sync_data |
| MyPlugin\Handlers\BuildPromptStep | step | (none) |
+-----------------------------------+----------+------------+
Praktik terbaik
Daftarkan handler saat inisialisasi plugin Anda:
add_action( 'plugins_loaded', function () {
Queuety::discover_handlers(
__DIR__ . '/src/Handlers',
'MyPlugin\\Handlers'
);
} );
Ini menggantikan pemanggilan manual Queuety::register() untuk setiap handler. Handler baru akan otomatis terdeteksi saat Anda menambahkan kelas dengan atribut tersebut ke direktori.
Menggabungkan dengan pendaftaran manual
Handler yang ditemukan otomatis dan handler yang didaftarkan secara manual dapat digunakan bersama dalam registry yang sama. Anda dapat menggunakan kedua pendekatan dalam proyek yang sama:
// 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 );