2012-02-08 95 views
2

是否有任何创建公共或私有或受保护的类在命名空间就像java?有无论如何定义公共或私人或受保护的类在PHP

像...

namespace foo; 

public class Account { 
    ....... 
} 


private class PrivateAccount { 
....... 
} 

请让我知道,如果有什么解决办法在PHP中做到这一点。

+1

你能解释一下你想如何使用私有类吗?为什么施加这个限制?请记住,PHP也是一种动态类型语言,因此除了手动检查之外,您没有太大的自由来自动对类型施加限制。同样,你可以手动限制构造函数(通过传递一些特殊的字符串或类似的东西),但没有多少意义。 – 2012-02-08 11:21:31

+0

我想将类的使用限制在命名空间中。至少我想抛出一个错误,如果我试图在这个命名空间之外创建这个类的实例。 – SuVeRa 2012-02-08 11:29:13

+0

也许我应该重申一遍。为什么施加这个限制?您不能像使用强类型语言那样轻松地在动态类型语言中强加相同级别的严谨性。你最好的办法是编写好的文档和构建你的代码,以便明确哪些类不应该被搞混。 – 2012-02-08 11:32:07

回答

0

通常,您所做的是声明该类的构造函数为private。然后,您可以在类中创建一个单独的静态函数,它将执行一些检查(即检查名称空间),并通过调用私有构造函数有条件地返回该类的实例。这通常也是你实现单身人士的方式。

+3

你可以像这样防止初始化(就像你说的实现一个单例一样),但是这并不妨碍对象实例被传递到命名空间的范围之外。 – 2012-02-08 11:35:33

3

不,PHP中的类可能不是任何东西,只是公开的,并且是隐式声明的。从PHP docsclasses in PHP5

基本类定义以关键字class,后面跟着类名,然后是一对包围属于类的属性和方法的定义大括号的开始。

将可见性关键字放在类的前面可能会导致致命错误。

相关问题