PHP-attributter
Queuety understøtter PHP 8-attributter til registrering af handlere uden konfiguration. Annotér dine handlerklasser med #[QueuetyHandler], og brug automatisk registrering til at registrere dem alle på én gang.
Attributten #[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 [];
}
}
Attributparametrene:
| Parameter | Type | Standard | Beskrivelse |
|---|---|---|---|
name |
string |
(påkrævet) | Handlernavn, der bruges til afsendelse |
queue |
string |
'default' |
Standardkø for denne handler |
max_attempts |
int |
3 |
Maksimalt antal kørsler, før jobbet lægges til side |
needs_wordpress |
bool |
false |
Gemmes på attributten; Queuety læser den ikke i øjeblikket |
Automatisk registrering
Gennemgå en mappe for annoterede handlerklasser, og registrér dem alle:
use Queuety\Queuety;
$count = Queuety::discover_handlers(
__DIR__ . '/handlers', // directory to scan
'MyPlugin\\Handlers' // PSR-4 namespace prefix
);
// $count = number of handlers registered
Dette gennemgår hver .php-fil i mappen og dens undermapper, udleder hvert klassenavn fra namespace-præfikset og filstien, indlæser klassen via din autoloader og registrerer klasser, der har attributten #[QueuetyHandler] og implementerer Handler, Step eller Contracts\Job.
Automatisk registrering via CLI
# Preview discovered handlers
wp queuety discover /path/to/handlers MyPlugin\\Handlers
# Discover and register
wp queuety discover /path/to/handlers MyPlugin\\Handlers --register
Eksempel på output:
+-----------------------------------+----------+------------+
| class | type | name |
+-----------------------------------+----------+------------+
| MyPlugin\Handlers\SendEmailHandler | handler | send_email |
| MyPlugin\Handlers\SyncDataHandler | handler | sync_data |
| MyPlugin\Handlers\BuildPromptStep | step | (none) |
+-----------------------------------+----------+------------+
Bedste praksis
Registrér handlere under initialisering af dit plugin:
add_action( 'plugins_loaded', function () {
Queuety::discover_handlers(
__DIR__ . '/src/Handlers',
'MyPlugin\\Handlers'
);
} );
Dette erstatter manuelle kald til Queuety::register() for hver handler. Nye handlere registreres automatisk, når du føjer en klasse med attributten til mappen.
Kombination med manuel registrering
Automatisk fundne og manuelt registrerede handlere kan sameksistere i det samme register. Du kan bruge begge fremgangsmåder i det samme projekt:
// 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 );