Liigu sisu juurde

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]

PHP
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:

PHP
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

Shell
# 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:

Kood
+-----------------------------------+----------+------------+
| 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:

PHP
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:

PHP
// 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 );