我试图只允许访问特定名称空间中的某些php类。有没有办法或者办法让php类只在类似于c的内部作用域的名称空间中可见或可访问?

最佳答案

在PHP中,不能嵌套类。
可以使用命名空间和私有成员。

// Root namespace
namespace MyParentClass
{
  use MyParentClass\PrivateClass\PrivateNode;

  class Node
  {
    private $privateClass;

    public function getPrivateClass()
    {
      if (!isset($this->privateClass)) {
        $this->privateClass = new PrivateNode();
      }

      return $this->privateClass;
    }
  }
}

// Pseudo scope
namespace MyParentClass\PrivateClass
{
  class PrivateNode
  {
    private $name = 'PrivateNode';

    public function getName()
    {
      return $this->name;
    }
  }
}

// Test script
namespace
{
  $node = new MyParentClass\Node();

  echo $node->getPrivateClass()->getName();
}
?>

希望这有帮助。
注意:丹尼尔将链接添加到匿名类中,这可能是另一种有趣的方式。

09-16 22:38