getErrorNameByCode

Door - -, 14 jaar geleden, 2.563x bekeken

Voor een error-handler had ik een functie nodig die een error-code omzet naar de naam. Ik heb dus maar met de hand een arraytje gemaakt aan de hand van de documentatie van PHP.

Het is een kleine simpele functie, puur om je zelf vijf minuten knip-en-plakwerk te besparen.

Opmerking: de twee weg-gecommente regels zijn alleen binnen PHP 5.3 of hoger beschikbaar.

Gesponsorde koppelingen

PHP script bestanden

  1. geterrornamebycode

 

Er zijn 13 reacties op 'Geterrornamebycode'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Wouter De Schuyter
Wouter De Schuyter
14 jaar geleden
 
0 +1 -0 -1
Huh? Wat moet je hiermee? Hoe gebruik je het? Wat is het nut er van? Meer info graag!
Zero XT
Zero XT
14 jaar geleden
 
0 +1 -0 -1
Nu maak je me nieuwsgierig naar je hele error afhandeling.
Robert Deiman
Robert Deiman
14 jaar geleden
 
0 +1 -0 -1
Ik snap helemaal niets van wat je hier probeert te doen, als de key voorkomt in de array (je gebruikt daarvoor de constanten) dan geef je de naam van de constante weer als een string.

Je gebruikt de codes uiteindelijk (via de constanten) als een key, maar waarom je dit doet is me nog een raadsel, wat voegt het toe aan de error afhandeling? Als het goed is geeft die sowieso al:
Error of Notice weer wanneer er een fout ontstaat (in de default PHP error handling)
Victor Php
Victor Php
14 jaar geleden
 
0 +1 -0 -1
Ik wil heel graag weten wat het nut is:P..
INfo xD
M Ypma
M Ypma
14 jaar geleden
 
0 +1 -0 -1
zou je inhoudelijk willen reageren Jonathan? Ik ben ook erg nieuwsgierig naar het nut hiervan.
- -
- -
14 jaar geleden
 
0 +1 -0 -1
Ik was een dag op school, ik kan dus nu pas reageren ;-)

Hier dus even een uitgebreidere toelichting. Om een systeem goed en stabiel te kunnen laten draaien wilde ik errors en exceptions opvangen en mijzelf automatisch een mail sturen met alle informatie. De gebruiker krijgt een foutmelding zonder technische details.

Voor het afhandelen van exceptions gebruik je een try-throw-catch-blok, daar ga ik nu verder niet op in. Voor 'gewone errors' maak je een eigen functie die als errorhandler speelt. Deze geef je d.m.v. de PHP-functie set_error_handler door als standaard errorhandler.

Zoals je op de infopagina van die functie kunt zien worden er een aantal parameters meegegeven aan je eigen errorhandler:
- errno, het nummer van de error;
- errstr, de errortekst;
- errfile, de bestandsnaam van het PHP-bestand waar de error in optrad;
- errline, de regel binnen het bestand;
- errcontext, een array met alle variabelen binnen de scope waarin de error optrad.

Om die eerste (errno) een beetje leesbaar te maken voor mensen heb ik deze korte functie dus gemaakt: je stopt de errno erin, en je krijgt een menselijk leesbare versie terug.

Een voorbeeldje van mijn errorhandler:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php

function handleError($code, $message, $file, $line, $context)
{

    $type = $code . '/' . getErrorNameByCode($code);
    $status = 500;
    
    handleErrorMail($status, $type, $message, $file, $line, $context);
    outputStatus($status);
}


?>


Ik hoop dat het zo duidelijk is; mochten er nog vragen zijn: stel ze!
Rein de Vries
Rein de Vries
14 jaar geleden
 
0 +1 -0 -1
oftewel...
Post dan je hele error script en niet een deel ervan..
Jeffrey H
Jeffrey H
14 jaar geleden
 
0 +1 -0 -1
@Rein, Nee dit is gewoon basis kennis.

Simpelste uitleg: Zet de constant om in een string, die je dus kunt lezen, en niet een een of ander cijfertje waar je niks aan hebt. Net zoiets als token_name(), alleen dan voor error codes.
- -
- -
14 jaar geleden
 
0 +1 -0 -1
@Rein: Nee, ik post mijn hele script expres niet. Hoe jij je foutafhandeling regelt maakt mij niks uit. E-mails, logbestanden, in een database wegschrijven, een SMS sturen via Mollie, een automatisch telefoongesprek, error-informatie doorgeven aan de bezoeker op het scherm... het kan allemaal, het is gewoon je eigen keuze. Ik bied deze snippet aan omdat dit in negen van de tien gevallen handig is voor in je foutafhandeling, onafhankelijk van de manier die je gebruikt.


14 jaar geleden
 
0 +1 -0 -1
Wat is de toegevoegde waarde hiervan?
Dit staat gewoon al op errorfunc.examples php.net...
Volgens mij is het ook niet helemaal verstandig om een http 500 op álle errors te geven.
Matthias R
Matthias R
14 jaar geleden
 
0 +1 -0 -1
Hoe krijg je te zien op welke lijn de error ligt??
GaMer B
GaMer B
14 jaar geleden
 
0 +1 -0 -1
__LINE__
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Jelmer -
Jelmer -
14 jaar geleden
 
0 +1 -0 -1
Zie Jonathan's post, $line is een van de argumenten van de callback (de functie die je aan set_error_handler geeft)

__LINE__ levert de regel op waarop __LINE__ letterlijk in je code staat, net als dat __FILE__ altijd het pad is naar het bestand waar __FILE__ in staat.

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. geterrornamebycode

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.