Ä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.
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.
fel
klass egendom.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.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 data
på 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 accepterarkoda
,meddelande
, ochdata
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 ()); // leksakDe
get_error_messages ()
Hämta alla felmeddelanden närkoda
argumentet saknas eller felmeddelanden matcharkoda
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 dollyDe
get_error_data ()
returnerar data för felkod.print_r ($ my_error-> get_error_data ()); // bästa leksakenprint_r ($ my_error-> get_error_data ('lärare')); // min bästa lärare är Uncle SamNär du bygger ett plugin kanske du vill kontrollera om en variabel är a
WP_Error
objekt. Det är häris_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!