我试图只允许访问特定名称空间中的某些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();
}
?>
希望这有帮助。
注意:丹尼尔将链接添加到匿名类中,这可能是另一种有趣的方式。