php单例设计模式

白昼怎懂夜的黑 提交于 2020-02-12 01:18:49

//单例模式
/**
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();

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!