PHP atribuudid
Queuety toetab PHP 8 atribuuti töötlejate registreerimiseks ilma seadistamiseta. Lisa töötlejaklassidele annotatsioon #[QueuetyHandler] ja registreeri need kõik korraga automaattuvastuse abil.
Atribuut #[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 [];
}
}
Atribuudi parameetrid:
| Parameeter | Tüüp | Vaikeväärtus | Kirjeldus |
|---|---|---|---|
name |
string |
(nõutav) | Väljasaatmisel kasutatav töötleja nimi |
queue |
string |
'default' |
Selle töötleja vaikejärjekord |
max_attempts |
int |
3 |
Töö maksimaalne käivitamiskordade arv enne selle mahapanekut |
needs_wordpress |
bool |
false |
Salvestatakse atribuudis; Queuety seda praegu ei loe |
Automaattuvastus
Otsi kataloogist annotatsiooniga töötlejaklasse ja registreeri need kõik:
use Queuety\Queuety;
$count = Queuety::discover_handlers(
__DIR__ . '/handlers', // directory to scan
'MyPlugin\\Handlers' // PSR-4 namespace prefix
);
// $count = number of handlers registered
See otsib kõigist kataloogi ja selle alamkataloogide .php failidest, tuletab iga klassi nime nimeruumi prefiksi ja failitee põhjal, laadib selle sinu automaatlaaduri kaudu ning registreerib klassid, millel on atribuut #[QueuetyHandler] ja mis rakendavad liidest Handler, Step või Contracts\Job.
Automaattuvastus käsuga CLI
# Preview discovered handlers
wp queuety discover /path/to/handlers MyPlugin\\Handlers
# Discover and register
wp queuety discover /path/to/handlers MyPlugin\\Handlers --register
Näidisväljund:
+-----------------------------------+----------+------------+
| class | type | name |
+-----------------------------------+----------+------------+
| MyPlugin\Handlers\SendEmailHandler | handler | send_email |
| MyPlugin\Handlers\SyncDataHandler | handler | sync_data |
| MyPlugin\Handlers\BuildPromptStep | step | (none) |
+-----------------------------------+----------+------------+
Hea tava
Registreeri töötlejad oma plugina lähtestamisel:
add_action( 'plugins_loaded', function () {
Queuety::discover_handlers(
__DIR__ . '/src/Handlers',
'MyPlugin\\Handlers'
);
} );
See asendab iga töötleja käsitsi tehtavad Queuety::register()-kutsed. Uued töötlejad leitakse automaatselt, kui lisad kataloogi selle atribuudiga klassi.
Käsitsi registreerimisega kombineerimine
Automaatselt tuvastatud ja käsitsi registreeritud töötlejad toimivad samas registris koos. Saad kasutada mõlemat lähenemist samas projektis:
// 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 );