Debug class

Door Stefan , 14 jaar geleden, 2.379x bekeken

Zet het volgende bovenaan je script:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
require_once 'class.debug.php';
Debug::getInstance();
?>


Fouten zullen nu, net als Exceptions die niet worden opgevangen met catch (), door deze class worden verwerkt. Maakt gebruik van de functie debug_backtrace

Gesponsorde koppelingen

PHP script bestanden

  1. debug-class

 

Er zijn 11 reacties op 'Debug class'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Richard van Velzen
Richard van Velzen
14 jaar geleden
 
0 +1 -0 -1
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
    public static function getInstance ()
    {
        if (is_null(self::$instance)) {
            self::$instance = new Debug();
        }
        return self::$instance;
    }


Is het niet makkelijker om in plaats van new Debug(); new self; te doen? Dan hoef je je ook geen zorgen te maken als je je klasse hernoemt.
Lode
Lode
14 jaar geleden
 
0 +1 -0 -1
Een language construct is sneller als een fuction call hoewel het minimaal is.
Maar in een framework e.d. kan het aantal van dergelijke vergelijking snel oplopen natuurlijk.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
null === self::$instance
?>


Daarnaast vind ik niet dat html in een class thuis hoort! Laats staan met style="" tags.

Ook de opzet van een log file snap ik niet. php heeft standaard een error log.
Die kan je ook gewoon aanroepen met error_log();

Daarnaast behoor je volgends mij de class en method als array mee te geven aan set_error_handler en set_exception_handler(array('class', 'method'));
Richard van Velzen
Richard van Velzen
14 jaar geleden
 
0 +1 -0 -1
Lode: sinds PHP 5.2.3 mag je ook 'ClassName::method' gebruiken als callback. ;)
Stefan
stefan
14 jaar geleden
 
0 +1 -0 -1
@lode:
Dit laat stap voor stap zien hoe je bij een probleem gekomen bent. Het laat de code van het bestand zien en highligt de regel.

Hoe zou jij het met de html hebben gedaan? Of het gewoon niet in een class zetten

Ik heb getInstance() aangepast
Arian Stolwijk
Arian Stolwijk
14 jaar geleden
 
0 +1 -0 -1
@ Stefan: Aparte template class :P

Maarja... html met style hoort idd niet in een class, maar aangezien dit een debug class is, lijkt het me geen super groot probleem ..
Ed
Ed
14 jaar geleden
 
0 +1 -0 -1
@arjan,

html hoort niet in een class PUNT. Dat is niet netjes MVC. Daarbij naar mijn mening heb je errors nodig op je cli, en zeker niet in je webbrowser. hoogstens een melding dat er wat is fout gegaan.
Richard van Velzen
Richard van Velzen
14 jaar geleden
 
0 +1 -0 -1
Sorry dat ik het zeg Danny, maar ik denk toch echt niet dat iedere applicatie via het MVC-patroon wordt ontwikkeld. Daarnaast, het is _debugging_. Daarbij wil je toch meestal wel output hebben, en dat doe je sowieso nooit live. Het is dus helemaal niet slecht (in dit geval) om het te outputten.
Marc Cools
Marc Cools
14 jaar geleden
 
0 +1 -0 -1
Ik vroeg mij af of dit ook werkt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
// @ __construct
register_shutdown_function('debug::Shutdown');
?>
Jelmer -
Jelmer -
14 jaar geleden
 
0 +1 -0 -1
@Marc, waarschijnlijk moet je een array gebruiken daarvoor: register_shutdown_function(array('debug', 'Shutdown'))
.. maar het zou kunnen dat ze in de nieuwste versies van PHP dit automatisch voor je zullen gaan doen :)
Marc Cools
Marc Cools
14 jaar geleden
 
0 +1 -0 -1
Kan je ook de __autoload functie in een class onderbrengen?
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Jelmer -
Jelmer -
14 jaar geleden
 
0 +1 -0 -1
Ja hoor, door met spl_autoload_register een method als autoload functie aan te wijzen.

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

Inhoudsopgave

  1. debug-class

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.