单例模式是为了防止多次重复实例化,例如数据库的重复连接,造成资源浪费。

重点是:

1/ 一个类只有一个对象
2/ 类为自行创建,不能通过new来声明
3/ 用途:在整个系统中统一提供这一个对象。

写法:

1/ 类中定义一个私有静态变量
2/ 类中只提供私有的构造函数
3/ 提供一个静态公有函数用来创建私有对象本身。
4/ 使用__clone防止克隆

<?php//学习使用单例模式class Danli{ private static $db = null; private static $num = 0; private function __construct() { echo "对象已经构建完成:".self::$num."次\n"; } public static function getInstance() { if(self::$db instanceof self){ echo "已经实例化,不要重复实例\n"; return self::$db; }else{ self::$num +=1; return self::$db = new self(); } } static function test() { echo "调用成功\n"; } public function __clone() { echo "不能克隆哦"; }}$d = Danli::getInstance();$d->test();$c = Danli::getInstance();$c->test();$d= clone $c;//