标题: php6 namespace
Verdana
新手上路
Rank: 1



UID 1217
精华 0
积分 0
帖子 0
阅读权限 10
注册 2007-6-9
发表于 2007-7-23 11:42  资料  个人空间  短消息  加为好友 
php6 namespace

原文地址:http://phpeye.com/bbs/viewthread.php?tid=106


PHP6 的 namespace

PHP6 的 snapshot 版本中,namespace 功能已经实现了

一、如何定义 namespace?


PHP代码如下:
// net/phpvim/code/Shape.php
namespace net::phpvim::code;

class 
Shape{
}

function 
draw() {
    return 
"draw() in Shape.php\n";
}

function 
getCurrentNS() {
    return 
__NAMESPACE__;
}

/* vim: set expandtab tabstop=4 shiftwidth=4: */




所有的类和函数名称会自动加上 namespace 名称作为前缀,相同的 namespace 也可以在多个 PHP 文件中被定义。

比如上面的代码中,完整的类名和函数名是:

net::phpvim::code::Shape
net::phpvim::code::draw()


二、如何使用呢?


PHP代码如下:
// net/phpvim.net/code/Painter.php
require_once 'net/phpvim/code/Shape.php';

import net::phpvim::code;
import net::phpvim::code::Shape;
import net::phpvim::code::Shape as CPC_Shape;

// Create an instance object for Shape class
$shape0 = new net::phpvim::code::Shape();
$shape1 = new code::Shape();
$shape2 = new Shape();
$shape3 = new CPC_Shape();

// output: draw() in Shape.php
print net::phpvim::code::draw();
print 
code::draw();

// output: net::phpvim::code
print code::getCurrentNS();

/* vim: set expandtab tabstop=4 shiftwidth=4: */




import 指令

import 可以将任意的 package(这里借用一下 Java 的概念)导入到当前 scope 中来。
import 不可以使用在函数或者类中。
import 生效范围为当前定义位置到所在文件的结尾。
import 可以通过 AS 关键字定义别名。
import A::B; 等同于 import A::B as B。


三、其它
特殊的 empty namespace ::


PHP代码如下:
import net::phpvim::code;
// 调用会失败,因为 draw()  是定义在net::phpvim::code 的 namespace 下面
// 而不是在全局范围内
echo ::draw(); 
/* vim: set expandtab tabstop=4 shiftwidth=4: */




:: 是一个特殊的 namespace,以 :: 开头的调用,将会在 global 范围查找并绑定相应的 Class 或者 Function。换句话说,定义在任意 namespace 中的 draw() 函数都不会被调用,而是调用 global 范围内的 draw() 函数。

constant __NAMESPACE__

__NAMESPACE__ 表示当前的 namespace 的名称。

顶部
uupd0fqoo
新手上路
Rank: 1



UID 1717
精华 0
积分 0
帖子 5
阅读权限 10
注册 2008-5-22
发表于 2008-5-24 13:43  资料  个人空间  主页 短消息  加为好友  QQ
赞一个

真不错,赞一个,继续努力啊 ------------------------- There is buy wow gold web; you can buy really cheap wow gold here.Buy professional power leveling services,Cheap WoW Gold,Cheap WoW Gold,Cheap WoW Gold,Cheap WoW Gold,





光阴似箭
顶部
 



当前时区 GMT+8, 现在时间是 2008-11-21 01:28

    本论坛支付平台由支付宝提供
携手打造安全诚信的交易社区 Powered by Discuz! 5.5.0  © 2001-2007 Comsenz Inc.
清除 Cookies - 联系我们 - PHP开源项目网 - Archiver - WAP