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]
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:
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
# 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:
+-----------------------------------+----------+------------+
| 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ā:
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:
// 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 );