paulenot
@paulenot
IT Issue

Какая функция вызвала эту функцию в PHP?

Как определить, кто вызвал функцию printer()?
function printer(){
	$executer = '?'; // кто вызвал принтер?
	echo 'Функцию printer() вызвал '.$executer.'()';
}

function executer1(){
	printer();
}

function executer2(){
	printer();
}
  • Вопрос задан
  • 684 просмотра
Решения вопроса 2
Vamp
@Vamp
Это можно определить при помощи функции debug_print_backtrace
Ответ написан
ipatiev
@ipatiev Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых
$executer = debug_backtrace()[1]['function']  ?? 'direct call';


или чуть более расширенный вариант

$class = debug_backtrace()[1]['class'] ?? '';
$executer = ($class ? "$class::" : "") . (debug_backtrace()[1]['function']  ?? 'direct call');
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
25 апр. 2024, в 12:03
75000 руб./за проект
25 апр. 2024, в 11:49
25000 руб./за проект
25 апр. 2024, в 11:37
40000 руб./за проект