Pāriet uz saturu

PHP Atribūti

Queuety atbalsta PHP 8 atribūtus, lai konfigurētu apstrādātāju reģistrāciju bez papildu iestatīšanas. Pievienojiet apstrādātāju klasēm anotāciju #[QueuetyHandler] un izmantojiet automātisko noteikšanu, lai reģistrētu tās visas uzreiz.

Atribūts #[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 [];
    }
}

Atribūta parametri:

Parametrs Tips Noklusējums Apraksts
name string (obligāts) Apstrādātāja nosaukums, ko izmanto izsaukšanai
queue string 'default' Šī apstrādātāja noklusējuma rinda
max_attempts int 3 Maksimālais izpildes reižu skaits, pirms uzdevums tiek paslēpts
needs_wordpress bool false Saglabāts atribūtā; Queuety pašlaik to nelasa

Automātiskā noteikšana

Meklējiet anotētas apstrādātāju klases direktorijā un reģistrējiet tās visas:

PHP
use Queuety\Queuety;

$count = Queuety::discover_handlers(
    __DIR__ . '/handlers',  // directory to scan
    'MyPlugin\\Handlers'    // PSR-4 namespace prefix
);
// $count = number of handlers registered

Tiek pārbaudīts katrs .php fails direktorijā un tā apakšdirektorijos, klases nosaukums tiek iegūts no nosaukumvietas prefiksa un faila ceļa, klase tiek ielādēta, izmantojot jūsu automātiskās ielādes mehānismu, un tiek reģistrētas klases, kurām ir atribūts #[QueuetyHandler] un kuras implementē Handler, Step vai Contracts\Job.

Automātiskā noteikšana, izmantojot CLI

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

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

Piemēra izvade:

Kods
+-----------------------------------+----------+------------+
| class                             | type     | name       |
+-----------------------------------+----------+------------+
| MyPlugin\Handlers\SendEmailHandler | handler  | send_email |
| MyPlugin\Handlers\SyncDataHandler  | handler  | sync_data  |
| MyPlugin\Handlers\BuildPromptStep  | step     | (none)     |
+-----------------------------------+----------+------------+

Labākā prakse

Reģistrējiet apstrādātājus spraudņa inicializācijā:

PHP
add_action( 'plugins_loaded', function () {
    Queuety::discover_handlers(
        __DIR__ . '/src/Handlers',
        'MyPlugin\\Handlers'
    );
} );

Tas aizstāj manuālus Queuety::register() izsaukumus katram apstrādātājam. Jaunu apstrādātāju automātiski atradīs, tiklīdz direktorijā pievienosiet klasi ar šo atribūtu.

Kombinēšana ar manuālu reģistrāciju

Automātiski noteiktie un manuāli reģistrētie apstrādātāji var līdzāspastāvēt vienā reģistrā. Projektā varat izmantot abas pieejas:

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