WordPress Eroare de manipulare cu WP_Error clasa I

Chiar dacă purtați un S pe piept, când vine vorba de programare, erorile se vor strecura, fără îndoială, în aplicația dvs. Aceste erori sunt cauzate de noi de către programatori ca urmare a erorilor de cod sau de către utilizatorii care nu sunt dispuși să se conformeze aplicației sau constrângerilor site-ului web.

Erori cauzate de utilizatorii finali sunt, de obicei, mai adverse decât cea a motivului programatorului deoarece datele sau informațiile introduse de utilizator sunt imprevizibile.

De exemplu, într-un câmp de formular de e-mail, în loc să introduceți un e-mail valid, utilizatorul ar putea să intre un text fără text. Dacă site-ul nu are un mecanism solid de gestionare a erorilor, utilizatorul poate obține acces neautorizat la informații sensibile.

Din moment ce comportamentul utilizatorilor nu poate fi prezis, un site web sau o aplicație poate fi programat să respingă în mod corect orice date nevalide introduse de utilizator și să informeze utilizatorul că datele sunt nevalide. Acest proces este ceea ce se numește gestionarea erorilor

WordPress livrează cu o clasă WP_Error care face manipularea erorilor în plugin-uri și WordPress în sine mult mai ușor.

Înțelegerea WP_Error

WP_Error clasa constă din două proprietăți și opt metode. Aceste proprietăți sunt utilizate intern de clasă și probabil că nu veți avea nevoie de aceste proprietăți deoarece majoritatea sarcinilor pe care doriți să le realizați pot fi realizate folosind metodele de clasă.

Mai jos sunt cele două proprietăți de clasă și ceea ce fac.

  • erori de $ esteo matrice care conține lista erorilor.
  • $ error_data este o matrice care conține lista de date pentru codurile de eroare.

Înainte de a examina metodele de clasă, îmi place să explic aceste trei termeni utilizați intern de către WP_Error clasă - Cod, Mesaj, Date.

Nu vă faceți griji dacă sunt greu de înțeles chiar acum - lucrurile devin mai clare pe măsură ce examinăm mostrele de cod în secțiunea următoare.

  • Codul este similar cu o pereche de date cheie / valoare, cum ar fi o matrice: cod în acest sens este cheia.
  • Mesajul este valoarea unei perechi cheie / valoare salvată în erori proprietate clasa.
  • Date, ca mesajul de mai sus, este valoarea unei chei ( cod ), dar salvat la error_data proprietate.

Acum la metodele de clasă și la ceea ce fac:

  • __construi() este o metodă de magie PHP accepta trei argumente - cod, mesaj și date. Transmiterea argumentului la instanțierea lui WP_Error clasa configurează mesajul de eroare.
  • get_error_codes ()returnează o listă de matrice cu toate codurile de eroare, dacă este disponibilă.
  • get_error_code ()extrage primul cod de eroare și returnează șirul, întregul sau gol dacă nu există coduri de eroare.
  • get_error_messages (codul $) regăsiți toate mesajele de eroare atunci când cod argumentul este absent sau mesajele de eroare care se potrivesc cod argument. Returnează o serie de șiruri de erori privind succesul sau matrice goală la eșec (dacă utilizează parametrul de cod).
  • get_error_message (codul $)primește un singur mesaj de eroare. Acesta va primi primul mesaj disponibil pentru cod. Dacă nu se dă niciun cod, se va utiliza primul cod disponibil. Returnează un șir de erori. 
  • get_error_data (codul $) prelua datele de eroare pentru un cod de eroare dat. Returnează datele sau nu, dacă nu există erori. 
  • adăugați ($ code, $ message, $ data)adăugați mai multe mesaje de eroare la lista de mesaje de eroare.
  • add_data ($ date, $ code)adaugă date pentru codul de eroare. Codul de eroare poate conține doar o singură dată de eroare.

Cum funcționează clasa WP_Error

Pentru a utiliza WP_Error pentru tratarea erorilor, instanțiați în primul rând clasa urmată de utilizarea metodei de clasă. Puteți adăuga un mesaj de eroare care să treacă cod, mesaj, și datepe instanțiere.

$ my_error = nou WP_Error ("jucărie", "jucăria mea preferată este dolly");

Examinează structura obiectului $ my_error prin print_r () relevă:

WP_Error Object ([eroare] => Array ([toy] => Array ([0] => jucarie mea preferata este dolly)) [error_data] => Array 

Observați că eroarea definită este stocată în erori clasa de proprietate în timp ce error_data proprietatea nu are date.

Trecerea unui al treilea argument la instanțierea datelor creează date cu cod (primul argument) fiind cheia matricei și al treilea argument (date), valoarea matricei.


Obiectul WP_Error ([eroare] => Array ([toy] => Array ([0] => jucarie mea preferata este dolly)) [error_data] => Array ([toy] =>

Pentru a adăuga sau a adăuga mai multe mesaje de eroare la lista erorilor, adăuga se utilizează metoda care acceptă cod, mesaj, și date ca argument de metodă.

adăugați ("joc", "consola mea de jocuri preferată este PS4");

Transmiterea unui al treilea argument (tip de date mixte) la adăuga() metoda adaugă date la codul de eroare.

adăugați ("joc", "consola mea de jocuri preferată este PS4", "cel mai bun joc");

Utilizarea print_r ()  din nou, să vedem structura și informațiile noastre $ my_error WP_Error obiect.

WP_Error Object ([eroare] => Array ([toy] => Array ([0] => jucarie mea preferata este dolly) [joc] => Array ([0] ] => Array ([toy] => cea mai bună jucărie [joc] => cel mai bun joc))

add_data () metoda ar putea fi de asemenea folosită pentru a adăuga date strict pentru codul de eroare. Codul de eroare poate conține numai un singur număr de eroare.

$ my_error-> add_data ("cel mai bun profesor al meu este Unchiul Sam", "profesor");

Am învățat cum să instanțiăm și să adăugăm mesaj de eroare și date către WP_Error obiect. Să vedem cum să preluăm mesajul de eroare, codul și datele.

Utilizarea get_error_codes () metoda returnează o listă de matrice a tuturor codurilor de eroare.

print_r ($ my_error-> get_error_codes ()); / * returnează Array ([0] => jucărie [1] => joc) * /

In timp ce get_error_code () returnează numai primul cod de eroare.

print_r ($ my_error-> get_error_code ()); // jucărie

get_error_messages () Preluați toate mesajele de eroare atunci când cod argumentul este absent sau mesajele de eroare care se potrivesc cod argument.

print_r ($ my_error-> get_error_messages ()); / * returnează array ([0] => jucăria mea preferată este dolly [1] => consola mea de jocuri preferată este PS4) * /

print_r ($ my_error-> get_error_messages ("joc")); / * returnează Array ([0] => consola mea de jocuri preferată este PS4) * /

get_error_message () returnează un singur mesaj de eroare care corespunde codului. dacă nu există niciun cod, returnează primul mesaj de eroare.

print_r ($ my_error-> get_error_message ()); // jucaria mea preferata este dolly

get_error_data () returnează datele pentru codul de eroare.

print_r ($ my_error-> get_error_data ()); // cea mai bună jucărie

print_r ($ my_error-> get_error_data ("profesor")); // cel mai bun profesor al meu este unchiul Sam

Când construiți un plugin, este posibil să doriți să verificați dacă o variabilă este a WP_Error obiect. Aici e locul is_wp_error () vine la îndemână.

De asemenea, ați putea dori să vă asigurați că WP_Error obiectul nu conține niciun mesaj de eroare înainte de procesarea unei acțiuni. De exemplu, fragmentul de cod de mai jos verifică dacă $ my_error obiect nu conține nici o eroare. Daca e adevarat, "Fără eroare, suntem bine să mergem"este echivalentă.

dacă (1> numără ($ my_error-> get_error_messages ())) echo "Nici o eroare, suntem bine să mergem"; 

rezumat

În această primă parte a seriei despre erorile de manipulare în WordPress folosind WP_Error, am aruncat o privire asupra clasei, ne-am explicat ce face fiecare clasă cu exemplele de cod.

Partea a doua ne va arăta o utilizare practică în utilizarea WP_Error pentru a gestiona erorile la dezvoltarea pluginurilor. de fapt, vom construi un plugin de formular de contact pe măsură ce progresăm.
Rămâi acordat - nu ratați!

Cod