[PHP] Function call stack

2002-01-30 Thread Christian Novak

Has anyone an idea on how to get information from PHP on the function call
stack.
I need the line number and file calling a function for a custom error
handler.

To be more clear, here is what I would like to do:

- I have a library, included in the main program
- I have an error handler in the library

// main.php
require library.php;
$x = myfunc('A');


// library.php
function myfunc($i)
{
if (!is_int($i)) {
   $file =   // how can I get the file name of the file
calling myfunc()
   $line =  // how can I get the line number of the file
calling myfunc()
   trigger_error(Error in  $file, at line $line, paramter must be an
integer!, E_USER_ERROR);
return($i);

Using the pre_defined varibales __line__ and __file__ will always point me
to the function not the calling
script.

Best regards

Christian Novak



-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]




Re: [PHP] Function call stack

2002-01-30 Thread Lars Torben Wilson

On Wed, 2002-01-30 at 03:33, Christian Novak wrote:
 Has anyone an idea on how to get information from PHP on the function call
 stack.
 I need the line number and file calling a function for a custom error
 handler.

This cannot be done in current versions of PHP. There are
feature requests in the bug database about this, though.


Torben

 To be more clear, here is what I would like to do:
 
 - I have a library, included in the main program
 - I have an error handler in the library
 
 // main.php
 require library.php;
 $x = myfunc('A');
 
 
 // library.php
 function myfunc($i)
 {
 if (!is_int($i)) {
$file =   // how can I get the file name of the file
 calling myfunc()
$line =  // how can I get the line number of the file
 calling myfunc()
trigger_error(Error in  $file, at line $line, paramter must be an
 integer!, E_USER_ERROR);
 return($i);
 
 Using the pre_defined varibales __line__ and __file__ will always point me
 to the function not the calling
 script.
 
 Best regards
 
 Christian Novak
 
 
 
 -- 
 PHP General Mailing List (http://www.php.net/)
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]
 To contact the list administrators, e-mail: [EMAIL PROTECTED]
 
 
-- 
 Torben Wilson [EMAIL PROTECTED]
 http://www.thebuttlesschaps.com
 http://www.hybrid17.com
 http://www.inflatableeye.com
 +1.604.709.0506


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]




Re: [PHP] Function call stack

2002-01-30 Thread Stefan Rusterholz

If you set_error_handler, then you get automatically line number and
filename.
Read through: http://www.php.net/manual/en/function.set-error-handler.php
(read user comments! there are undocumented things)
Then set up your handler like this:

$_old_error_handler = set_error_handler(myErrorHandler);
function somefunction(){
#do some stuff
trigger_error(Something went wrong, don't know why, sorry,
E_USER_ERROR);
}

function myErrorHandler($level, $message, $file, $line, $context){ #$context
contains _ALL_ variabels in scope when error happened
echo D'oh, an error has occurred: $message.\n;
echo It happened in file $file at line $line and it is a $level-error;
}

the most beauty about that is that you can also cover errors you didn't
handle (e.g. if fopen triggers a warning or whatever)

best regards
stefan rusterholz

- Original Message -
From: Lars Torben Wilson [EMAIL PROTECTED]
To: Christian Novak [EMAIL PROTECTED]
Cc: [EMAIL PROTECTED]
Sent: Wednesday, January 30, 2002 12:45 PM
Subject: Re: [PHP] Function call stack


 On Wed, 2002-01-30 at 03:33, Christian Novak wrote:
  Has anyone an idea on how to get information from PHP on the function
call
  stack.
  I need the line number and file calling a function for a custom error
  handler.

 This cannot be done in current versions of PHP. There are
 feature requests in the bug database about this, though.


 Torben

  To be more clear, here is what I would like to do:
 
  - I have a library, included in the main program
  - I have an error handler in the library
 
  // main.php
  require library.php;
  $x = myfunc('A');
 
 
  // library.php
  function myfunc($i)
  {
  if (!is_int($i)) {
 $file =   // how can I get the file name of the file
  calling myfunc()
 $line =  // how can I get the line number of the file
  calling myfunc()
 trigger_error(Error in  $file, at line $line, paramter must be an
  integer!, E_USER_ERROR);
  return($i);
 
  Using the pre_defined varibales __line__ and __file__ will always point
me
  to the function not the calling
  script.
 
  Best regards
 
  Christian Novak
 
 
 
  --
  PHP General Mailing List (http://www.php.net/)
  To unsubscribe, e-mail: [EMAIL PROTECTED]
  For additional commands, e-mail: [EMAIL PROTECTED]
  To contact the list administrators, e-mail: [EMAIL PROTECTED]
 
 
 --
  Torben Wilson [EMAIL PROTECTED]
  http://www.thebuttlesschaps.com
  http://www.hybrid17.com
  http://www.inflatableeye.com
  +1.604.709.0506


 --
 PHP General Mailing List (http://www.php.net/)
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]
 To contact the list administrators, e-mail: [EMAIL PROTECTED]





-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]