php单例设计模式

//单例模式
/**
2 * 设计模式之单例模式
3 * $_instance必须声明为静态的私有变量
4 * 构造函数必须声明为私有,防止外部程序new类从而失去单例模式的意义
5 * getInstance()方法必须设置为公有的,必须调用此方法以返回实例的一个引用
6 * ::操作符只能访问静态变量和静态函数
7 * new对象都会消耗内存
8 * 使用场景:最常用的地方是数据库连接。
9 * 使用单例模式生成一个对象后,该对象可以被其它众多对象所使用。
10 */
class man
{
//保存例实例在此属性中
private static $_instance;

//构造函数声明为private,防止直接创建对象
private function __construct()
{
echo '我被实例化了!';
}

//单例方法
public static function get_instance()
{
var_dump(isset(self::$_instance));

if(!isset(self::$_instance))
{
self::$_instance=new self();
}
return self::$_instance;
}

//阻止用户复制对象实例
private function __clone()
{
trigger_error('Clone is not allow' ,E_USER_ERROR);
}

function test()
{
echo("test");

}
}

// 这个写法会出错,因为构造方法被声明为private
//$test = new man;

// 下面将得到Example类的单例对象
$test = man::get_instance();
$test = man::get_instance();
$test->test();

猜你喜欢

转载自www.cnblogs.com/zhangjian816/p/10818844.html