PHP Atributos
Queuety oferece 8 atributos PHP para registrar handlers sem configuração. Anote suas classes de handler com #[QueuetyHandler] e use a descoberta automática para registrá-las todas de uma vez.
O atributo #[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 [];
}
}
Parâmetros do atributo:
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
name |
string |
(obrigatório) | Nome do handler usado para o despacho |
queue |
string |
'default' |
Fila padrão deste handler |
max_attempts |
int |
3 |
Número máximo de execuções antes de o trabalho ser arquivado |
needs_wordpress |
bool |
false |
Armazenado no atributo; Queuety não o lê atualmente |
Descoberta automática
Examine um diretório em busca de classes de handler anotadas e registre todas:
use Queuety\Queuety;
$count = Queuety::discover_handlers(
__DIR__ . '/handlers', // directory to scan
'MyPlugin\\Handlers' // PSR-4 namespace prefix
);
// $count = number of handlers registered
Isso examina cada arquivo .php no diretório e em seus subdiretórios, deriva o nome de cada classe do prefixo do namespace e do caminho do arquivo, carrega-a pelo autoloader e registra as classes que têm o atributo #[QueuetyHandler] e implementam Handler, Step ou Contracts\Job.
Descoberta automática 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
Exemplo de saída:
+-----------------------------------+----------+------------+
| class | type | name |
+-----------------------------------+----------+------------+
| MyPlugin\Handlers\SendEmailHandler | handler | send_email |
| MyPlugin\Handlers\SyncDataHandler | handler | sync_data |
| MyPlugin\Handlers\BuildPromptStep | step | (none) |
+-----------------------------------+----------+------------+
Prática recomendada
Registre handlers durante a inicialização do seu plugin:
add_action( 'plugins_loaded', function () {
Queuety::discover_handlers(
__DIR__ . '/src/Handlers',
'MyPlugin\\Handlers'
);
} );
Isso substitui chamadas manuais a Queuety::register() para cada handler. Os novos handlers são detectados automaticamente quando você adiciona ao diretório uma classe com o atributo.
Combinar com o registro manual
Handlers descobertos automaticamente e handlers registrados manualmente coexistem no mesmo registro. Você pode usar as duas abordagens no mesmo projeto:
// 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 );