PHP attribuutit
Queuety tukee PHP 8 attribuuttia käsittelijöiden rekisteröimiseen ilman määrityksiä. Merkitse käsittelijäluokkasi #[QueuetyHandler]-attribuutilla ja rekisteröi ne kaikki kerralla automaattisen etsinnän avulla.
#[QueuetyHandler]-attribuutti
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 [];
}
}
Attribuutin parametrit:
| Parametri | Tyyppi | Oletus | Kuvaus |
|---|---|---|---|
name |
string |
(pakollinen) | Käsittelijän nimi, jota käytetään kutsun ohjaukseen |
queue |
string |
'default' |
Tämän käsittelijän oletusjono |
max_attempts |
int |
3 |
Suoritusten enimmäismäärä ennen kuin työ siirretään hylättyihin |
needs_wordpress |
bool |
false |
Tallennetaan attribuuttiin; Queuety ei lue sitä tällä hetkellä |
Automaattinen etsintä
Etsi merkityt käsittelijäluokat hakemistosta ja rekisteröi ne kaikki:
use Queuety\Queuety;
$count = Queuety::discover_handlers(
__DIR__ . '/handlers', // directory to scan
'MyPlugin\\Handlers' // PSR-4 namespace prefix
);
// $count = number of handlers registered
Tämä etsii hakemistosta ja sen alihakemistoista kaikki .php-tiedostot, johtaa kunkin luokan nimen nimiavaruuden etuliitteestä ja tiedostopolusta, lataa sen automaattisen lataajan kautta ja rekisteröi luokat, joilla on #[QueuetyHandler]-attribuutti ja jotka toteuttavat Handler-, Step- tai Contracts\Job-rajapinnan.
Automaattinen etsintä CLIn kautta
# Preview discovered handlers
wp queuety discover /path/to/handlers MyPlugin\\Handlers
# Discover and register
wp queuety discover /path/to/handlers MyPlugin\\Handlers --register
Esimerkkituloste:
+-----------------------------------+----------+------------+
| class | type | name |
+-----------------------------------+----------+------------+
| MyPlugin\Handlers\SendEmailHandler | handler | send_email |
| MyPlugin\Handlers\SyncDataHandler | handler | sync_data |
| MyPlugin\Handlers\BuildPromptStep | step | (none) |
+-----------------------------------+----------+------------+
Suositeltu käytäntö
Rekisteröi käsittelijät lisäosasi alustuksessa:
add_action( 'plugins_loaded', function () {
Queuety::discover_handlers(
__DIR__ . '/src/Handlers',
'MyPlugin\\Handlers'
);
} );
Tämä korvaa manuaaliset Queuety::register()-kutsut jokaiselle käsittelijälle. Uudet käsittelijät otetaan automaattisesti käyttöön, kun lisäät hakemistoon attribuutilla merkityn luokan.
Yhdistäminen manuaaliseen rekisteröintiin
Automaattisesti löydetyt ja manuaalisesti rekisteröidyt käsittelijät toimivat rinnakkain samassa rekisterissä. Voit käyttää molempia tapoja samassa projektissa:
// 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 );