Есть ли способ получить функцию звонящего с чем-то еще, чем debug_backtrace()?PHP: классы друзей и неотрицательная функция вызывающего абонента/класс
Я ищу менее жадный способ имитации областей как друг или внутреннего.
Скажем, у меня есть класс А и класс B.
До сих пор я использую debug_backtrace()
, который слишком жадным (ИМХО).
Я думал, что-то вроде этого:
<?php
class A
{
public function __construct(B $callerObj) {}
}
class B
{
public function someMethod()
{
$obj = new A($this);
}
}
?>
Это может быть хорошо, если вы хотите ограничить его к одному определенному классу, но, скажем, у меня есть 300 классов, и я хочу, чтобы ограничить его 25 их?
Одним из способов может быть с помощью интерфейса для агрегирования:
public function __construct(CallerInterface $callerObj)
Но это все еще некрасиво код.
Кроме того, вы не можете использовать этот трюк с статический классов.
Есть идеи?
Я не могу ответить на ваш вопрос относительно части php, однако я хочу прокомментировать, что использование интерфейса - это очень надежное и надежное решение. Ничего уродливого в этом нет. По крайней мере, не в примере, который вы предоставляете. – Henri
@ Хенри: Как я уже сказал в своем посте «Более того, вы * не можете использовать этот трюк со статическими классами *». – avetisk