【问题标题】:PHP Private or Hidden ClassPHP 私有或隐藏类
【发布时间】:2018-06-05 19:21:53
【问题描述】:

我试图只允许访问某些命名空间中的某些 php 类。有没有办法或变通方法使 php 类仅在类似于 C# 的内部范围的命名空间内可见或可访问?

【问题讨论】:

标签: php


【解决方案1】:

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

希望这会有所帮助。

注意:丹尼尔放了一个匿名类的链接,这可能是另一种有趣的方式。

【讨论】:

    猜你喜欢
    • 2012-06-07
    • 2012-02-28
    • 2021-06-14
    • 2023-03-28
    • 1970-01-01
    • 2018-12-03
    • 2015-10-31
    • 2010-11-29
    • 1970-01-01
    相关资源
    最近更新 更多