频道直达 - 专题 - 新闻 - 基础 - 高级 - 安装 - 技巧 - 数据库 - 手册 - PHP - Linux - Java - MySQL - Apache - 麻辣堂 - 狼盟 - Rails社群 - 搜索 - 下载 - 开源 - 论坛
PHP开发资源网 主页>>PHP基础教程>> 收藏此文 | 收藏本站 | 设为首页

PHP6的namespace[命名空间]

来源:www.phpres.com 作者:Angelover 出处:www.phpres.com 2008-6-28 10:18:32 进入讨论组
关 键 词: 空间 命名 可以 import namespace 使用 blogbus::test::Test

  php是否需要namespace已经争论了很久。我是很希望php有namespace或类似的东西的。对于发布类库框架,或者构建大的程序来说是很重要的。可以避免类名和函数名冲突,又不用像Pear里那样把类名弄得老长。当初php5的测试版曾经出现过,后来正式发布时又取消了,让我空欢喜一场。7月初,php6的snap里又加入了namespace,希望这次不要再让我空欢喜了。

  这次的namespace实现和当初的实现有所不同,更接近于C++的语法。

声明namespace时在文件里加上例如

namespace blogbus::test;

function foo(){
    echo "foo";
}

class Test{
    function bar(){
        echo "bar";
    }
}

  该文件中的类和函数:foo,Test就属于blogbus::test的命名空间。在其他文件包含该文件后,可以用blogbus::test::foo()来调用函数,用blogbus::test::Test来使用类。如果只是这样的话那打字还是很麻烦的。所以可以使用
import blogbus::test::Test;
之后就可以直接用Test了。也可以
import blogbus;
之后可以用test::Test来使用。可惜目前的实现没有类似Java的import xxx.*; 或是python的from xxx import *;这样的语法。要导入许多东西的时候还是有些麻烦。

   既然namespace是为了解决命名冲突的问题,那么使用import来节省打字,保护键盘的时候还是需要避免import进来的东西和原有的东西重名的问题。所以import还可以这样用:import blogbus::test::Test as Blogbus。这时,就可以用Blogbus这个名字来使用blogbus::test::Test。你可以$test = new Blogbus();然后echo get_class($test);看看结果,会发现输出的仍然是blogbus::test::Test。

欢迎进入PHP开发资源论坛讨论。
收藏此文】【 】【打印】【关闭
相关文章
图文推荐
论 坛 资 源
PHP开发资源网奋斗目标
阅读排行:
热门技术文档
最新图文档
本站编辑推荐:(本站开通Delphi4PHP专区,欢迎进入论坛交流!)
编缉最近更新文章
网站赞助商
搜索您感兴趣的内容
 
   网站首页 -  网站地图 -  网站合作 -  手册中心 -  通用网址 -  网站论坛 -  网站投稿 -  友情链接 -  帮助中心
版权所有:PHP开发资源网 © 2003-2008 通用网址:PHP资源网 合作媒体: 赛迪网IT技术
互联网违法和不良信息举报中心 | 不良信息举报信箱