关联文章请参考:
PHP框架中的设计模式-单例模式|Singleton Design Pattern-ThinkPHP v3.2
下面我们来看看ThinkPHP v5.0是如何使用单例模式来复用同一数据库连接的:
// ThinkPHP v5.0中使用单例模式实例化数据库连接:Db::connect($connection);
// Db类文件路径: hinkphplibrary hinkDb.php
namespace think;
class Db {
public static function connect($config = [], $name = false)
{
if (false === $name) {
$name = md5(serialize($config));
}
// 如果数据库连接未曾实例化,则new一个新的实例化对象。否则,直接返回已实例化的对象。
// 这个就是单例模式。
if (true === $name || !isset(self::$instance[$name])) {
....
$class = false !== strpos($options['type'], '\') ? $options['type'] : '\think\db\connector\' . ucwords($options['type']);
....
self::$instance[$name] = new $class($options);
}
return self::$instance[$name];
}
}