Siirry sisältöön

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

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 [];
    }
}

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:

PHP
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

Shell
# Preview discovered handlers
wp queuety discover /path/to/handlers MyPlugin\\Handlers

# Discover and register
wp queuety discover /path/to/handlers MyPlugin\\Handlers --register

Esimerkkituloste:

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

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

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