background image

 PHP 命名空间

 在 PHP 5.3 中,最重要的一个新特性就是对命名空间引入,在此之前,PHP 开发

者对于 PHP 中命名空间的实现,已经变得异常的渴望。当 PHP 应用开始变得巨大,

并且更加复杂的时候,命名空间是解决代码冲突的必要手段。  批评者:混乱的

PHP

  像 C#和 Java 这些语言,是被设计和遵循严格的语法标准的。PHP 是演化的。最早

的版本发布于 1995 年,版本号 3,是面向过程的语言。PHP 4 包含了最基本的面向对

象,而 PHP 5 提供了合适的标准 OOP 模型,命名空间在版本 PHP 5.3 中被加入其中。

  PHP 批 评 者 声 明 说 这 个 语 言 是 混 乱 的 。 函 数 名 不 一 致 ( 例 如

strpos,str_split,substr),对象处理是无用的,还有一些语法同其他语言相比,不是

极其怪诞,就是异乎寻常。然而,PHP 仍然保持着使用最广泛的服务器端开发语言的

头把交易。它的才华主要在下面的长处:

  

◆初学者可以从简单的面向过程编程开始。

  

◆他们无须触及 OOP 技术仍然可以有所见数

  10 年前为 PHP 3 编写的代码仍然可以运行在 PHP 5.3 下。可能需要一些微小的调

整,但是很少需要大量重写。PHP 代码可能并不总是可爱的、有逻辑的或者优雅的,

但是相比其他选择它的开发总是快捷和容易被理解的。

  PHP 命名空间的实现( f* d+ R7 Z3 ^. p

  不像 C#和 Java,PHP 不得不保持没有名字空间的代码的兼容性。这个已经被实

现,你可以选择使用或者不使用命名空间。然而,如果你使用 PHP 5.3 或更高版本,

我推荐使用命名空间,即使你在项目中只使用相同的名字。( ]7 J5 R' h' A0 [) Q

  使用 namespace 和 use 作为命名空间操作符看起来很有逻辑。一些开发者可能不

同意,但是在这种情况下它们如何命名其实并不重要。最后,回到反斜杠的问题上。

多数批评者人为这是丑陋的,难以阅读,并且在 Mac 上难以输入。即便如此,我仍然

认为它比曾经提议过的两个冒号要好。例如下面的静态方法调用: 1 A2 ~. @7 x4 g* 

V& Q$ M0 u

  // PHP 5.3 beta 版静态方法调用 9 A4 L1 |2 s: J% y- C' x9 O

   echo ::App::Lib1::MyClass::WhoAmI();

  // PHP 5.3 正式版静态方法调用