Μετάβαση στο περιεχόμενο

Χαρακτηριστικά PHP

Το Queuety υποστηρίζει 8 χαρακτηριστικά PHP για καταχώριση διαχειριστών χωρίς ρύθμιση. Προσθέστε σχολιασμούς στις κλάσεις διαχειριστών σας με το #[QueuetyHandler] και χρησιμοποιήστε την αυτόματη ανακάλυψη για να τις καταχωρίσετε όλες μαζί.

Το χαρακτηριστικό #[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 [];
    }
}

Οι παράμετροι του χαρακτηριστικού:

Παράμετρος Τύπος Προεπιλογή Περιγραφή
name string (απαιτείται) Όνομα διαχειριστή που χρησιμοποιείται για την αποστολή
queue string 'default' Προεπιλεγμένη ουρά για αυτόν τον διαχειριστή
max_attempts int 3 Μέγιστος αριθμός εκτελέσεων πριν η εργασία τεθεί στο περιθώριο
needs_wordpress bool false Αποθηκεύεται στο χαρακτηριστικό· το Queuety δεν το διαβάζει προς το παρόν

Αυτόματη ανακάλυψη

Σαρώστε έναν κατάλογο για σχολιασμένες κλάσεις διαχειριστών και καταχωρίστε τις όλες:

PHP
use Queuety\Queuety;

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

Αυτό εκτελεί σάρωση κάθε αρχείου .php στον κατάλογο και στους υποκαταλόγους του, συνάγει το όνομα κάθε κλάσης από το πρόθεμα namespace και τη διαδρομή αρχείου, τη φορτώνει μέσω του autoloader σας και καταχωρίζει τις κλάσεις που φέρουν το χαρακτηριστικό #[QueuetyHandler] και υλοποιούν το Handler, το Step ή το Contracts\Job.

Αυτόματη ανακάλυψη μέσω CLI

Κέλυφος
# Preview discovered handlers
wp queuety discover /path/to/handlers MyPlugin\\Handlers

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

Παράδειγμα εξόδου:

Κώδικας
+-----------------------------------+----------+------------+
| class                             | type     | name       |
+-----------------------------------+----------+------------+
| MyPlugin\Handlers\SendEmailHandler | handler  | send_email |
| MyPlugin\Handlers\SyncDataHandler  | handler  | sync_data  |
| MyPlugin\Handlers\BuildPromptStep  | step     | (none)     |
+-----------------------------------+----------+------------+

Βέλτιστη πρακτική

Καταχωρίστε τους διαχειριστές κατά την αρχικοποίηση του πρόσθετου σας:

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

Αυτό αντικαθιστά τις χειροκίνητες κλήσεις Queuety::register() για κάθε διαχειριστή. Οι νέοι διαχειριστές εντοπίζονται αυτόματα όταν προσθέτετε στον κατάλογο μια κλάση με το χαρακτηριστικό.

Συνδυασμός με χειροκίνητη καταχώριση

Οι διαχειριστές που εντοπίζονται αυτόματα και όσοι καταχωρίζονται χειροκίνητα συνυπάρχουν στο ίδιο μητρώο. Μπορείτε να χρησιμοποιήσετε και τις δύο προσεγγίσεις στο ίδιο έργο:

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