五种常见的 PHP 设计模式

设计模式只是为 Java™ 架构师准备的 —— 至少您可能一直这样认为。实际上,设计模式对于每个人都非常有用。如果这些工具不是 “架构太空人” 的专利,那么它们又是什么?为什么说它们在 PHP 应用程序中非常有用?本文解释了这些问题。 http://www.ibm.com/developerworks/cn/opensource/os-php-designptrns/

4.1 静态方法和属性-深入PHP面向对象.模式与实践

摘自:深入PHP面向对象.模式与实践

第四章 高级特性
4.1 静态方法和属性
第2章的所有例子使用的都是对象.我们把类当作生成对象的模板,把对象作为活动组件,对象的方法可以被调用,对象的属性可以被访问.之前的例子也暗示了,面向对象编程中的实际操都是通过类的实例(而不是类本身)完成的.毕竟类仅仅是对象的模板.

事实并非如此简单.我们不仅可以通过对象访问方法和属性,还可以通过类来访问它们.这样的方法和属性属性是”静态的”(static),必须用static关键字来声明.

class StaticExample{
static public $sNum = 0;
static public function sayHello) {
print “hello”;
}
}

==========================================
注解:static关键字是在php5中引入的,在php4程序中不能使用.
========================================== Continue reading

php设计模式介绍之注册模式

《PHP 设计模式介绍》第五章 注册模式

我们通常认为避免使用全局变量是一种好的选择,因此,对象经常被作为参数从一段代码传递到另一段。但是传递实例的一个问题就是对象有时候不知道将要 传递给谁——?经过一个函数后才被传递到真正需要这个对象的函数。

为了编写,阅读,修改代码的方便,最好能够减少不同对象的数量,并且能够将大量广泛使用的对象统一表示为一个单一,常用的对象。

问题

你如何通过单一的全局的对象来获取对其它对象的引用?

解决方案

“注册模式”就像“对象的电话簿”——储存并且能够取回对对象引用的登记簿。(注:PHP中的“联合数组”也起到了类似“电话簿”的功能。事实上, “注册模式”就是围绕PHP中强大的数组完成的。)“注册模式”的一些特性经常被包含在“单一模式”中(参见第四章),使得“注册模式”成为你整个应用信 息的决定性来源。 Continue reading