字符串首先 显示。然后,要看到全局定义的字符串,只需使用语 法 \ASTRING。 有了这些简单的规则, 便可以使用任意 数量的名称空间,而不必担心名称冲突。 有了名称空间功能,和之前相比,代码之间的界限更 加清晰。而这一点又有助于团队环境中的代码整合。 换句话说, 不同的团队可以分配他们自己的名称空间, 当所有团队成员都遵循这个惯例时,名称冲突的情况 应该会降为零。这也是 5.3.0 版对 PHP 语言在面向
对象方面的一个增强。 类方法重载 在 PHP 中,术语重载(overloading) 与通常的面向 对象上下文稍有不同。 Java? 语言或 C# 中, 在 “重 载” 方法是指为不同参数列表提供相同代码的方法。 例如,如果有一个名为 draw(String str) 的方法, 那么重载的方法可以有以下形式:draw(String str, int i)。这种方法符号名称被称作方法签名,为了便 于重载,返回类型被省略。 在 PHP 中,“重载” 是指动态创建的方法和属性。 这实际上是动态代码,任何这样的动态实体
都是由所 谓的魔术方法(magic methods) 来处理。可以在一 个类中为各种不同的动作创建这些魔术方法。然后, 当代码中遇到未声明或不可见的属性或方法时,便可 以调用重载方法。这样风格的重载提供了很大程度上 的灵活性。 听起来有些复杂, 所以来看看一个具体的例子。 清单 4 展示如何使用 PHP 重载调用对象和类方法。 清单 4. PHP 重载
public function __call($name, $arguments) { // The value of $name is case sensitive. echo "Calling object method '$name' " . implode(', ', $arguments)。 "\n"; } /** As of PHP 5.3.0 */ public static function __callStatic($name, $arguments) { // The value of $name is case sensitive. echo "Calling static method '$name' " . implode(', ', $arguments)。 "\n"; } } $obj = new OverloadedMethodTest; $obj->runOverloadedTest('in an object context'); OverloadedMethodTest::runOverloadedTest('in a static context'); // As of PHP 5.3.0 ?>
清单 4 中的代码产生以下输出:
Calling object method 'runOverloadedTest' in an object context Calling static method 'runOverloadedTest' in a static context
在清单 4 中, 注意重载的代码是如何根据调用代码来 推断方法名和参数的:
$obj->runOverloadedTest('in an object context'); OverloadedMethodTest::runOverloadedTest('in a static context'); // As of PHP 5.3.0
要使用这种能力,程序员需要承担较大的责任。虽然 重载为编写灵活的代码提供了便利,但同时也为错误 提供了土壤。所以,使用重载时应该谨慎,并且要有 严格的代码测试纪律。
变量解析和 heredoc PHP 的优势之一在于字符串解析。PHP 对于字符串的 长度没有限制, 只要主机的可用内存够大就行。 清单 5 展示了使用 PHP 时拥有的灵活性。 清单 5. PHP 解析
清单 5 中的代码产生以下输出:
coffee's taste is great He drank a number of He drank some coffees He drank some coffees
清单 5 中的代码并不是直到 PHP V5.3.0 才有的。这 里给出这段代码,只是为了提醒您字符串处理支持和 一些解析规则。但是,PHP V5.3.0 增加了增强的 heredoc 语法支持。清单 6 显示了一个简单的例子。 清单 6. PHP V5.3.0 heredoc 的应用
>>"FOOBAR" Hello World! FOOBAR; ?>
清单 6 中的代码产生以下令人惊叹的输出: Hello World!
那么,清单 6 有什么特别之处呢?PHP V5.3.0 中的 heredoc 支持使用双引号。其优点主要在于,双引号 中的内容不会被解析,这样
便有了更大的灵活性。基 本上,这只是在已经强大的字符串支持的基础上增加 了更多的灵活性。PHP V5.3.0 的在线参考包括更多关 于这个主题和 PHP V5.3.0 其他相关主题的资料。 PHP 是一项有吸引力的技术。它为拼凑式 (pick-and-mix)网站开发提供了便利。您可以为网 站增加数据库,PHP 语言为此提供了所需的绑定。您 不需要重量级的应用服务器或 servlet 技术。 换句话 说,只需极小的投资 — 无论是财务上还是智力上的 投资,就可以控制环境。 PHP 语言在不断演变,很高兴看到 V5.3.0 中的很多 改进有效地增强了面向对象方面。 这有助于 PHP 在与 那些更重量级 (也更昂贵) Web 设计方法的竞争中 的 胜出。