文章目录
一、基本概念
单例模式也就是说一个类在一个进程中一次实例化生成全局唯一的实例
二、未使用单例模式的情景
class Car
{
public function __construct()
{
}
}
$c1 = new Car();
var_dump($c1);
echo '<br>';
$c2 = new Car();
var_dump($c2);
打印结果:
object(Car)#1 (0) { }
object(Car)#2 (0) { }
#1 #2 说明生成了不同的对象唯一标识符,现在我们要实现的就是无论实例化多少次都返回同一个实例
三、demo小作
三私一公就是典型的单例模式
class Car
{
private static $instance=null;//私有静态属性存放单例
private function __construct(){}//私有构造方法(防止类外实例化类)
public static function getInstance(){//公有静态方法提供外界访问
if(self::$instance==null){
return self::$instance = new self;
}
return self::$instance;
}
private function __clone(){}//防止对象被克隆
}
$c1 = Car::getInstance();
var_dump($c1);
echo '<br>';
$c2 = Car::getInstance();
var_dump($c2);
打印结果:
object(Car)#1 (0) { }
object(Car)#1 (0) { }
看到没有 new了两次结果生成一样的实例
四、使用场景
例如调用数据库,首先要链接数据库,每次操作数据库都要实例化生成 不同的实例,由此比较浪费资源,故可以使用单例模式