paulenot
@paulenot
IT Issue

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

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

function executer1(){
	printer();
}

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


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

$class = debug_backtrace()[1]['class'] ?? '';
$executer = ($class ? "$class::" : "") . (debug_backtrace()[1]['function']  ?? 'direct call');
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@N0zzy
function printer($executer){
  echo 'Функцию '.__FUNCTION__.'() вызвал '.$executer.'()';
}

function executer1(){
  printer(__FUNCTION__);
}

function executer2(){
  printer(__FUNCTION__);
}


ПС. Наверное так? А то такое городят комментаторы...
Ответ написан
Ваш ответ на вопрос

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

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