单例设计模式就是要一个类只能实例化一个对象。
要想让一个类只能实例化一个对象,就要让类先不能实例化对象,就是构造方法私有。
现在,要想实例化改类必须通过访问静态方法来实例化改类
为了防止实例多次,需要通过一个成员变量来控制加以判断
因为静态方法不能访问非静态成员,所以声明的成员也要是静态的,同时防止外部访问该成员,还要私有
class Demo{ private static $obj = null; //声明一个私有的,静态的成员属性$obj; private function __construct(){} //构造方法私有,防止new实例化。 static function createObj(){ //只能通过静态方法实例化对象 if(is_null(self::$obj)) self::$obj = new self(); return self::$obj; } function query($sql){ echo $sql; } } /*通过静态方法实例化*/ $db = Demo::createObj(); //访问对象中的成员 $db->query("select * from user");