WordPress Feilhåndtering med WP_Error klasse I

Selv om du har på deg en S På brystet, når det gjelder programmering, vil feil utvilsomt krype inn i søknaden din. Disse feilene er enten forårsaket av programmene våre som følge av kodefeil eller av brukerne som ikke er villige til å overholde programmets eller nettstedets begrensninger.

Feilene forårsaket av sluttbrukerne er vanligvis mer ugunstige enn programmeringsårsaken fordi dataene eller informasjonen som er oppgitt av brukeren, er uforutsigbar.

For eksempel, i et e-post skjemafelt, kan brukeren angi i stedet for å skrive inn en gyldig e-post en ikke-e-posttekst. Hvis nettsiden mangler en solid feilhåndteringsmekanisme, kan brukeren få uautorisert tilgang til sensitiv informasjon.

Siden brukerens atferd ikke kan forutses, kan en nettside eller et program programmeres til å utelukke rett og slett eventuelle ugyldige data som er oppgitt av brukeren, og informere brukeren om at dataene var ugyldige. Denne prosessen er det som kalles feilhåndtering

WordPress leveres med en WP_Error-klasse som gjør feilhåndtering i plugins og WordPress selv mye enklere.

Forstå WP_Error

De WP_Error klassen består av to egenskaper og åtte metoder. Disse egenskapene brukes internt av klassen, og du vil sannsynligvis ikke trenge disse egenskapene da det meste av oppgaven du vil utføre, kan oppnås ved hjelp av klassemetoder.

Nedenfor er de to klassegenskapene og hva de gjør.

  • $ feil eren matrise som inneholder listen over feil.
  • $ error_data er en matrise som inneholder listen over data for feilkoder.

Før vi undersøker klassemetoder, vil jeg gjerne forklare disse tre begrepene bruk internt av WP_Error klasse - Kode, Melding, Data.

Ikke bekymre deg hvis de er vanskelig å forstå akkurat nå - ting blir vi tydeligere når vi undersøker kodeprøver i den etterfølgende delen.

  • Koden ligner på en nøkkel / verdi par data, for eksempel en matrise: kode i denne forstand er nøkkelen.
  • Meldingen er verdien av et nøkkel / verdi-par lagret på feil klasse eiendom.
  • Data, som meldingen ovenfor, er det verdien av en nøkkel ( kode ), men lagret til error_data eiendom.

Nå til klassemetoder og hva de gjør:

  • __construct () er en PHP magisk metode akseptere tre argumenter - kode, melding og data. Passerer argumentet om instantiering av WP_Error klassen setter opp feilmeldingen.
  • get_error_codes ()returnerer en matriseliste over alle feilkoder hvis tilgjengelig.
  • get_error_code ()henter den første feilkoden og returnerer streng, heltall eller tom hvis det ikke er feilkoder.
  • get_error_messages ($ code) hente alle feilmeldinger når kode argumentet er fraværende eller feilmeldinger som samsvarer med kode argument. Returnerer en rekke feilstrenger på suksess, eller tom array på feil (hvis du bruker kodeparameter).
  • get_error_message ($ code)får en enkelt feilmelding. Dette vil få den første meldingen tilgjengelig for koden. Hvis ingen kode er gitt, vil den første koden som er tilgjengelig, bli brukt. Returnerer en feilstreng. 
  • get_error_data ($ code) hente feildata for en gitt feilkode. Returnerer dataene eller null, hvis det ikke er feil. 
  • legg til ($ kode, $ melding, $ data)Legg til flere feilmeldinger i listen over feilmeldinger.
  • add_data ($ data, $ code)legger til data for feilkode. Feilkoden kan bare inneholde ett stykke feildata.

Hvordan WP_Error-klassen fungerer

For å bruke WP_Error klasse for feilhåndtering, først oppsøke klassen følge ved bruk av klassemetoden. Du kan legge til en feilmelding som passerer kode, budskap, og datapå instantiering.

$ my_error = ny WP_Error ('leketøy', 'min favoritt leke er dolly');

Undersøk strukturen til $ my_error-objektet via print_r () avslører:

WP_Error Object ([feil] => Array ([toy] => Array ([0] => Min favoritt leke er dolly)) [error_data] => Array () 

Legg merke til at vår definerte feil er lagret i feil klasse eiendom mens error_data Eiendommen har ingen data.

Ved å sende et tredje argument om instantiering, opprett en data med kode (første argument) er array-nøkkelen og det tredje argumentet (data), arrayverdien.


WP_Error Object ([feil] => Array ([toy] => Array ([0] => Min favoritt leke er dolly)) [error_data] => Array ([toy] => mitt beste))

Hvis du vil legge til eller legge til flere feilmeldinger i listen over feil, vil Legg til Metoden brukes som aksepterer kode, budskap, og data som metode argument.

legg til ('spill', 'min favoritt spillkonsoll er PS4');

Passerer et tredje argument (blandet datatype) til Legg til() Metoden legger til en data i feilkoden.

legg til ('spill', 'min favoritt spillkonsoll er PS4', 'beste spill');

Ved hjelp av print_r ()  igjen, la oss se strukturen og informasjonen til vår $ my_error WP_Error gjenstand.

WP_Error Object ([feil] => Array ([toy] => Array ([0] => Min favoritt leke er dolly) [game] => Array ([0] => Min favoritt spillkonsoll er PS4)) [error_data ] => Array ([toy] => beste leketøy [spill] => beste spill))

De add_data () Metoden kan også brukes til å legge til strengt data for feilkode. Feilkoden kan bare inneholde en feilinformasjon.

$ my_error-> add_data ('min beste lærer er Uncle Sam', 'teacher');

Vi har lært å instantiere og legge til feilmelding og data til WP_Error gjenstand. La oss se hvordan du henter feilmeldingen, koden og dataene.

Bruker get_error_codes () Metoden returnerer en matriseliste over alle feilkoder.

print_r ($ my_error-> get_error_codes ()); / * returnerer Array ([0] => leketøy [1] => spill) * /

Samtidig som get_error_code () returnerer bare den første feilkoden.

print_r ($ my_error-> get_error_code ()); // leketøy

De get_error_messages () Hent alle feilmeldinger når kode argumentet er fraværende eller feilmeldinger som samsvarer med kode argument.

print_r ($ my_error-> get_error_messages ()); / * returnerer Array ([0] => Min favoritt leke er Dolly [1] => Min favoritt spillkonsoll er PS4) * /

print_r ($ my_error-> get_error_messages ('spill')); / * returnerer Array ([0] => min favoritt spillkonsoll er PS4) * /

De get_error_message () returnerer en enkelt feilmelding som samsvarer med koden. Hvis ingen kode returnerer den første feilmeldingen.

print_r ($ my_error-> get_error_message ()); // min favoritt leke er dolly

De get_error_data () returnerer dataene for feilkode.

print_r ($ my_error-> get_error_data ()); // beste leketøy

print_r ($ my_error-> get_error_data ('lærer')); // min beste lærer er onkel Sam

Når du bygger et plugin, vil du kanskje sjekke om en variabel er en WP_Error gjenstand. Dette er hvor is_wp_error () kommer til nytte.

Også, kanskje du også vil forsikre deg om a WP_Error objekt inneholder ikke noen feilmelding før en handling behandles. For eksempel, sjekke kodestykket nedenfor om $ my_error objektet inneholder ingen feil. Hvis sant, "Ingen feil, det er bra å gå"ekko.

hvis (1> count ($ my_error-> get_error_messages ())) echo "Ingen feil, vi er gode å gå"; 

Sammendrag

I denne første delen av serien om håndtering av feil i WordPress bruker WP_Error, vi tok en titt på klassen til oss, forklart hva hver klassemetode gjør med kodeeksempler.

Del to vil vise oss en praktisk brukssak ved bruk WP_Error å håndtere feil når du utvikler plugins. vi skal faktisk bygge et kontaktskjema-plugin når vi utvikler seg.
Hold deg oppdatert - ikke gå glipp av det!