Есть ли способ получить функцию вызывающего абонента с помощью чего-то еще, кроме debug_backtrace ()?
Я ищу менее жадный способ моделирования областей, например друг или внутренний .
Допустим, у меня есть класс A и класс 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)
Но это все-таки некрасивый код .
Более того, вы не можете использовать этот трюк с статическими классами.
Есть идеи получше?