<?php
header("content-type:text/html;charset=utf-8");
#单例模式链接数据库
# 避免继承 final;
final class DaoMysql{
private $mysql_link;
private static $instance = null;
//构造函数
private function __construct($host,$user,$pwd){
$this->mysql_link = @mysql_connect($host,$user,$pwd);
}
// 静态方法
public static function getInstance($host,$user,$pwd){
if(self::$instance == null){
self::$instance = new DaoMysql($host,$user,$pwd);
}
return self::$instance;
}
// 安全性 避免clone
private function __clone(){}
}
$dao1 = DaoMysql::getInstance("localhost","root",'');
$dao2 = DaoMysql::getInstance("localhost","root",'');
$dao3 = DaoMysql::getInstance("localhost","root",'');
var_dump($dao1,$dao2,$dao3);
注意事项:
1): 单例中使用的静态成员变量,静态成员方法;
2): 单例要保证对象只能是一个节约链接数据库资源;
3): 单例中避免克隆 所以要重写 魔术方法__clone;
4): 单例对象避免被继承的子对象。