WordPress-felhantering med WP_Error klass I

Även om du bär en S På ditt bröst, när det gäller programmering, kommer fel utan tvekan att krypa in i din ansökan. Dessa fel är antingen orsakade av vi programmerare som ett resultat av kodfel eller av användarna som är ovilliga att överensstämma med ansökan eller webbplatsens begränsningar.

Felen som orsakas av slutanvändarna är vanligtvis mer negativa än programmerarens orsak eftersom de data eller uppgifter som användaren angett är oförutsägbar.

Till exempel, i ett e-postformulärfält, istället för att ange ett giltigt e-postmeddelande, kan användaren ange en icke-e-posttext. Om webbplatsen saknar en solid mekanism för felhantering kan användaren få obehörig tillgång till känslig information.

Eftersom användarnas beteende inte kan förutsägas kan en webbplats eller en applikation programmeras för att utan rätta avvisa alla ogiltiga data som användaren har angett och informera användaren om att uppgifterna var ogiltiga. Denna process är vad som kallas felhantering

WordPress levereras med en WP_Error-klass som gör felhantering i plugins och WordPress själv mycket enklare.

Förstå WP_Error

De WP_Error klassen består av två egenskaper och åtta metoder. Dessa egenskaper används internt av klassen och du kommer sannolikt inte att behöva dessa egenskaper eftersom det mesta av uppgiften du vill utföra kan uppnås med hjälp av klassmetoderna.

Nedan finns de två klassegenskaperna och vad de gör.

  • $ fel ären array som innehåller listan med fel.
  • $ error_data är en array som innehåller listan över data för felkoder.

Innan vi undersöker klassmetoderna, vill jag förklara dessa tre termer som används internt av WP_Error klass - Kod, Meddelande, Data.

Oroa dig inte om de är svåra att förstå just nu - saker blir vi tydligare när vi undersöker kodprover i efterföljande avsnitt.

  • Koden liknar en nyckel / värdepardata, t.ex. en array: koda i den meningen är nyckeln.
  • Meddelandet är värdet av ett nyckel / värdepar sparat på fel klass egendom.
  • Data, som meddelandet ovan är det värdet på en nyckel ( koda ) men sparas till error_data fast egendom.

Nu till klassmetoderna och vad de gör:

  • __konstruera() är en PHP magisk metod acceptera tre argument - kod, meddelande och data. Passerar argumentet om instans av WP_Error klassen sätter upp felmeddelandet.
  • get_error_codes ()returnerar en lista över alla felkoder om det är tillgängligt.
  • get_error_code ()hämtar den första felkoden och returnerar sträng, heltal eller tom om det inte finns några felkoder.
  • get_error_messages ($ code) hämta alla felmeddelanden när koda argumentet saknas eller felmeddelanden matchar koda argument. Returnerar en rad felsträngar för framgång eller tom array vid fel (om du använder kodparametern).
  • get_error_message ($ code)får ett enda felmeddelande. Detta kommer att få det första meddelandet tillgängligt för koden. Om ingen kod anges får den första tillgängliga koden användas. Returnerar en felsträng. 
  • get_error_data ($ code) hämta feldata för en viss felkod. Returnerar data eller null, om inga fel. 
  • lägg till ($ kod, $ meddelande, $ data)lägg till fler felmeddelanden till listan över felmeddelanden.
  • add_data ($ data, $ code)lägger till data för felkod. Felkoden kan bara innehålla en del feldata.

Hur WP_Error-klassen fungerar

Att använda WP_Error klass för felhantering, starta först klassen följa med hjälp av klassmetoden. Du kan lägga till ett felmeddelande som passerar koda, meddelande, och datapå instantiering.

$ my_error = ny WP_Error ('leksak', 'min favorit leksak är dolly');

Undersöker strukturen för $ my_error-objektet via print_r () avslöjar:

WP_Error Object ([fel] => Array ([toy] => Array ([0] => Min favoritleksak är dolly)) [error_data] => Array () 

Observera att vårt definierade fel lagras i fel klass egendom medan error_data egendom har inga uppgifter.

Genomföra ett tredje argument om instansering skapa en data med koda (första argumentet) är matrisnyckeln och det tredje argumentet (data), matrisvärdet.


WP_Error Object ([errors] => Array ([toy] => Array ([0] => min favoritleksak är dolly)) [error_data] => Array ([toy] => mitt bästa))

För att lägga till eller lägga till fler felmeddelanden i listan med fel, ska Lägg till Metod används som accepterar koda, meddelande, och data som metod argument.

lägg till ('spel', 'min favorit spelkonsol är PS4');

Passerar ett tredje argument (mixed data-type) till Lägg till() Metoden lägger till en data i felkoden.

lägg till ('spel', 'min favorit spelkonsol är PS4', 'bästa spel');

Använder sig av print_r ()  igen, låt oss se strukturen och informationen hos vår $ my_error WP_Error objekt.

WP_Error Object ([errors] => Array ([toy] => Array ([0] => Min favoritleksak är dolly) [game] => Array ([0] => Min favorit spelkonsol är PS4)) [error_data ] => Array ([toy] => bästa leksak [spel] => bästa spel))

De add_data () Metoden kan också användas för att lägga till strikt data för felkod. Felkoden kan bara innehålla en felinformation.

$ my_error-> add_data ("min bästa lärare är Uncle Sam", "lärare");

Vi har lärt oss hur du instanserar och lägger till felmeddelande och data till WP_Error objekt. Låt oss se hur du hämtar felmeddelandet, koden och data.

Använda get_error_codes () Metoden returnerar en lista över alla felkoder.

print_r ($ my_error-> get_error_codes ()); / * returnerar Array ([0] => leksak [1] => spel) * /

Medan get_error_code () returnerar endast den första felkoden.

print_r ($ my_error-> get_error_code ()); // leksak

De get_error_messages () Hämta alla felmeddelanden när koda argumentet saknas eller felmeddelanden matchar koda argument.

print_r ($ my_error-> get_error_messages ()); / * returnerar Array ([0] => Min favorit leksak är dolly [1] => Min favorit spelkonsol är PS4) * /

print_r ($ my_error-> get_error_messages ('spel')); / * returnerar Array ([0] => min favorit spelkonsol är PS4) * /

De get_error_message () returnerar ett enda felmeddelande som matchar koden. om ingen kod returnerar det första felmeddelandet.

print_r ($ my_error-> get_error_message ()); // min favorit leksak är dolly

De get_error_data () returnerar data för felkod.

print_r ($ my_error-> get_error_data ()); // bästa leksaken

print_r ($ my_error-> get_error_data ('lärare')); // min bästa lärare är Uncle Sam

När du bygger ett plugin kanske du vill kontrollera om en variabel är a WP_Error objekt. Det är här is_wp_error () kommer till hands.

Du kanske också vill se till att WP_Error Objektet innehåller inga felmeddelanden innan en åtgärd behandlas. Till exempel, kontrollera kodsteget nedan $ my_error objektet innehåller inga fel. Om sant, "Inget fel, vi är bra att gå"echoed.

om (1> count ($ my_error-> get_error_messages ())) echo "Inget fel, vi är bra att gå"; 

Sammanfattning

I den här första delen av serien om hantering av fel i WordPress med WP_Error, vi kollade på klassen till oss, förklarade vad varje klassmetod gör med kodexempel.

Del två visar oss ett praktiskt användningsfall vid användning WP_Error att hantera fel när man utvecklar plugins. vi kommer faktiskt att bygga ett kontaktformulär plugin när vi utvecklas.
Håll dig stillad - missa inte det!