uonick
@uonick
Сгибатель бананов

Как узнать что вызвало метод трейта?

Привет!

Есть класс модельки и трейт. В трейте есть какой-то метод. При вызове метода модели срабатывает метод трейта и все отлично.
Модель можно получить по __CLASS__ , вызваный метод трейта по __METHOD__.

Вопрос: а как узнать какой метод модели его вызвал?
  • Вопрос задан
  • 167 просмотров
Решения вопроса 1
sergiks
@sergiks Куратор тега PHP
♬♬
debug_backtrace() вернёт массив стека вызова.

Соотв. вызывавшая нынешнюю функцию окажется под индексом 1:
function A() {	Foo(); }
function B() {	Foo(); }

function Foo() {
	$stack = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
	if( count($stack) > 1) echo "Меня вызвали из " . $stack[1]['function'] . PHP_EOL;
}

A(); // попробуйте поменять на B();
// Меня вызвали из A
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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