本文提出在php5.0x时间和后来被
取消,实现php6。这时间提前到PHP5.3版本,可以看出开发商的关注和谨慎的态度。
当正式发布时,
文档的内容可能已经过时(文档可能过时了),所以这里简要
介绍了名称
空间的用法:首先,声明一个名称空间并添加新的关键字名称空间,它应该从类
文件的开头开始。
复制代码代码如下所示:
< PHP
命名空间项目::模块;
类
用户{
const status_ok =真;
函数寄存器($ data){
…
}
…
} >
然后可以在
控制器(可能是其他文件)中调用它。
复制代码代码如下所示:
用户=新项目::模块::用户();
为用户->登记($ register_info);
没有相同的两个像往常一样,但我们可以
连接两个
独立的班,为
复制代码代码如下所示:
项目::模块:用户;
项目::模块:博客;
在这种方式中,它是更容易描述和理解从
语言本身的变量和类之间的关系,从而避免了传统project_module_blog冗长的命名方式。
上面的描述可能很难说明使用名称空间的好处,新添加的用法和关键字可能更好地解释这个问题。
复制代码代码如下所示:
使用项目::模块;
$ =新模块::用户();
为用户->登记($ register_info);
甚至到那种程度
复制代码代码如下所示:
使用项目::::用户moduleuser模块;
moduleuser美元=新用户;
为用户->登记($ register_info);
类中的常数也可以例如通过命名空间,访问,在上面的类的status_ok可以通过命名空间。
复制代码代码如下所示:
项目::::::status_ok用户模块
u3002further访问,也可以使用别名来简化变量的
名字。
复制代码代码如下所示:
使用项目::::::status_ok用户模块作为status_ok;
回声status_ok;
顺便说一句,提出了全局命名空间的概念。所谓的超空间是一个变量,类和函数,不指定namespace.such作为
复制代码代码如下所示:
函数(){
…
}
这个函数可以用富()来
执行,也可以使用。
最后,随着autoload函数的使用,你可以加载类,指定的命名空间的名称。简单的
功能如下
复制代码代码如下所示:
功能__autoload($ className){
名称= strtolower美元($ className);
美元str_replace classname =(':',directory_separator,$ className);
require_once(dirname(__file__)。类名。美元。。类。php);
}
因此,例如,调用
复制代码代码如下所示:
__autoload(项目::::用户模块);
你可以自动加载project_module_user.class.php文件(虽然它似乎并不容易)。