Nu wil ik dit in een <div></div> wegzetten, zodat ik die regels, er iets fout is, dat ik het in boven in de page zie.
Maar dat lukt mij niet, heb ik via een maat van mij, een een stukje hulp gekregen voor een eigen error reporting te maken.
function errorHandler(int $type, string $msg, ?string $file = NULL, ?int $line = NULL) {
echo $type.' : '. $msg.' in : '. $file.' on line : '. $line;
}
$warning = set_error_handler('errorHandler' , E_ALL);
Maar echter als er een fout is op een page. Dan laat hij het zien op de page die geincluded wordt.
En niet in de warningbox waar ik het juist wil hebben.
De $warnig wordt wel uitgespuugd, maar niet in de div element.
Hoe kan dat? Ligt dat aan de error reporting zelf? of heb ik iets over het hoofd gezien? of is het niet mogenlijk om het in een div element te plaatsen?
Retourneert de eerder gedefinieerde fouthandler (indien aanwezig). Als de ingebouwde fouthandler wordt gebruikt, wordt null geretourneerd. Als de vorige fouthandler een klassemethode was, retourneert deze functie een geïndexeerde array met de klasse en de naam van de methode.
Ook al maak ik een eigen error_handler, hij gebruikt toch de in gebakken error_handler van de PHP?
want deze :
Met een eigen errorhandler kan je zelf de foutafhandeling in PHP uitbreiden. Je kan de foutmeldingen in een eigen jasje stoppen, maar ook bijvoorbeeld zelf functies toevoegen, zoals het sturen van mails of wat je maar wilt. Theoretisch kan je zelfs je huisverlichting rood laten oplichten, om maar wat geks te bedenken.
Ikzelf gebruik in mijn site de exception-handler, omdat ik (en andere door mij gebruikte packages) exceptions gebruiken. Als er een exception wordt opgeroepen, dan laat ik een aparte pagina zien met een gebruiksvriendelijke foutmelding, en in de ontwikkelmodus toon ik een 'stacktrace' die laat zien waar de fout zit.
Een aparte pagina is altijd nog het beste, zo voorkom je dat je een halve pagina ziet met dingen die niet werken vanwege je fout.
... en bedenk hoe je van daaruit uitkomt bij je foutmelding:
<div><p>Delen door nul is niet toegestaan.</p></div>
Je hoeft echt niet gelijk aan test-driven development (TDD) te gaan doen, maar gestructureerd werken brengt je sneller veel verder dan ad hoc dingen aan- en uitzetten.
Die doet het, maar hij zet het niet daar waar ik het wil.
Ik heb in de index.php een <div></div> aangemaakt helemaal bovenaan in de page.
Nu heb ik met de index.php een paar includes, die bepaalde dingen doen.
Nu heb ik zeg maar een page hallo.php geinclude, daar zit zeg maar 1 foutje in bv en de $warning doet het, maar zet het niet in de <div></div> bovenaan in de page waar ik het speciaal heb aangemaakt, maar in daar waar de page hallo.php aangeroepen is.
Je wilt dergelijke errors bij voorkeur op een schone pagina plaatsen. Niets zo vervelend als een error te tonen, en daarna data die daardoor niet zichtbaar is, terwijl je dat anders wel zou verwachten.
Voor zover ik weet kan je niet zomaar zeggen: "Hier wil ik het".