[php] error handling...

Pagina: 1
Acties:

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Topicstarter
Ik ben bezig me errorhandling class te verbouwen. Maar ik kom tegen een probleem aan mbt tot seterrorhandler. Ik heb nu dit.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class errorlog {


    function errorlog() {
           set_error_handler("myErrorHandler");
    }
    function myErrorHandler($errno, $errstr, $errfile, $errline) {
        // doe err handling
    }
}
error_reporting(E_ALL);

function myErrorHandler($errno, $errstr, $errfile, $errline) {
  $GLOBALS["b"]->myErrorHandler($errno, $errstr, $errfile, $errline);
}

$b=new errorlog($est);

// Aantal foutjes :)
if (!$a) {
    $s=12/0;
}
dl("bestaat niet");


Maar ik ben nu gedwongen om functie te gebruiken, en die roept dan de error class aan. Terwijl ik eigenlijk rechtstreeks de error class wil aan roepen.
Weet iemand hoe ik dit het simpelste zou kunnen doen?

Programmer - an organism that turns coffee into software.


  • Nielsz
  • Registratie: Maart 2001
  • Niet online
offtopic:
Ik weet het antwoord niet, maar wel een bug gevonden op php.net... Klik maar eens op die link bovenaan, en dan de eerste gevonden pagina :D

Verwijderd

Nielsz schreef op 08 augustus 2002 @ 13:40:
offtopic:
Ik weet het antwoord niet, maar wel een bug gevonden op php.net... Klik maar eens op die link bovenaan, en dan de eerste gevonden pagina :D
lol de manual op gathering.tweakers.net :D rofl Tijd voor een screenshot

Verwijderd

Recht uit de comments gehaald:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?php
error_reporting( E_ALL );
ini_alter( 'register_globals', 0 );

function my_set_error_handler($callback_func)
{
if (!is_array($callback_func))
return set_error_handler($callback_func);

if (!is_object($callback_func[0]) || 
!method_exists($callback_func[0], $callback_func[1]))
return false;

$GLOBALS['_ERROR_HANDLER_OBJECT'] = &$callback_func[0];
$GLOBALS['_ERROR_HANDLER_METHOD'] = $callback_func[1];

function error_handler_passthru($errno, $errstr, $errfile, $errline,
$errcontext)
{
$GLOBALS['_ERROR_HANDLER_OBJECT']->
$GLOBALS['_ERROR_HANDLER_METHOD']($errno, $errstr, $errfile, $errline,
$errcontext);
}

return set_error_handler('error_handler_passthru');
}

class error_handler
{

function error ($errno, $errstr, $errfile, $errline, $errcontext)
{
    echo "<pre>errno: $errno
    errstr: $errstr
    errfile: $errfile
    nerrline: $errline
    errcontext:\n";
    print_r($errcontext);
}

}
$eh = new error_handler();
$oldhandler = my_set_error_handler(array( &$eh, 'error' ));

// let's see if error handler works
$i++;
?>
Hope this helps

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Topicstarter
Ik heb het anders opgelost....


PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class errorlog {

    function errorlog($name='errorHandler') {
      static $error_handler;
      
      $this->name=empty($name)?'errorHandler':$name;
      if (! ( isset($GLOBALS[$this->name]) && is_subclass_of( $GLOBALS[$this->name], get_class( $this ) ) ) ) {
        $GLOBALS[$this->name]=&$this;
      } 
      $error_handler =create_function ("", '$GLOBALS["'.$this->name.'"]->myErrorHandler(func_get_args());');
      set_error_handler("$error_handler");
    }

      function myErrorHandler($error=array()) {
        // doe err handling
        print_r($error);
    }

}
error_reporting(E_ALL);

$b=new errorlog();

// Wat test foutjes
if (!$a) {
    $s=12/0;
}
dl("bestaat niet");

Programmer - an organism that turns coffee into software.


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

waarom zou je een errorhandler in een class willen zetten?

just curious :)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Topicstarter
drm schreef op 08 augustus 2002 @ 16:31:
waarom zou je een errorhandler in een class willen zetten?

just curious :)
Je kan er heel veeeeeeeeel mee....
- user triggered errors flexibel maken
- logging van alle errors is gemakkelijker
- Betere plaatsing van error meldingen
- etc
- etc
- Omdat het kan :)

Programmer - an organism that turns coffee into software.

Pagina: 1