php: определите, откуда функция была вызвана

существует ли способ узнать, откуда функция в PHP была вызвана? пример:

function epic()
{
  fail();
}

function fail()
{
  //at this point, how do i know, that epic() has called this function?
}
90
задан sepp2k 2 June 2010 в 19:12
поделиться

3 ответа

Используйте функцию debug_backtrace: http://php.net/manual/en/function.debug-backtrace.php

5
ответ дан 24 November 2019 в 07:02
поделиться

Вы можете использовать debug_backtrace () .

Пример:

<?php

function epic( $a, $b )
{
    fail( $a . ' ' . $b );
}

function fail( $string )
{
    $backtrace = debug_backtrace();

    print_r( $backtrace );
}

epic( 'Hello', 'World' );

Вывод:

Array
(
    [0] => Array
        (
            [file] => /Users/romac/Desktop/test.php
            [line] => 5
            [function] => fail
            [args] => Array
                (
                    [0] => Hello World
                )

        )

    [1] => Array
        (
            [file] => /Users/romac/Desktop/test.php
            [line] => 15
            [function] => epic
            [args] => Array
                (
                    [0] => Hello
                    [1] => World
                )

        )

)
122
ответ дан 24 November 2019 в 07:02
поделиться

Используйте debug_backtrace () :

function fail()
{
    $backtrace = debug_backtrace();

    // Here, $backtrace[0] points to fail(), so we'll look in $backtrace[1] instead
    if (isset($backtrace[1]['function']) && $backtrace[1]['function'] == 'epic')
    {
        // Called by epic()...
    }
}
25
ответ дан 24 November 2019 в 07:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: