<?php /** * Created by PhpStorm. * User: siyu.wang * Date: 2017/9/26 * Time: 15:04 */ /** 单例模式: 单件模式。是让类在内存中仅有一个实例。 * 优势: 单例模式保证在整个应用程序的生命周期中,任何一个时刻,单例类的实例都只存一个,从而更加高效的利用系统资源。 * 技术点: * 不能用new 类名的方式来创建一个对象 创建一个静态属性和静态方法 在静态方法里调用静态属性并做判断只允许创建一个对象, 在类外创建对象时不要用new而是用类本身调用静态方法 例 Db::getOne() 构造方法用private修饰 * 禁止类的构造方法被重写; 用final修饰构造方法 例 final private function__construct(){} * 禁止类的实例被外界克隆; 在类的内部添加clone()魔术方法 用private修饰,这样呢,外部克隆类的对象时就会报错! jiangjiang ~~~ 例 private function __clone(){} */ class Db{ public static $db;//唯一实例对象 final private function __construct() { echo '有新的Db类的对象创建了','<br/>'; } public function test() { echo '我是test方法'; } /** *获取Db类的唯一实例 */ static function getDb() { if(self::$db == null && !(self::$db instanceof self)) { self::$db = new self(); } return self::$db; } private function __clone(){ echo 123; } } //class myDb extends Db //{ // public function __construct() // { // echo 'my db类有新对象创建了'; // } //} //$myDb1 = myDb::getDb(); //$myDb2 = myDb::getDb(); $db = Db::getDb(); //$db1 = clone $db;