Gli standard di codifica di WordPress parentesi graffe, espressioni regolari e tag PHP

In questa serie, abbiamo approfondito gli standard di codifica di WordPress per ottenere la parola su di loro, comprenderli e iniziare a applicarli praticamente nel nostro lavoro quotidiano.

Se ti stai appena iscrivendo alla serie, finora abbiamo trattato i seguenti argomenti:

  • Convenzioni di denominazione e argomenti di funzione
  • Virgolette singole e virgolette doppie
  • Indentazione, utilizzo dello spazio e spazi finali

In questo articolo, continueremo a costruire il contenuto del precedente articolo: In particolare, daremo un'occhiata a stile, espressioni regolari e sfumature di lavoro con i tag PHP nel contesto di creazione di temi, plug-in e applicazioni WordPress.


Perché lo stile è importante

In questa serie, uno dei problemi che abbiamo ripetuto più e più volte è che gli standard di codifica aiutano a rendere il codice più leggibile, manutenibile e che alla fine dovrebbero far sembrare che uno sviluppatore abbia scritto il codice.

Ma una delle cose di cui non abbiamo davvero parlato è il perché stile questioni. Innanzitutto, ciò solleva la domanda: qual è la differenza tra le convenzioni di stile e di codifica?

Onestamente, penso che alcuni direbbero che non c'è alcuna differenza - anzi, direbbero che sono sinonimi. Non sono necessariamente d'accordo. Personalmente, il modo in cui l'ho sempre visto è quello degli standard di codifica definire lo stile del codice che viene scritto. Gli standard di codifica sono le convenzioni con cui modelliamo il nostro codice.


Brace Style

Quindi, detto questo, riprendiamo la nostra conversazione sulle convenzioni di codifica, osservando come gli standard di codifica di WordPress definiscono l'uso delle parentesi graffe.

In generale, le regole sono semplici:

  • I blocchi a riga singola possono tralasciare le parentesi
  • I blocchi multilineari devono sempre includere parentesi graffe
  • Quando si dispone di condizionali multilinea eccessivi, prendere in considerazione la possibilità di suddividere i condizionali nelle proprie funzioni per minimizzare il blocco

Questi principi sono spesso meglio dimostrati nel codice. I primi due sono semplici:

 // Esempi condizionali a riga singola if (condition1) do_work (); if (condition1) do_work (); else dont_do_work (); // Condizionali multilinea se if (condition1) do_work (); do_more_work ();  else dont_do_work (); seriously_be_lazy ();  // Single Line loop (true per do / while, while, for e foreach) while (condition1) dont_stop_believing (); // Loop a linea singola (true per do / while, while, for e foreach) while (condition1) dont_stop_believing (); hold_on_to_that_feeling (); 

Niente di terribilmente complicato, giusto?

In effetti, puoi vedere che ho usato i metodi nei blocchi sopra. Questo è ciò che ci porta al nostro prossimo principio: se hai un corpo troppo complicato nel tuo condizionale, è probabile che contribuisca al refactoring del condizionale per una leggibilità più facile.

Diamo un'occhiata a un esempio.

Prima

In questo esempio, andremo a scorrere i metadati dell'utente corrente e, se la meta chiave dell'utente corrente ha la sottostringa di "destroy:", cancelleremo la meta key dell'utente.

Si noti in questo esempio che tutto questo lavoro viene eseguito in modo condizionale, in a per ciascuno loop, e poi in un altro condizionale.

 // Se condition1 è true ... if (condition1) // ... quindi ottiene i metadati dell'utente per l'utente corrente foreach (get_user_meta (wp_get_current_user () -> ID) come $ meta_key => $ meta_value) // Se l'utente ha un set di valori di distruzione, cancellalo. Ciò significa che hanno scelto di non eliminare un utente. if (strstr ($ meta_key, 'destroy:')) delete_user_meta (wp_get_current_user () -> ID, $ meta_key); 

Un sacco di codice annidato, giusto?

Dopo

C'è una varietà di modi in cui questo può essere rifatto. In effetti, alcuni sviluppatori andranno fino a prendere ogni blocco e ad astrarlo nel proprio metodo - non c'è niente di sbagliato in questo, sia.

Ma per dimostrare questo punto, forniremo solo un livello di astrazione: prenderemo il loop e il condizionale interno, lo sposteremo in una funzione che accetta un utente e quindi eseguiremo l'azione originale.

 // Se condition1 è true ... if (condition1) process_user (wp_get_current_user ());  function process_user ($ user) // Ottieni i dati meteta dell'utente per l'utente corrente foreach (get_user_meta ($ user-> ID) come $ meta_key => $ meta_value) // Se l'utente ha un valore di distruzione impostato, cancellalo . Ciò significa che hanno scelto di non eliminare un utente. if (strstr ($ meta_key, 'destroy:')) delete_user_meta ($ user-> ID, $ meta_key); 

Come ho detto, questo è un esempio relativamente semplice, ma il punto rimane: Spostare un grosso blocco di codice nella sua propria funzione specializzata può fare molto per rifattorizzare il condizionale in modo che sia più facile da leggere.


Espressioni regolari

A questo punto, cambieremo un po 'le marce e parleremo brevemente delle espressioni regolari. Se non hai familiarità con le espressioni regolari, sappi solo che sono potenti modi per eseguire corrispondenze di caratteri o stringhe. Puoi leggere molto di più su di loro su Wikipedia.

Ad un certo punto durante la tua carriera di sviluppo di WordPress, probabilmente li incontrerai - nel codice sorgente principale, nel codice del tema o nel plug-in, o anche nella necessità di eseguire un'azione nel tuo progetto.

Fortunatamente PHP offre alcune funzioni davvero semplici e potenti per l'utilizzo di espressioni regolari nel codice; tuttavia, ci sono usi appropriati e impropri di loro quando si tratta di lavorare con loro in WordPress.

Ecco le regole generali:

  • Utilizzare il preg funzioni che PHP offre
  • Non usare il \ e switch che viene offerto da PHP - usa preg_replace_callback anziché.

Per coloro che sono curiosi, ci sono un certo numero di funzioni che sono disponibili.

Ad esempio, consiglio di prendere confidenza con:

  • preg_replace
  • preg_match
  • preg_match_all

Finalmente, preg_replace_callback è un modo per chiamare una funzione quando un'espressione regolare ha trovato una corrispondenza.

Ovviamente, le regole per le espressioni regolari in WordPress sono semplici: è più una questione di conoscenza delle funzioni che tu dovrebbero usa e cosa non dovresti usare e come impiegarli nel tuo lavoro quotidiano.


Tag PHP

L'ultima cosa da coprire in questo articolo è l'importanza di come utilizzare i tag PHP nei file PHP che compongono il tuo progetto. Fortunatamente, esiste una semplice regola empirica per questa particolare situazione:

  • Non usare mai tag PHP abbreviati

Innanzitutto, questo significa che non devi mai aprire un file o un'istruzione PHP in linea con o con . Naturalmente, tutte le istruzioni PHP inline dovrebbero essere terminate con ?> tag di chiusura.

Ora, questo argomento successivo è un po 'una deviazione dagli standard di codifica, almeno al momento della stesura di questo articolo, sta diventando una pratica più comune lasciare il tag di chiusura sul fondo del file se e solo se la prima riga del file in questione è un'apertura etichetta.

In particolare, questo è più comune nel contesto dei plug-in che non nei temi ed ecco perché: PHP è un modo in cui il codice lato server può essere incorporato nel markup front-end. In quanto tale, richiede sia un tag di apertura che un tag di chiusura in modo che l'interprete sappia come analizzare il codice.

Ma se stai scrivendo un plugin o un file di applicazione che è al 100% PHP, non c'è bisogno di aggiungere un tag di terminazione alla fine del file. Il parser sarà in grado di rilevarlo da solo, e se tu fare includi un tag di chiusura, quindi puoi potenzialmente avere uno spazio vuoto alla fine del file che può causare tutti i tipi di problemi quando arriva il momento di attivare il plugin.

Quindi oltre allo standard di codifica sopra definito, aggiungerei anche:

  • Evita di aggiungere un tag PHP di chiusura in file PHP puri.

Conclusione

Mentre ci avviciniamo all'ultimo tratto dell'esame degli standard di codifica di WordPress, inizieremo a concentrarci su aspetti più piccoli come gli operatori ternari e le condizioni Yoda; tuttavia, daremo anche un'occhiata ai punti migliori per eseguire query SQL inline e le regole importanti che lo riguardano.

Se non hai già preso parte alla serie, ora è un buon momento per rileggere quello che abbiamo visto finora, in modo che rifletta sul punto in cui ci dirigiamo con il prossimo set di articoli.