单例模式(SingletonPattern单例模式或单元素模式)。单例模式有以下三个特点:1.一个类只能有一个类对象(只能实例化一个对象)2.必须自己创建这个实例3.必须实例化自己并提供这个实例给整个系统4.构造函数,clone函数必须声明为private,并且必须提供一个访问该实例的public静态方法(通常命名为getInstance),从而返回对唯一实例的引用使用单例模式的原因:PHP语言是一种解释型脚本语言,这种运行机制使得每一个PHP页面都被解释执行,所有相关的资源都会被Recycle。也就是说,PHP在语言层面是没有办法让一个对象常驻内存的,这一点不同于编译型语言。比如在java中,单例会一直存在于应用程序的整个生命周期中。这种优势在应用程序生命周期中的独特性。但是,在PHP中,所有的变量,无论是全局变量还是类的静态成员,都是页面级的。每次执行一个页面,都会重新创建一个新的对象,页面执行完毕后清空。这样的PHP单例模式是没有意义的,所以我认为PHP单例模式只有在需要共享多个应用场景,需要共享同一个对象资源的时候,对于单个页面级的请求才有意义。在上面的对象图中,有一个“单例对象”,“客户A”、“客户B”、“客户C”就是单例对象的三个客户对象。如您所见,所有客户对象共享一个单例对象。从单例对象到自身的连接线可以看出,单例对象持有对自身的引用。php代码实现单例模式:_db=pg_connect(...);//postgrsql}//私有克隆函数,防止外部对象被克隆私有函数__clone(){};//静态方法,单实例统一访问publicstaticfunctiongetInstance(){if(!(self::$_instanceinstanceofself)){self::$_instance=newself();}返回自我::$_实例;}?>单例模式的优缺点:优点:1.改进了系统的设计2.是对全局变量的改进。缺点:1.调试困难2.隐藏依赖3.无法用错误类型的数据覆盖单例
