Widget WordPress: refactoring, parte 5
Nel post precedente, abbiamo creato un Registro che verrà utilizzato per memorizzare tutte le varie classi responsabili della funzionalità del nostro widget.
Per fare ciò, verrà introdotta una varietà di altre classi, ma prima di andare lì, dobbiamo aggiungere il Registro di sistema al bootstrap del plug-in (per non parlare di creare un bootstrap per il plug-in).
Nello specifico, ecco da dove ci siamo lasciati:
Come accennato in precedenza nel post, dobbiamo aggiungerlo al bootstrap del plugin. Per fare ciò, però, dobbiamo definire il nostro filtro in modo da poter passare facilmente il registro intorno al resto del plugin (quando arriva il momento di farlo).
Quindi, in questo post, ci concentreremo sul fare esattamente questo.
The WordPress Widget Boilerplate: Refactoring, Parte 5
Se hai seguito la serie fino a questo punto, dovresti essere in una buona posizione specificatamente per aggiungere il registro in modo che abbiamo accesso ad esso in tutto il plug-in.
Per fare questo, però, presuppone che tu sappia come definire i tuoi filtri. In WordPress, utilizziamo sempre azioni e filtri.
La cosa su questi hook è che sono già definiti, però. Quindi come definiamo il nostro filtro?
Diamo un’occhiata a fare esattamente questo.
1 Definire il nostro filtro
Innanzitutto, dobbiamo comprendere alcuni concetti:
- cos’è un filtro,
- come aggiungere un filtro,
- come introdurre il nostro registro nel filtro
- come recuperare la classe dal filtro.
Fortunatamente, tutto quanto sopra è facile da spiegare.
Che cos’è un filtro?
In poche parole, gli hook ci consentono di chiamare WordPress in momenti specifici durante l’esecuzione del programma. Le azioni sono solitamente riservate al comportamento; I filtri sono riservati per i dati.
Inoltre, i filtri ci consentono di lavorare con dati specifici nell’applicazione: possono essere dati preesistenti o anche nuovi. E nel nostro caso, sarà la classe Registry che contiene riferimenti ad altri dati.
Aggiunta di un filtro
Aggiungere un filtro è facile. Ha tre parti:
- chiamando add_filter ,
- definire un identificatore univoco per il filtro,
- passando informazioni nel filtro che possono essere restituite ogni volta che viene chiamato.
Per noi, identificherò il nostro registro come filtro wpWidgetRegistry. Nota, tuttavia, che è importante scegliere un nome univoco per la tua implementazione perché, in caso contrario, potresti finire con collisioni con altri dati se un altro plug-in utilizza lo stesso identificato.
Ad ogni modo, l’aggiunta di un filtro esegue un compito semplice:
Agganciare una funzione o un metodo a un’azione filtro specifica.
Quindi questo significa che dobbiamo definire un metodo con il nostro ID. A causa della natura di PHP, non è necessario utilizzare una funzione separata.
Invece, possiamo usare una funzione anonima.
Le funzioni anonime, note anche come chiusure, consentono la creazione di funzioni che non hanno un nome specificato. Sono molto utili come valore dei parametri di callback, ma hanno molti altri usi.
La funzione anonima che andremo a definire accetterà un riferimento al plugin come argomento e quindi lo restituirà ogni volta che verrà chiamato il filtro (che verrà mostrato più avanti in questo articolo).
Passare le informazioni al nostro filtro
Ora che abbiamo coperto tutto ciò, possiamo eseguire il processo di creazione di un’istanza del nostro registro, definizione di un filtro e quindi aggiunta del registro, in modo che sia accessibile in tutta l’applicazione.
Quindi all’interno del file principale del plugin, che è il file wordpress-widget-boilerplate.php, aggiungiamo le seguenti righe di codice :
<?php
namespace WordPressWidgetBoilerplate;
use WordPressWidgetBoilerplateUtilitiesRegistry;
// More to come...
Quanto sopra dichiara lo spazio dei nomi in cui risiede il Registro. Quindi aggiungiamo il seguente blocco di codice sotto il caricatore automatico:
<?php
// Setup a filter so we can retrieve the registry throughout the plugin.
$registry = new Registry();
add_filter('wpWidgetRegistry', function() use ($registry) {
return $registry;
});
Nota che quando miri ad attivare il plug-in, non si attiverà e genererà un errore. Ciò è dovuto alla mancanza di un caricatore automatico di cui parleremo nel prossimo post.
2 Recupero del nostro registro
Poiché il registro è definito nel bootstrap del plug-in e ciò avviene tramite l’uso di un filtro, possiamo accedere al registro in qualsiasi punto del nostro plug-in chiamando il nostro filtro personalizzato.
Ad esempio, diciamo che siamo in un’altra classe e abbiamo bisogno di ottenere un riferimento al registro. Per fare ciò, possiamo effettuare questa chiamata :
<?php
// Retrieve the registry anywhere in the plugin.
$registry = apply_filters('wpWidgetRegistry', null);
E questo è tutto. Facile, vero? Finché tutto è stato aggiunto correttamente al registro, che sarà presto trattato, saremo in grado di accedervi tutti tramite gli identificatori univoci che abbiamo utilizzato nel post precedente.
Il caricatore automatico
Ora stiamo iniziando a usare gli spazi dei nomi e ad usare altre classi. Ciò significa che dovremo utilizzare i caricatori automatici.
Quindi, prima di passare al refactoring dell’intera classe così com’è in questo momento, faremo una piccola deviazione in alcune delle funzionalità di Composer per vedere come viene utilizzato per generare un caricatore automatico (oltre alle cose che abbiamo già usandolo per gestire la qualità del nostro codice sorgente).

