ID:               24214
 Updated by:       [EMAIL PROTECTED]
 Reported By:      gk at proliberty dot com
 Status:           Open
 Bug Type:         Feature/Change Request
 Operating System: linux ; kernel 2.4.18
 PHP Version:      4.3.2
 New Comment:

fwiw, I also feel this is a valid (and worthy) feature request and
assumed debug_backtrace() behaved as such.


Previous Comments:
------------------------------------------------------------------------

[2003-06-18 15:12:23] gk at proliberty dot com

Your solution is not elegant: adding extra parameters when
debug_backtrace() would be enough if it behaved consistently in all
cases.

This is also a documentation bug. Please do not set to 'bogus'. How can
a feature request be 'bogus'?

------------------------------------------------------------------------

[2003-06-18 14:38:01] [EMAIL PROTECTED]

Just pass the __FILE__ and __LINE__ to your phpc_trigger_error()
function, problem solved.

e.g.

phpc_trigger_error( $errorMessage,$errorCode,__FILE__, __LINE__,
debug_backtrace() );


------------------------------------------------------------------------

[2003-06-17 14:32:55] gk at proliberty dot com

I forgot to point out why the phpc_trigger_error() example is not an
adequate workaround for the lack of consistency in debug_backtrace().

Although I use __LINE__ and __FILE__ when $debug_backtrace[0] is not
set, these values are pretty useless since they are set from the
context of the phpc_trigger_error function, NOT from the place where it
was called from; where the error occured. If debug_backtrace() always
returned __LINE__ and __FILE__ we would have everything we need.

------------------------------------------------------------------------

[2003-06-17 13:30:07] gk at proliberty dot com

Yes, below is an example of how I'm using it. 
The purpose is to work around the limited arguments passed to custom
error handlers, installed with set_error_handler(), which do not
receive class and function information. 

The following function replaces trigger_error() by talking directly to
my custom error handler ('phpc_error_handler', omitted for brevity
below), using debug_backtrace() to pass class and function info for
prepending to error messages.

<?php
///////////////////////////////////////////////////////
/*
  phpc_trigger_error( $errorMessage,$errorCode,$debugBacktrace=NULL )
    same as PHP built-in trigger_error, with optional parameter
    generate error message including debugging information
    
  USAGE:
  phpc_trigger_error( $errorMessage,$errorCode,debug_backtrace() );
*/
/////////////////////////////////////////////////////////
function phpc_trigger_error(
$errorMessage,$errorCode,$debug_backtrace=NULL ){ 

        $errfile=__FILE__;
        $errline=__LINE__;
        $errclass="";
        $errfunction="";
        if (isset($debug_backtrace[0])){
                $errfile=$debug_backtrace[0]['file'];
                $errline=$debug_backtrace[0]['line'];
                $errclass=$debug_backtrace[0]['class'];
                $errfunction=$debug_backtrace[0]['function'];
        }
        if (!empty($errclass)) $errclass.='::';
        if (!empty($errfunction)) $errfunction.='(): ';
    $errorMessage=$errclass.$errfunction.$errorMessage.' ';
    phpc_error_handler ($errorCode,$errorMessage,$errfile,$errline);
} // phpc_trigger_error()
?>

------------------------------------------------------------------------

[2003-06-17 11:40:34] [EMAIL PROTECTED]

Can you show an example where this could somehow be useful?
(you can always use __FILE__ and __LINE__ :)


------------------------------------------------------------------------

The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
    http://bugs.php.net/24214

-- 
Edit this bug report at http://bugs.php.net/?id=24214&edit=1

Reply via email to