企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## 单例模式就是某个类在运行过程中,只有一个实例,在数据库连接中使用单例模式实现化数据库连接对象主要是可以避免重复的实例化对象而造成资源浪费,则可以避免大量的new操作消耗资源 ## # 实现单例模式的三个条件: ## 1需要一个保存类的唯一实例的静态成员 属性私有 ## 2.构造函数和克隆函数 必须声明为私有的,防止外部程序new类从而失去单例模式的意义,防止外部克隆 ## 3.必须提供一个访问这个实例的公共静态方法(通过为getInstance方法),从而返回唯一实例的一个引用 # 代码写法: ~~~ class DB{ //存储类的实例化对象 private static $instance; //禁止外部new类 private function __construct(){ } //对外访问的方法 public static function getInstance(){ if(!self::$instance instanceof DB) { //判断$instance是否是DB实例化对象 (instanceof)是内置判断判断是否是那个类的实例对象 self::$instance= new self(); //如果不是就实例化 //这里的self()就是类名DB } return self::$instance; //如果是就返回$instance //这里的self()就是类名DB } public function YanShi(){ //演示 echo"哈哈哈哈"; } //禁止外部克隆对象 private function __clone(){} } $db=DB::getInstance(); $db->YanShi(); //输出演示 ~~~ ## 代码里的self() 就是类名 DB() 无论实例化多少次都是一个空间的也就单例模式 ~~~ $db=DB::getInstance(); $db2=DB::getInstance(); $db3=DB::getInstance(); var_dump($db); var_dump($db2); var_dump($db3); ~~~ ![](https://img.kancloud.cn/f3/9e/f39efed5302a8f527b6bd176169b16a7_985x281.png) ## 总结:3个私有1个共有的 3个私有:属性的私有(静态属性) 构造函数私有 克隆函数的私有 ## 1个公有:对外访问的一个函数公有(静态函数)