Attributs PHP
Queuety prend en charge les attributs PHP 8 pour l’enregistrement de gestionnaires sans configuration. Annotez vos classes de gestionnaire avec #[QueuetyHandler] et utilisez la découverte automatique pour les enregistrer toutes en une fois.
L’attribut #[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 [];
}
}
Paramètres de l’attribut :
| Paramètre | Type | Valeur par défaut | Description |
|---|---|---|---|
name |
string |
(obligatoire) | Nom du gestionnaire utilisé pour le déclenchement |
queue |
string |
'default' |
File d’attente par défaut pour ce gestionnaire |
max_attempts |
int |
3 |
Nombre maximal d’exécutions avant la mise en réserve du travail |
needs_wordpress |
bool |
false |
Stocké dans l’attribut ; Queuety ne le lit pas actuellement |
Découverte automatique
Parcourez un répertoire pour trouver les classes de gestionnaire annotées et les enregistrer toutes :
use Queuety\Queuety;
$count = Queuety::discover_handlers(
__DIR__ . '/handlers', // directory to scan
'MyPlugin\\Handlers' // PSR-4 namespace prefix
);
// $count = number of handlers registered
Cette opération parcourt chaque fichier .php du répertoire et de ses sous-répertoires, déduit le nom de chaque classe à partir du préfixe de l’espace de noms et du chemin du fichier, le charge via votre chargeur automatique, puis enregistre les classes portant l’attribut #[QueuetyHandler] et implémentant Handler, Step ou Contracts\Job.
Découverte automatique 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
Exemple de sortie :
+-----------------------------------+----------+------------+
| class | type | name |
+-----------------------------------+----------+------------+
| MyPlugin\Handlers\SendEmailHandler | handler | send_email |
| MyPlugin\Handlers\SyncDataHandler | handler | sync_data |
| MyPlugin\Handlers\BuildPromptStep | step | (none) |
+-----------------------------------+----------+------------+
Bonne pratique
Enregistrez les gestionnaires lors de l’initialisation de votre extension :
add_action( 'plugins_loaded', function () {
Queuety::discover_handlers(
__DIR__ . '/src/Handlers',
'MyPlugin\\Handlers'
);
} );
Cela remplace les appels manuels à Queuety::register() pour chaque gestionnaire. Les nouveaux gestionnaires sont détectés automatiquement lorsque vous ajoutez au répertoire une classe portant l’attribut.
Combiner avec l’enregistrement manuel
Les gestionnaires découverts automatiquement et ceux enregistrés manuellement coexistent dans le même registre. Vous pouvez utiliser les deux méthodes dans le même projet :
// 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 );