php-单例
作者:admin 发布时间:October 31, 2018 分类:PHP No Comments
应用场景:
- 数据库连接这种比较耗费资源的操作;
- 我们希望整个应用只实例化一个;
结构:
- 4私1公;
- 私有化构造方法: 防止使用 new 创建多个实例
- 私有化克隆方法: 防止 clone 多个实例
- 私有化重建方法: 防止反序列化
- 私有化静态属性: 存储对象并防止直接访问存储实例的属性
- 公有化静态方法: 获取对象
示例
<?php
/**
* 类
* Class Db
*/
class Db
{
private static $instance = null;
public static function getInstance()
{
if (null === static::$instance) {
static::$instance = new static();
}
return static::$instance;
}
private function __construct()
{
}
private function __clone()
{
}
private function __wakeup()
{
}
}
$db1 = Db::getInstance();
$db2 = Db::getInstance();
var_dump($db1);
echo '<hr>';
var_dump($db2);
打印结果
普通类DB的句柄每个都是不一样的;
而单例这两个的句柄都是 1,一直是一个实例;