【发布时间】:2018-06-05 19:21:53
【问题描述】:
我试图只允许访问某些命名空间中的某些 php 类。有没有办法或变通方法使 php 类仅在类似于 C# 的内部范围的命名空间内可见或可访问?
【问题讨论】:
-
不,PHP 不支持除公共类之外的任何内容。 (stackoverflow.com/questions/38455380/…)
标签: php
我试图只允许访问某些命名空间中的某些 php 类。有没有办法或变通方法使 php 类仅在类似于 C# 的内部范围的命名空间内可见或可访问?
【问题讨论】:
标签: php
在 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();
}
?>
希望这会有所帮助。
注意:丹尼尔放了一个匿名类的链接,这可能是另一种有趣的方式。
【讨论】: