WordPress Error Handling met WP_Error Klasse I

Zelfs als je een draagt S op je borst, als het gaat om programmeren, zullen er ongetwijfeld fouten in je applicatie kruipen. Deze fouten worden ofwel veroorzaakt door de programmeurs als gevolg van een codefout of door de gebruikers die niet willen voldoen aan de beperkingen van de toepassing of de website..

De fouten veroorzaakt door de eindgebruikers zijn meestal nadeliger dan die van de programmeur reden, omdat de gegevens of informatie ingevoerd door de gebruiker onvoorspelbaar is.

In een e-mailformulierveld kan de gebruiker bijvoorbeeld invoeren in plaats van een geldig e-mailadres in te voeren een niet-e-mailtekst. Als de website geen solide mechanisme voor foutafhandeling kent, kan de gebruiker ongeautoriseerde toegang tot gevoelige informatie verkrijgen.

Aangezien het gedrag van gebruikers niet kan worden voorspeld, kan een website of toepassing worden geprogrammeerd om ongeldige gegevens die door de gebruiker zijn ingevoerd, op af te wijzen en de gebruiker ervan op de hoogte te stellen dat de gegevens ongeldig waren. Dit proces is wat foutafhandeling wordt genoemd

WordPress wordt geleverd met een WP_Error-klasse die foutafhandeling binnen plug-ins en WordPress zelf veel eenvoudiger maakt.

WP_Error begrijpen

De WP_Error klasse bestaat uit twee eigenschappen en acht methoden. Deze eigenschappen worden door de klas intern gebruikt en u zult deze eigenschappen waarschijnlijk niet nodig hebben, omdat de meeste taken die u wilt uitvoeren, kunnen worden uitgevoerd met behulp van de klassemethoden.

Hieronder staan ​​de twee klasse-eigenschappen en wat ze doen.

  • $ fouten iseen array met de lijst met fouten.
  • $ error_data is een array met de lijst met gegevens voor foutcodes.

Voordat we de klassemethoden onderzoeken, zal ik deze drie termen, intern gebruik door de WP_Error klasse - Code, bericht, gegevens.

Maak je geen zorgen als ze nu moeilijk te begrijpen zijn - dingen die we duidelijker worden als we codevoorbeelden onderzoeken in het volgende hoofdstuk.

  • Code is vergelijkbaar met een sleutel / waarde-paargegevens, zoals een array: de code in deze zin is de sleutel.
  • Het bericht is de waarde van een sleutel / waarde-paar dat is opgeslagen in de fouten eigendom van de klas.
  • Gegevens, zoals het bovenstaande bericht, is dit de waarde van een sleutel ( code ) maar opgeslagen in de error_data eigendom.

Nu naar de klassemethoden en wat ze doen:

  • __construct () is een PHP magische methode accepteert drie argumenten - code, bericht en gegevens. Doorgeven van het argument over de instantiatie van de WP_Error class stelt het foutbericht in.
  • get_error_codes ()geeft een arraylijst met alle foutcodes terug, indien beschikbaar.
  • get_error_code ()haalt de eerste foutcode op en geeft tekenreeks, integer of leeg als er geen foutcodes zijn.
  • get_error_messages ($ code) haal alle foutmeldingen op wanneer het code argument is afwezig of foutmeldingen die overeenkomen met de code argument. Retourneert een reeks foutreeksen bij succes of lege array bij fout (bij gebruik van de codeparameter).
  • get_error_message ($ code)krijgt een enkele foutmelding. Hiermee wordt het eerste bericht voor de code beschikbaar. Als er geen code wordt gegeven, wordt de eerste beschikbare code gebruikt. Retourneert een foutstring. 
  • get_error_data ($ code) ophalen van foutgegevens voor een gegeven foutcode. Retourneert de gegevens of null, als er geen fouten zijn. 
  • toevoegen ($ code, $ bericht, $ gegevens)voeg meer foutmeldingen toe aan de lijst met foutmeldingen.
  • add_data ($ data, $ code)voegt gegevens voor foutcode toe. De foutcode kan slechts één stuk foutgegevens bevatten.

Hoe de klasse WP_Error werkt

Om de te gebruiken WP_Error klasse voor foutafhandeling, eerst een instantie van de klas volgen door het gebruik van de klassemethode. U kunt een foutmelding toevoegen die de code, bericht, en gegevensop instantiatie.

$ my_error = nieuwe WP_Error ('speelgoed', 'mijn favoriete speeltje is dolly');

De structuur van het object $ my_error via bekijken print_r () onthult:

WP_Error Object ([errors] => Array ([toy] => Array ([0] => mijn favoriete speelgoed is dolly)) [error_data] => Array () 

Merk op dat onze gedefinieerde fout is opgeslagen in fouten class property terwijl de error_data property heeft geen gegevens.

Als u een derde argument over instantiatie doorgeeft, maakt u een data met de code (eerste argument) zijnde de array-sleutel en het derde argument (gegevens), de arraywaarde.


WP_Error Object ([errors] => Array ([toy] => Array ([0] => mijn favoriete speelgoed is dolly)) [error_data] => Array ([toy] => mijn best))

Om meer foutmeldingen toe te voegen of toe te voegen aan de foutenlijst, de toevoegen methode gebruikt die accepteert code, bericht, en gegevens als methodeargument.

toevoegen ('game', 'mijn favoriete spelconsole is PS4');

Een derde argument (gemengd gegevenstype) doorgeven aan de toevoegen() methode voegt een gegeven toe aan de foutcode.

toevoegen ('game', 'mijn favoriete gameconsole is PS4', 'beste game');

Gebruik makend van print_r ()  nogmaals, laten we de structuur en informatie van ons bekijken $ my_error WP_Error voorwerp.

WP_Error Object ([errors] => Array ([toy] => Array ([0] => mijn favoriete speeltje is dolly) [game] => Array ([0] => mijn favoriete gameconsole is PS4)) [error_data ] => Array ([speelbal] => beste speeltje [spel] => beste spel))

De add_data () methode kan ook worden gebruikt om strikt gegevens voor foutcode toe te voegen. De foutcode kan slechts één foutgegevens bevatten.

$ my_error-> add_data ('mijn beste leraar is Uncle Sam', 'leraar');

We hebben geleerd hoe te instantiëren en foutmeldingen en gegevens toe te voegen aan de WP_Error voorwerp. Laten we kijken hoe het foutbericht, de code en de gegevens kunnen worden opgehaald.

De ... gebruiken get_error_codes () methode retourneert een arraylijst met alle foutcodes.

print_r ($ my_error-> get_error_codes ()); / * geeft als resultaat Array ([0] => speelgoed [1] => spel) * /

Terwijl get_error_code () geeft alleen de eerste foutcode terug.

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

De get_error_messages () Haal alle foutmeldingen op wanneer het code argument is afwezig of foutmeldingen die overeenkomen met de code argument.

print_r ($ my_error-> get_error_messages ()); / * geeft als resultaat Array ([0] => mijn favoriete speelgoed is dolly [1] => mijn favoriete spelconsole is PS4) * /

print_r ($ my_error-> get_error_messages ('game')); / * geeft als resultaat Array ([0] => mijn favoriete spelconsole is PS4) * /

De get_error_message () retourneert een enkel foutbericht dat overeenkomt met de code. als er geen code is, wordt het eerste foutbericht geretourneerd.

print_r ($ my_error-> get_error_message ()); // mijn favoriete speeltje is dolly

De get_error_data () retourneert de gegevens voor foutcode.

print_r ($ my_error-> get_error_data ()); // beste speelgoed

print_r ($ my_error-> get_error_data ('leraar')); // mijn beste leraar is Uncle Sam

Bij het bouwen van een plug-in wil je misschien controleren of een variabele een is WP_Error voorwerp. Dit is waar is_wp_error () komt van pas.

Misschien wilt u er ook zeker van zijn dat u een WP_Error object bevat geen foutbericht voordat een actie wordt verwerkt. Het onderstaande codefragment controleert bijvoorbeeld of $ my_error object bevat geen enkele fout. Als het waar is, "Geen fout, we zijn goed om te gaan"wordt herhaald.

if (1> count ($ my_error-> get_error_messages ())) echo "Geen fout, we zijn goed om te gaan"; 

Samenvatting

In dit eerste deel van de serie over verwerkingsfouten in WordPress met WP_Error, we hebben de klas voor ons bekeken, uitgelegd wat elke klassenmethode doet met codevoorbeelden.

Deel twee zal ons een praktische use-case laten zien bij het gebruik WP_Error om fouten te behandelen bij het ontwikkelen van plug-ins. we zullen eigenlijk een plug-in voor contactformulieren bouwen naarmate we vorderen.
Blijf op de hoogte - mis het niet!