RE: Re: Getting the name of a function

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> -----Original Message-----
> From: Shawn McKenzie [mailto:nospam@xxxxxxxxxxxxx]
> Sent: Wednesday, February 27, 2008 3:58 PM
> To: php-general@xxxxxxxxxxxxx
> Subject:  Re: Getting the name of a function
> 
> Richard S. Crawford wrote:
> > For my own amusement, I'm writing a function that will print out detailed
> > error messages for an API that I'm creating for a minor project.  One of
> the
> > pieces of information I'd like to return would be the name of the
> function
> > that called the error function. For example:
> >
> > <?php
> > function error ($message) {
> >     print "The error message is $message";
> >     print "The function that called the error was: [INSERT COOL CODE
> HERE]";
> > }
> >
> > function bad_function($param) {
> >     error ("This is dumb");
> >     return false;
> > }
> >
> > bad_function("blah");
> > ?>
> >
> > Ideally this script would print this out:
> >
> > The error message is This is dumb
> > The function that called the error was bad_function
> >
> > I know that I could pass the name of the function as a parameter to the
> > error() function (e.g. error("bad_function","This is dumb")) but I'd
> rather
> > keep it simpler than that.
> >
> > Is there a way to do this?
> >
> It's an extension but may be worth a look:
> http://us.php.net/manual/en/ref.apd.php
> 
> -Shawn

Not exactly what you want, but check the use of __FUNCTION__:

function error ($message, $fn) {
   print "The error message is $message";
   print "The function that called the error was: $fn";
}

Function bad_function($param) {
  error ("This is dumb", __FUNCTION__);
  return false;
}

You can get better (and more complex) information using debug_backtrace
http://php.net/debug_backtrace. Probably doing something like:

function error ($message) {
  $backtrace = debug_backtrace();
  $fn = $backtrace[1]["function"];
  print "The error message is $message";
  print "The function that called the error was: $fn";
}

Function bad_function($param) {
  error ("This is dumb);
  return false;
}

Regards,

Rob

Andrés Robinet | Lead Developer | BESTPLACE CORPORATION 
5100 Bayview Drive 206, Royal Lauderdale Landings, Fort Lauderdale, FL 33308 |
TEL 954-607-4207 | FAX 954-337-2695 | 
Email: info@xxxxxxxxxxxxx  | MSN Chat: best@xxxxxxxxxxxxx  |  SKYPE: bestplace |
 Web: bestplace.biz  | Web: seo-diy.com

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux