Thursday, February 19, 2009

[搬移] PHP 5.3 新 Namespace 初探

http://sskaje.spaces.live.com/blog/cns!CD0E835D6C568521!1337.entry
December 06, 2008


白天的时候,收到邮件,PHP5.2.7正式发布了,经历了5个RC。同时,早几分钟,PHP5.3的Alpha3也正式发布了。诡异的是居然把Alpha4放在RC的栏目里。

从官网新闻的说明,最重要的更新,第一项就是namespace,而且按官网所说,相关文档已经更新。
翻了翻相关的文档部分,一个最大的区别,操作符的变化。毕竟以前只是简单地拿文档的用例做过测试,并没有尝试在自己的代码里加入相关内容,所以对细节的东西了解还是不多,但是操作符号的变化,最直观。

前一个版本的文档中,namespace的操作符也是所谓的 Scopes Resolution Operator, 即 ::;但是新的版本中,已经换成了反斜杠 \
于是,子空间的用法类似 namespace NameSpace\SubNameSpace,namespace中全局函数的标准调用方法 \strlen($string)

脚本文件中,namespace语句的启用,必须保证前面没有declare之外的使用,多个namespace的时候只要处理第一个。
顺道一句,ticks按计划,在5.3中已经被deprecated了,而在6中将移除。
但是同时这里又多了一个项目,encoding,形如 declare(encoding='UTF-8');

然后,部分调用的用法,如use,暂时还没测试。


EDIT: 并非所有的global函数都得用\来调用,事实是,某些根本不能这样用,不确定是不是namespace的机制还没写好,测试了,require_once, isset之类的“函数”是没法这样的,必须直接调用,否则就有个T_STRING的错误。毕竟这些不是真正的函数。http://www.php.net/manual/en/reserved.php

No comments:

Post a Comment