确保只有一个特定的类可以在PHP中创建另一个特定类的实例,而不需要嵌套类之类的东西,最好的方法是什么?是否有任何模式或我是否被迫使用反射API?
示例:只有对象/类A才能创建类B的对象。
您可以使用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
然后,当来电者不是时,你可以检查来电者的姓名并拒绝接通
找出哪个类调用了另一个类中的方法