VDS за 300р от нашего партнера SpaceWeb
[96]
29 Янв 2012, 19:07

Узнать из какого класса была вызвана функция

Привет!

Подскажите, возможно ли узнать из какого класса была вызвана функция. То есть, у меня есть класс и отдельная глобальная функция. Эта функция вызывается в нескольких классах, и мне необходимо в ней узнавать из какого класса был произведен вызов. Возможно ли это вообще?

Комментарии (3)
grom 30.01.2012 11:51

Да это возможно. Но будет работать через костыль.

class A
{
func();
}

class B
{
func();
}

$a = new A();
$b = new B();

function func()
{
$backtrace = debug_backtrace();

$class = null;
if(isset($backtrace[1]['class']))
{
$class = $backtrace[1]['class'];
}

echo $class;
}

Имя класса будем вынимать из функции debug_backtrace.
0
Kein 03.02.2012 14:31

Я бы хотел заметить что debug_backtrace() требует не мало памяти, и для рабочего приложения мне это кажется излишним. Наверное лучше все таки смотреть выше и править архитектуру.
+2
benzin 03.02.2012 17:31

Да, не понятно почему нельзя сделать так:

class A
{
func(__CLASS__);
}

class B
{
func(__CLASS__);
}

$a = new A();
$b = new B();

function func($class)
{
echo $class;
}

Память лучше экономить.
+2

Добавить комментарий

Войдите, чтобы написать о чем-нибудь...
Вход Регистрация
Web.onRails
Найди ответ на любой вопрос по Веб-разработке!
задать вопрос...
Вы можете разместить Рекламный пост самостоятельно, либо отправив контент по адресу admin@webonrails.ru→ Оплата здесь ←Неоплаченные посты удаляются.
Метки:
Лучшее
[52]
16 Окт 2011, 15:38
Вывести все элементы POST
[просмотров 22418]
[100]
19 Дек 2014, 16:16
User-agent для Internet Explorer 11
[просмотров 16465]
[74]
31 мая 2011, 11:48
Python проверка существования переменной
[просмотров 13063]
[125]
21 Июл 2011, 14:04
Python Imaging Library (PIL)
[просмотров 10099]
[4]
10 Окт 2018, 15:33
Как запретить просмотр сайта по IP?
[просмотров 9881]
[315]
11 Авг 2011, 00:21
Спецификация HTML5 от W3C
[просмотров 7419]
[50]
31 Дек 2011, 14:57
Cron запускать раз в неделю
[просмотров 6727]

Вести с Хабра