Лучший способ убедиться, что только один конкретный класс может создавать экземпляры другого определенного класса

Что может быть лучшим способом гарантировать, что только один определенный класс может создавать экземпляры другого определенного класса в PHP без чего-то вроде вложенных классов? Есть ли шаблон или я вынужден использовать Reflection API?

Пример: только объект / класс A может создавать объекты класса B.

0

Решение

Вы можете проверить звонящего с помощью debug_bugtrace ()

class Foo
{
public function __construct()
{
$bar = new Bar();
$bar->test();
}
}

class Bar
{
public function test()
{
$trace = debug_backtrace();
if (isset($trace[1])) {
// $trace[0] is ourself
// $trace[1] is our caller
// and so on...
var_dump($trace[1]);

echo "called by {$trace[1]['class']} :: {$trace[1]['function']}";

}
}
}
$foo = new Foo();

Этот пример печатает called by Foo :: __construct

Затем вы можете проверить имя вызывающего абонента и отказать в заявлении, когда вызывающий не тот

Узнайте, какой класс вызвал метод в другом классе

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]