先来看一个简单的单例模式的例子
class Single
{
static private $instance = null;
// 禁止对象继承或者new 这个对象
private function __construct()
{
}
// 指定一个创建对象的方法,如果对象存在则直接返回
public static function getInstance()
{
if (!self::$instance) {
self::$instance = new self;
}
return self::$instance;
}
// 禁止对象克隆
private function __clone()
{
}
}
单例模式确保一个类只有一个实例,只能自己的内部实现实例化,当他人再次实例化时返回第一次实例化的对象。
单例模式解决了一个全局使用的类频繁地创建与销毁。
单例模式的使用场景
连接数据库
class MySql { static private $connect; private function __construct() { } static public function instance() { if (!self::$connect) { self::$connect = mysqli_connect('127.0.0.1', 'root', 'root', 'test', '8889'); } return self::$connect; } private function __clone() { // TODO: Implement __clone() method. } } $mysql1 = MySql::instance(); $mysql2 = MySql::instance(); if ($mysql1 === $mysql2) { echo '是同一个对象'; }