PHP atributai
Queuety palaiko PHP 8 atributus, skirtus apdorojimo funkcijoms registruoti be konfigūracijos. Pažymėkite apdorojimo funkcijų klases #[QueuetyHandler] ir užregistruokite jas visas iš karto naudodami automatinį aptikimą.
Atributas #[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 [];
}
}
Atributo parametrai:
| Parametras | Tipas | Numatytoji reikšmė | Aprašymas |
|---|---|---|---|
name |
string |
(privaloma) | Apdorojimo funkcijos pavadinimas, naudojamas iškvietimui |
queue |
string |
'default' |
Numatytoji šios apdorojimo funkcijos eilė |
max_attempts |
int |
3 |
Didžiausias vykdymų skaičius, kol užduotis bus paslėpta |
needs_wordpress |
bool |
false |
Išsaugoma atribute; Queuety šiuo metu jos neskaito |
Automatinis aptikimas
Nuskaitykite katalogą, ieškodami atributais pažymėtų apdorojimo funkcijų klasių, ir užregistruokite jas visas:
use Queuety\Queuety;
$count = Queuety::discover_handlers(
__DIR__ . '/handlers', // directory to scan
'MyPlugin\\Handlers' // PSR-4 namespace prefix
);
// $count = number of handlers registered
Tai nuskaito kiekvieną .php failą kataloge ir jo pakatalogiuose, pagal vardų srities priešdėlį ir failo kelią nustato kiekvienos klasės pavadinimą, įkelia ją per automatinio įkėlimo mechanizmą ir užregistruoja klases, turinčias atributą #[QueuetyHandler] bei įgyvendinančias Handler, Step arba Contracts\Job.
Automatinis aptikimas per CLI
# Preview discovered handlers
wp queuety discover /path/to/handlers MyPlugin\\Handlers
# Discover and register
wp queuety discover /path/to/handlers MyPlugin\\Handlers --register
Pavyzdinė išvestis:
+-----------------------------------+----------+------------+
| class | type | name |
+-----------------------------------+----------+------------+
| MyPlugin\Handlers\SendEmailHandler | handler | send_email |
| MyPlugin\Handlers\SyncDataHandler | handler | sync_data |
| MyPlugin\Handlers\BuildPromptStep | step | (none) |
+-----------------------------------+----------+------------+
Geriausia praktika
Registruokite apdorojimo funkcijas inicijuodami savo įskiepį:
add_action( 'plugins_loaded', function () {
Queuety::discover_handlers(
__DIR__ . '/src/Handlers',
'MyPlugin\\Handlers'
);
} );
Taip nebereikia rankiniu būdu kviesti Queuety::register() kiekvienai apdorojimo funkcijai. Į katalogą įtraukus klasę su atributu, naujos apdorojimo funkcijos aptinkamos automatiškai.
Derinimas su rankine registracija
Automatiškai aptiktos ir rankiniu būdu užregistruotos apdorojimo funkcijos gali būti tame pačiame registre. Tame pačiame projekte galite taikyti abu būdus:
// 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 );