快速业务通道

php 5.3新特性介绍

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-03-15

之前陆续介绍了php 5.3的一些新特性,正好上周看到ZendCon关于5.3的ppt,介绍的更为详细,那么这里做个归总或者说翻译:)

Namespaces

php 5.3最大的改动,毫无疑问就是Namespaces(此前有一篇相关的PHP Namespaces FAQ)。这给php开发人员带来的好处不少,广为人们所诟病的函数命名问题也得到了解决。

代码更清晰

5.3之前常见的代码,需要自定义前缀区分函数和类名

PLAIN TEXT
CODE:
  1. function MY_wrapper() {}
  2. class MY_DB { }
  3. define(''MY_CONN_STR'''''');
  4. MY_wrapper();
  5. new MY_DB();
  6. MY_CONN_STR;

 

使用名称空间之后,代码看上去更加clean。

PLAIN TEXT
CODE:
  1. namespace MY;
  2. function wrapper() {}
  3. class DB { }
  4. const CONN_STR = '''';
  5. use MY AS MY;
  6. wrapper();
  7. new DB();
  8. CONN_STR;

 

一个文件中定义了多个namespace

如果一个文件中定义了多个namespace,应该怎样处理?

PLAIN TEXT
CODE:
  1. namespace LIB;
  2. class MySQL {}
  3. class SQLite {}
  4. $b = new SQLite();
  5. namespace LIB_EXTRA;
  6. class MScrypt {}
  7. $a = new MScrypt();
  8. var_dump(
  9.         get_class($a),
  10.         get_class($b)
  11. );

 

以上代码输出为:

PLAIN TEXT
CODE:
  1. string(18) "LIB_EXTRA::MScrypt"
  2. string(11) "LIB::SQLite"

 

php是解释执行的语言,以上结果合情合理。

namespace的优先级

namespace中定义的函数,类和常量优先,其次才是全局的。

PLAIN TEXT
CODE:
  1. namespace foo;
  2. function strlen($foo) { return htmlentities($foo)}
  3. echo strlen("test")// test 
  4. echo ::strlen("test")// 4
  5. echo namespace::strlen("test")// test

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号