什么可能是确保只有一个特定的类可以在PHP中创建另一个特定类的实例而不需要嵌套类的最佳方法?是否有任何模式或我被迫使用Reflection API?
示例:只有对象/类A能够创建B类对象。
答案 0 :(得分: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
然后你可以检查来电者的姓名,并在来电者不是那个时拒绝实例