_drupal_get_last_caller

Versions
7
_drupal_get_last_caller($backtrace)

Gets the last caller from a backtrace.

Parameters

$backtrace A standard PHP backtrace.

Return value

An associative array with keys 'file', 'line' and 'function'.

▾ 2 functions call _drupal_get_last_caller()

_drupal_decode_exception in includes/common.inc
Decode an exception, especially to retrive the correct caller.
_drupal_error_handler in includes/common.inc
Custom PHP error handler.

Code

includes/common.inc, line 1232

<?php
function _drupal_get_last_caller($backtrace) {
  // Errors that occur inside PHP internal functions do not generate
  // information about file and line. Ignore black listed functions.
  $blacklist = array('debug');
  while (($backtrace && !isset($backtrace[0]['line'])) ||
         (isset($backtrace[1]['function']) && in_array($backtrace[1]['function'], $blacklist))) {
    array_shift($backtrace);
  }

  // The first trace is the call itself.
  // It gives us the line and the file of the last call.
  $call = $backtrace[0];

  // The second call give us the function where the call originated.
  if (isset($backtrace[1])) {
    if (isset($backtrace[1]['class'])) {
      $call['function'] = $backtrace[1]['class'] . $backtrace[1]['type'] . $backtrace[1]['function'] . '()';
    }
    else {
      $call['function'] = $backtrace[1]['function'] . '()';
    }
  }
  else {
    $call['function'] = 'main()';
  }
  return $call;
}
?>
Login or register to post comments
 
 

All source code and documentation on this site is released under the terms of the GNU General Public License, version 2 and later. Drupal is a registered trademark of Dries Buytaert.