站长资讯网
最全最丰富的资讯网站

PHP V5.3 中的新特性: 名称空间

 

  很多语言都提供了名称空间特性,包括 C++ 和 Java? 编程语言。引入名称空间是为了帮助组织大型的代码库,因为在大型代码库中,应用程序经常会出现函数名或类名重叠问题,这会引起其他问题。使用名称空间可以帮助识别代码提供的函数或实用程序,甚至可以帮助指定其来源。一个例子就是 C# 中的 System 名称空间,它包含有 .NET 框架提供的所有函数和类。

  在其他未提供正式名称空间的语言中(比如 PHP V5.2 以及更早版本),人们常常通过在类或函数名中使用特定的命名约定来发挥名称空间的作用。比如 Zend Framework,其中每个类名以 Zend 开头,并且每个子名称空间使用下划线分隔开。比如,类定义 Zend_Db_Table 表示 Zend Framework 中的一个类并且提供数据库功能。这种方法的一个缺点就是产生的代码非常繁琐,尤其是那些包含好几层的类或函数(Zend Framework 中的 Zend_Cache_Backend_Apc 就是一个例子)。另一个问题就是所有代码必须遵循这种风格,因此如果在应用程序中集成了不遵循这种命名约定的第三方代码后,问题就复杂了。

  PHP 名称空间的发展也并非一帆风顺。它们最初计划引入到 PHP V5 中,但是由于无法获得恰当的实现,因此在开发阶段被放弃。最后决定将它们并入到 PHP V6 中,在 2007 年决定将所有 nonunicode 增强移到另一个 PHP V5.x 发行版后,名称空间随后被移入到 PHP V5.3 中。尽管自最初的设计之后绝大部分名称空间行为没有发生变化,但是使用哪一种操作符却成了最大的问题,并且社区成员对这个问题有不同的看法。2008 年 10 月最终决定使用反斜杠作为操作符,从而解决了所有在语言设计和适用性方面使用各种其他操作符的问题。

 

  PHP 名称空间

 

  PHP 从其他语言中借鉴了很多名称空间的语法和设计 – 最突出的是 C++.然而,PHP 名称空间在某些方面具有自己的独特性,这对于希望像在其他语言中那样使用名称空间的用户来说是一个挑战。在本节中,我们将研究 PHP 名称空间的工作方式。

 

  定义一个名称空间

 

  定义一个新的名称空间非常简单。要定义新名称空间,在一个文件中添加清单 1 中的代码作为第一个命令或输出。

 

  清单 1. 定义名称空间

  1

赞(0)
分享到: 更多 (0)
网站地图   沪ICP备18035694号-2    沪公网安备31011702889846号