PHP 单例模式
时间:2009-10-14 作者:smarteng 分类: PHP相关
PHP的面向对象的功能越来越强,
学习了一下设计模式,看看PHP中的单例模式的实现。
单例模式有以下特点:
- 单例类只能有一个实例。
- 单例类必须自己创建自己的唯一的实例。
- 单例类必须给所有其他对象提供这一实例。[break]
一个经典的实现:
class Singleton{
protected static $_instance = null;
public static function getInstance()
{
if (null === self::$_instance) {
self::$_instance = new self();
}return self::$_instance;
}
}
好,下面我们就可以取得这个单例了
$va = Singleton::getInstance();
一个数据库类单例模式:
class Db
{
/**
* @access private
*/
private function __construct()
{
$this->conn = mysql_connect(DB_HOST, DB_USER, DB_PWD);
if(!$this->conn)
{
die("Connect DB error!");
}
mysql_select_db(DB_NAME);
}
/**
* 使用 $db = & Db::getInstance() 来构建一个DB连接,而不是使用$db = new Db();
* 如果使用php5,可以把Db的构造函数__construct声明为private,这样在程序级强行在程序只能使用getInstance来构建,
* 但考虑兼容的代码,在php4中就只能简单的靠程序员自己来自觉遵守了。
*/
public static function getInstance()
{
if (!DB :: $instance)
{
DB :: $instance = new Db();
}
return DB :: $instance;
}
/**
*其他的函数等等
*/
function query($query)
{
//Your code here
}
}
?>