我试图只允许访问某些名称空间内的某些php类。是否有办法或解决方法使PHP类仅在类似C#的内部作用域的命名空间中可见或可访问?
答案 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给匿名类添加了一个链接,这可能是另一种有趣的方式。