数据库连接这种比较耗费资源的操作;
我们希望整个应用只实例化一个;
4私1公;
私有化静态属性: 防止直接访问存储实例的属性
私有化构造方法: 防止使用 new 创建多个实例;
私有化克隆方法: 防止 clone 多个实例;
私有化重建方法: 防止反序列化
公有化方法:提供入口获取实例
<?php class Mysql { // 存放实例 private static $instance = null; public static function getInstance() { if (self::$instance === null) { self::$instance = new self(); } return self::$instance; } /** * 防止 new 创建多个实例 * 报致命错误 */ private function __construct() { } /** * 防止 clone 多个实例 * 报致命错误 */ private function __clone() { } /** * 防止反序列化 生成新的实例 * 报警告错误,但还是生成了新的实例 * Warning: Invalid callback Mysql::__wakeup, cannot access private method Mysql::__wakeup() */ private function __wakeup() { } }
原文:https://www.cnblogs.com/cshaptx4869/p/10422696.html