În această serie, am făcut o adâncă scufundare în WordPress Coding Standards pentru a obține cuvântul despre ele, pentru a le înțelege și a începe să le aplicăm practic în munca noastră de zi cu zi.
Dacă tocmai vă înscrieți în serie, până în prezent am abordat următoarele subiecte:
În acest articol, vom continua să construim pe partea de sus a conținutului din articolul precedent: Mai exact, vom analiza stilul de bretele, expresiile regulate și nuanțele de a lucra cu etichetele PHP în contextul construirea de teme WordPress, pluginuri și aplicații.
De-a lungul acestei serii, una dintre problemele pe care le-am reiterat mereu este că standardele de codare ajută la crearea unui cod mai ușor de citit, mai ușor de întreținut și că, în cele din urmă, ar trebui să pară că un dezvoltator a scris codul.
Dar unul dintre lucrurile despre care nu am vorbit de fapt este de ce stil contează. În primul rând, totuși, aceasta ridică întrebarea: care este diferența dintre convențiile de stil și codificare?
Sincer, cred că unii ar spune că nu există nici o diferență - de fapt, ei ar spune că sunt sinonime. Nu sunt neapărat de acord. Personal, modul în care am văzut întotdeauna este că standardele de codificare defini stilul codului care este scris. Standardele de codificare sunt convențiile prin care ne formăm codul.
Deci, cu asta a spus, să reluăm conversația noastră privind convențiile de codare, analizând modul în care standardele de codificare WordPress definesc utilizarea bretelelor.
În general, regulile sunt simple:
Aceste principii sunt adesea cel mai bine demonstrate în cod. Primele două sunt simple:
// Exemple condiționale cu o singură linie dacă (condiție1) do_work (); dacă (condiția1) do_work (); altfel dont_do_work (); // Condiții multiline dacă (condiție1) do_work (); do_more_work (); altceva dont_do_work (); seriously_be_lazy (); // Buclele Single Line (adevărate pentru a face / în timp ce, pentru, și foreach) în timp ce (condiție1) dont_stop_believing (); // Bucle cu o singură linie (adevărat pentru a face / în timp ce, pentru, și foreach) în timp ce (condiție1) dont_stop_believing (); hold_on_to_that_feeling ();
Nimic foarte complicat, corect?
De fapt, puteți vedea că am folosit metode în blocurile de mai sus. Care este ceea ce ne conduce la următorul nostru principiu: dacă aveți un corp prea complicat în condiționalitatea dvs., acesta va ajuta probabil la refactorizarea condiției pentru o mai ușoară lizibilitate.
Să aruncăm o privire la un exemplu.
În acest exemplu, vom trece prin meta datele utilizatorului curent și, dacă cheia meta a utilizatorului curent are substringul "destroy:", atunci vom șterge cheia meta a acelui utilizator.
Observați în acest exemplu că toate aceste lucrări se fac într-o condiție, într-o pentru fiecare
bucla, și apoi într-o altă condiție.
// Dacă condiția1 este adevărată ... dacă (condiția1) // ... atunci primim meta datele utilizatorului pentru foreach-ul curent al utilizatorului (get_user_meta (wp_get_current_user () -> ID) ca $ meta_key => $ meta_value) o valoare distrusă setată, ștergeți-o. Aceasta înseamnă că au optat să nu ștergă un utilizator. dacă (strstr ($ meta_key, 'distruge:')) delete_user_meta (wp_get_current_user () -> ID, $ meta_key);
O mulțime de coduri imbricate, corect?
Există o varietate de moduri în care acest lucru poate fi refactat. De fapt, unii dezvoltatori vor merge până la a lua fiecare bloc și de a-l abstracționa în propria metodă - nu este nimic în neregulă cu asta, fie.
Dar pentru a demonstra acest lucru, vom oferi doar un nivel de abstractizare: vom lua bucla și condiționarea interioară, o vom muta într-o funcție care acceptă un utilizator și apoi vom efectua acțiunea inițială.
// Dacă condiția1 este adevărată ... dacă (condiția1) process_user (wp_get_current_user ()); funcția process_user ($ user) // Obțineți datele utilizatorului meteta pentru utilizatorul curent foreach (get_user_meta ($ user-> ID) ca $ meta_key => $ meta_value) // Dacă utilizatorul are o valoare de distrugere setată, ștergeți . Aceasta înseamnă că au optat să nu ștergă un utilizator. dacă (strstr ($ meta_key, 'distruge:')) delete_user_meta ($ user-> ID, $ meta_key);
Asa cum am spus, este un exemplu relativ simplu, dar punctul ramane: Mutarea unui bloc mare de cod in functia sa proprie, specializata poate merge mult pentru a refactora conditional, astfel incat sa fie mai usor de citit.
În acest moment, vom schimba puțin vitezele și vom vorbi pe scurt despre expresii regulate. Dacă nu sunteți familiarizați cu expresii regulate, știți că sunt modalități puternice de a efectua potrivirea caracterului sau a șirului. Puteți citi mult mai multe despre ele pe Wikipedia.
La un moment dat în timpul carierei dvs. de dezvoltare WordPress, probabil că veți întâlni - fie în codul sursă de bază, în codul de temă sau plugin, fie chiar în cazul în care aveți nevoie de o acțiune în propriul proiect.
Din fericire, PHP oferă câteva funcții foarte simple, foarte puternice pentru utilizarea expresiilor regulate în codul dvs.; cu toate acestea, există utilizări corecte și necorespunzătoare atunci când este vorba de a lucra cu ei în WordPress.
Iată regulile generale:
pREG
funcții oferite de PHP\ e
comutator care este oferit de PHP - utilizare preg_replace_callback
in schimb.Pentru cei care sunt curioși, există o serie de funcții disponibile.
De exemplu, vă recomandăm să vă familiarizați cu:
preg_replace
preg_match
preg_match_all
In cele din urma, preg_replace_callback
este o modalitate de a apela o funcție atunci când o expresie regulată a găsit o potrivire.
Evident, regulile pentru expresii regulate în WordPress sunt simple - este mai mult o chestiune de cunoaștere a funcțiilor pe care le aveți ar trebui să utilizarea și ceea ce nu ar trebui să utilizați și cum să le angajați în munca de zi cu zi.
Ultimul lucru pe care trebuie să-l acoperiți în acest articol este importanța utilizării etichetelor PHP în fișierele PHP care alcătuiesc proiectul. Din fericire, există o regulă foarte simplă pentru această situație particulară:
În primul rând, aceasta înseamnă că nu ar trebui să deschideți niciodată un fișier sau o instrucțiune în linie PHP cu sau cu
=
. Firește, toate declarațiile PHP inline ar trebui să fie încă terminate cu ?>
tag-ul de închidere.
Acum, următorul subiect este un pic de deviere de la standardele de codificare, cel puțin la momentul acestei scrieri, devine o practică mai obișnuită de a lăsa eticheta terminatoare de pe partea inferioară a fișierului dacă și numai dacă prima linie a dosarului în cauză este o deschidere etichetă.
În mod specific, acest lucru este mai frecvent în contextul pluginurilor decât în teme și de aici: PHP este un mod în care codul de pe server poate fi încorporat în marcarea front-end. Ca atare, aceasta necesită atât o etichetă de deschidere, cât și o etichetă de închidere, astfel încât interpretul să știe cum să analizeze codul.
Dar dacă scrieți un plugin sau un fișier de aplicație care este 100% PHP, atunci nu este nevoie să adăugați o etichetă de terminare la sfârșitul fișierului. Parserul va fi capabil să o detecteze, iar dacă tu do includeți o etichetă de terminare, după care puteți lăsa spațiul alb la sfârșitul fișierului, care poate provoca tot felul de probleme atunci când vine timpul să activați pluginul.
Deci, în plus față de standardul de codare definit mai sus, aș adăuga și:
Pe măsură ce închidem ultima parte a examinării standardelor de codificare WordPress, vom începe să ne concentrăm asupra lucrurilor mai mici, cum ar fi operatorii ternari și condițiile Yoda; cu toate acestea, vom fi, de asemenea, să aruncăm o privire la punctele mai fine de a efectua interogări SQL inline și regulile importante în jurul valorii de faptul că.
Dacă nu ați reușit deja să vă înregistrați seria, acum este momentul potrivit pentru a citi din nou ceea ce am acoperit în măsura în care va fi factorul în care ne îndreptăm următorul set de articole.