在PHP中是否可以像在C#中一样创建嵌套类?

4
在C#中,你可以像这样拥有嵌套类,它们对于那些在一个特定类的范围以外没有意义的类非常有用,例如在工厂模式中:
public abstract class BankAccount
{
  private BankAccount() {} 
  private sealed class SavingsAccount : BankAccount { ... }
  private sealed class CheckingAccount : BankAccount { ... }
  public BankAccount MakeSavingAccount() { ... }
  public BankAccount MakeCheckingAccount() { ... }
}

在PHP中是否有可能实现这个功能?

我曾经读过关于PHP 5计划中包含此功能,但后来又取消了,然后又计划重启,但没有找到确定的信息。

有人知道如何在PHP 5.3中创建嵌套类(在另一个类的范围内定义的类)吗?就像上面C#的例子一样。

1个回答

1

不,PHP中不可能实现这一点。类必须存在于全局命名空间中;你能做的最好的事情就是在所有其他代码中假装它们不存在。

这种情况在PHP中很常见;例如,PHP缺乏静态初始化器,因此如果您想要急切地初始化类的静态成员,必须通过从类外部调用公共方法来完成。很丑陋。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接