✅ Notizie, temi, plugin WEB e WordPress. Qui condividiamo suggerimenti e le migliori soluzioni per siti web.

Utilizzo del modello di registro in WordPress

5

Ho avuto alcune conversazioni con vari amici e altri su Twitter sulla nozione di variabili globali nei linguaggi di programmazione. Per coloro che sono nuovi alla programmazione o che non sono sicuri del motivo per cui sono cattivi:

L’uso di variabili globali rende il software più difficile da leggere e capire. Poiché qualsiasi codice in qualsiasi punto del programma può modificare il valore della variabile in qualsiasi momento, la comprensione dell’uso della variabile può comportare la comprensione di gran parte del programma.

Questo non vuol dire che non abbiano il loro uso, ma se sei interessato alla programmazione orientata agli oggetti (specialmente in un’impostazione WordPress in cui utilizzerai PHP), allora è importante capire alcune alternative migliori rispetto alle variabili globali.

Cioè, ci sono modi per lavorare con il passaggio di dati all’interno dell’applicazione senza la necessità di variabili globali. E uno di questi è il modello di registro.

Il modello di registro in WordPress

Innanzitutto, nota che i modelli di progettazione trascendono qualsiasi modello particolare. Finché un linguaggio offre i concetti di oggetti (o anche astrazioni), è possibile implementare il modello.

Ma perché preoccuparsi di usarlo?

Utilizzo del modello di registro in WordPress

Foto di Samuel Zeller su Unsplash

In breve, fornisce un modo orientato agli oggetti per passare informazioni all’interno dell’applicazione senza la necessità di variabili globali. Anche cose come i contenitori di iniezione delle dipendenze vanno bene per questo, ma esulano dallo scopo di questo post. Direi anche che ci sono momenti in cui possono essere eccessivi nel contesto di piccoli plugin.

Implementazione del modello

Detto questo, come possiamo implementare il modello di registro in WordPress e quindi sfruttarlo durante il nostro lavoro? Diamo un’occhiata alla struttura di base del modello, prima:

Si noti che la sua implementazione è abbastanza semplice:

  1. La classe contiene un singolo array come proprietà privata.
  2. I dati vengono aggiunti all’array con un ID specifico.
  3. I dati possono essere recuperati dal pattern con l’ID.

Potresti anche portare questo modello particolare al livello successivo se accetta solo una classe di un certo tipo (come un AbstractEvent, ad esempio) e quindi invocare automaticamente una funzione sulla classe ogni volta che viene passata (o recuperata) dal registro.

Ma questo sta entrando in un’implementazione più complessa che mi piacerebbe per questo post.

Allestimento del Registro

A causa della natura del sistema di hook di WordPress, esiste un modo particolare in cui il registro deve essere configurato e quindi registrato con WordPress.

Diciamo che stai lavorando con un plugin. All’interno del file bootstrap del plugin, fai qualcosa del genere:

Questo crea il registro e quindi crea un filtro corrispondente che possiamo utilizzare in seguito nel plug-in per recuperare il registro e quindi altri oggetti che mantiene.

Utilizzo del Registro

Per aggiungere un oggetto al registro, chiama la funzione add e passa un ID univoco e un’istanza dell’oggetto. Nota che la nostra attuale implementazione eliminerà tutte le istanze precedenti di un oggetto che ha la stessa chiave e la sostituirà con qualsiasi cosa gli passiamo.

Da lì, puoi quindi recuperare gli oggetti che avevi archiviato nel registro:

E puoi usarli proprio come farebbe oyu in qualsiasi altro modo. Ma questo evita la necessità di utilizzare singleton, variabili globali o altre cose pericolose.

Una parola sulla testabilità

Un altro vantaggio che trovo con l’implementazione di questo modello è che non solo ti consente di scrivere più facilmente unit test contro di esso, ma ti dà anche la possibilità di scrivere test contro gli oggetti che può contenere.

Con ciò, intendo dire che puoi scrivere le tue classi in modo più indipendente da WordPress, separando così la logica del dominio dall’applicazione principale e rendendole più rappresentative dei dati che dovrebbero mantenere.

Fonte di registrazione: tommcfarlin.com

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More