PHP-确保只有一个特定类可以创建另一个特定类别的实例的最佳方法


PHP - Best way to ensure that only one specific class can create an instances of another specific class

确保只有一个特定的类可以在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

然后,当来电者不是时,你可以检查来电者的姓名并拒绝接通

找出哪个类调用了另一个类中的方法