paulenot
@paulenot
IT Issue

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

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

function executer1(){
	printer();
}

function executer2(){
	printer();
}
  • Вопрос задан
  • 683 просмотра
Решения вопроса 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');
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы