网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > PHP > 正文
PHP5.3新特性:名称空间(Namespaces)
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/12/10
下载{$ArticleTitle}原创论文样式

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

  Namespaces

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

  代码更清晰

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

  CODE:

function MY_wrapper() {}
class MY_DB { }
define(''MY_CONN_STR'', '''');
MY_wrapper();
new MY_DB();
MY_CONN_STR;

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

  CODE:

namespace MY;
function wrapper() {}
class DB { }
const CONN_STR = '''';
use MY AS MY;
wrapper();
new DB();
CONN_STR;

  一个文件中定义了多个namespace

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

  CODE:

namespace LIB;
class MySQL {}
class SQLite {}
$b = new SQLite();
namespace LIB_EXTRA;
class MScrypt {}
$a = new MScrypt();
var_dump(
        get_class($a),
        get_class($b)
);

  以上代码输出为:

  CODE:

string(18) "LIB_EXTRA::MScrypt"
string(11) "LIB::SQLite"

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

  namespace的优先级

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

  CODE:

namespace foo;
function strlen($foo) { return htmlentities($foo); }
echo strlen("test"); // test
echo ::strlen("test"); // 4
echo namespace::strlen("test"); // test

  namespace和autoload的友情

  autoload会根据namespace名称以及class名称来解析类文件位置

  仅当namespace和全局范围都没找到class定义的情况下,autoload才会被触发

  在namespace中定义的__autoload不会被自动调用

  CODE:

function __autoload($var) { var_dump($var); } // LIB::foo
require "./ns.php"; /*
        <?php
                namespace LIB;
                new foo();
*/

  namespace一些辅料

  CODE:

namespace really::long::pointlessly::verbose::ns; 
__NAMESPACE__; // 新增的魔法常量,表示当前namespace名称
class a{}  
get_class(new a()); // really::long::pointlessly::verbose::ns::a
use really::long::pointlessly::verbose::ns::a AS b; // 从名称空间中引用一个类

  注:这里的内容节选自pdf Introduction to PHP 5.3 Slides,后文不再复述。

(责任编辑:admin)

  • 上一篇资讯: PHP5.3新特性:新语言特性
  • 下一篇资讯: 初步接触smarty3
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号