PHP私有或隐藏类

时间:2017-12-23 14:37:49

标签: php

我试图只允许访问某些名称空间内的某些php类。是否有办法或解决方法使PHP类仅在类似C#的内部作用域的命名空间中可见或可访问?

1 个答案:

答案 0 :(得分:3)

在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();
}
?>

希望这有帮助。

注意:Daniel给匿名类添加了一个链接,这可能是另一种有趣的方式。