爱程序网

php单例模式的实现

来源: 阅读:

<?php/*** 设计模式之单例模式* $_instance必须声明为静态的私有变量* 构造函数和析构函数必须声明为私有,防止外部程序new* 类从而失去单例模式的意义* getInstance()方法必须设置为公有的,必须调用此方法* 以返回实例的一个引用* ::操作符只能访问静态变量和静态函数* new对象都会消耗内存* 使用场景:最常用的地方是数据库连接。 * 使用单例模式生成一个对象后,* 该对象可以被其它众多对象所使用。 */class Example{//保存例实例在此属性中private static $_instance;//构造函数声明为private,防止直接创建对象private function __construct(){echo 'I am Construceted';}//单例方法public static function singleton(){if(!isset(self::$_instance)){$c=__CLASS__;self::$_instance=new $c;}return self::$_instance;} //阻止用户复制对象实例public function __clone(){trigger_error('Clone is not allow' ,E_USER_ERROR);}function test(){echo("test");}}// 这个写法会出错,因为构造方法被声明为private$test = new Example;// 下面将得到Example类的单例对象$test = Example::singleton();$test->test();// 复制对象将导致一个E_USER_ERROR.$test_clone = clone $test;?>

相关文章列表: