PHP Öznitelikleri
Queuety, sıfır yapılandırmayla işleyici kaydı için PHP 8 özniteliğini destekler. İşleyici sınıflarınıza #[QueuetyHandler] açıklamasını ekleyin ve hepsini tek seferde kaydetmek için otomatik keşfi kullanın.
#[QueuetyHandler] özniteliği
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 [];
}
}
Öznitelik parametreleri:
| Parametre | Tür | Varsayılan | Açıklama |
|---|---|---|---|
name |
string |
(gerekli) | Dağıtımda kullanılan işleyici adı |
queue |
string |
'default' |
Bu işleyici için varsayılan kuyruk |
max_attempts |
int |
3 |
Görev gömülmeden önceki en yüksek çalıştırma sayısı |
needs_wordpress |
bool |
false |
Öznitelikte saklanır; Queuety şu anda bunu okumaz |
Otomatik keşif
Açıklama eklenmiş işleyici sınıflarını bulmak ve hepsini kaydetmek için bir dizini tarayın:
use Queuety\Queuety;
$count = Queuety::discover_handlers(
__DIR__ . '/handlers', // directory to scan
'MyPlugin\\Handlers' // PSR-4 namespace prefix
);
// $count = number of handlers registered
Bu işlem, dizindeki ve alt dizinlerindeki tüm .php dosyalarını tarar; ad alanı önekinden ve dosya yolundan her sınıfın adını çıkarır, otomatik yükleyiciniz aracılığıyla yükler ve #[QueuetyHandler] özniteliğini taşıyan ve Handler, Step veya Contracts\Job uygulayan sınıfları kaydeder.
CLI aracılığıyla otomatik keşif
# Preview discovered handlers
wp queuety discover /path/to/handlers MyPlugin\\Handlers
# Discover and register
wp queuety discover /path/to/handlers MyPlugin\\Handlers --register
Örnek çıktı:
+-----------------------------------+----------+------------+
| class | type | name |
+-----------------------------------+----------+------------+
| MyPlugin\Handlers\SendEmailHandler | handler | send_email |
| MyPlugin\Handlers\SyncDataHandler | handler | sync_data |
| MyPlugin\Handlers\BuildPromptStep | step | (none) |
+-----------------------------------+----------+------------+
En iyi uygulama
İşleyicileri eklentinizin başlatma aşamasında kaydedin:
add_action( 'plugins_loaded', function () {
Queuety::discover_handlers(
__DIR__ . '/src/Handlers',
'MyPlugin\\Handlers'
);
} );
Bu, her işleyici için elle yapılan Queuety::register() çağrılarını ortadan kaldırır. Dizine özniteliği taşıyan yeni bir sınıf eklediğinizde işleyiciler otomatik olarak bulunur.
Elle kayıtla birleştirme
Otomatik keşfedilen ve elle kaydedilen işleyiciler aynı kayıt defterinde birlikte bulunabilir. Aynı projede her iki yaklaşımı da kullanabilirsiniz:
// 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 );