Как узнать откуда вызвана функция в php?

Пользователь

от hoyt.jerde , в категории: PHP , 2 года назад

Как узнать откуда вызвана функция в php?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от dmitrypro77 , 2 года назад

@hoyt.jerde Используйте стандартную функцию debug_backtrace() в PHP чтобы получить детали откуда вызвана функция, ниже пример кода на PHP:


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php

class Example
{
    private $company;

    public function getCompany()
    {
        print_r(debug_backtrace());
        return $this->company;
    }

    public function setCompany($company)
    {
        $this->company = $company;
    }

    public function sayHi()
    {
        $company = $this->getCompany();

        echo $company;
    }
}

$test = new Example();
$test->setCompany("Яндекс");
$test->sayHi();


Всегда открыт для интересных проектов. Ссылки на мои соц. сети в профиле.

Пользователь

от willa_will , год назад

@hoyt.jerde 

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

  1. Используя функцию debug_backtrace(). Она возвращает массив с информацией о вызовах функций, начиная с вызова самой глубокой функции и заканчивая вызовом функции, в которой была вызвана debug_backtrace(). Для примера:
1
2
3
4
function my_function() {
    $trace = debug_backtrace();
    var_dump($trace[0]['file'], $trace[0]['line']);
}


  1. Используя константу FILE и LINE. Константа FILE содержит полный путь к файлу, в котором находится код, а константа LINE содержит номер строки, на которой находится код. Для примера:
1
2
3
function my_function() {
    echo "Функция была вызвана из файла " . __FILE__ . " на строке " . __LINE__;
}


  1. Используя расширение Xdebug. Оно позволяет выводить дополнительную информацию о вызове функций, включая имя файла, номер строки и список аргументов. Для этого нужно установить расширение Xdebug и включить опцию xdebug.collect_params в файле конфигурации php.ini. После этого можно использовать функцию xdebug_call_function(). Для примера:
1
2
3
function my_function() {
    xdebug_call_function();
}


  1. Используя логирование. В PHP существует множество инструментов для логирования, например, библиотека Monolog. Вы можете добавить запись в лог при вызове функции и указать имя файла, номер строки и любую другую полезную информацию. Для примера:
1
2
3
4
function my_function() {
    $logger = new MonologLogger('my_logger');
    $logger->info('Функция my_function была вызвана из файла ' . __FILE__ . ' на строке ' . __LINE__);
}


Независимо от выбранного способа, помните, что информация о вызовах функций может быть полезна при отладке и оптимизации кода.