function Error::getLastCaller

Same name in other branches
  1. 9 core/lib/Drupal/Core/Utility/Error.php \Drupal\Core\Utility\Error::getLastCaller()
  2. 8.9.x core/lib/Drupal/Core/Utility/Error.php \Drupal\Core\Utility\Error::getLastCaller()
  3. 10 core/lib/Drupal/Core/Utility/Error.php \Drupal\Core\Utility\Error::getLastCaller()

Gets the last caller from a backtrace.

Parameters

array $backtrace: A standard PHP backtrace. Passed by reference.

Return value

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

5 calls to Error::getLastCaller()
BrowserHtmlDebugTrait::getTestMethodCaller in core/tests/Drupal/Tests/BrowserHtmlDebugTrait.php
Retrieves the current calling line in the class under test.
BrowserTestBase::getTestMethodCaller in core/tests/Drupal/Tests/BrowserTestBase.php
Retrieves the current calling line in the class under test.
Error::decodeException in core/lib/Drupal/Core/Utility/Error.php
Decodes an exception and retrieves the correct caller.
ErrorTest::testGetLastCaller in core/tests/Drupal/Tests/Core/Utility/ErrorTest.php
Tests the getLastCaller() method.
_drupal_error_handler_real in core/includes/errors.inc
Provides custom PHP error handling.

File

core/lib/Drupal/Core/Utility/Error.php, line 132

Class

Error
Drupal error utility class.

Namespace

Drupal\Core\Utility

Code

public static function getLastCaller(array &$backtrace) {
    // Errors that occur inside PHP internal functions do not generate
    // information about file and line. Ignore the ignored functions.
    while ($backtrace && !isset($backtrace[0]['line']) || isset($backtrace[1]['function']) && in_array($backtrace[1]['function'], static::$ignoredFunctions)) {
        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 gives 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;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.