<?php

require_once 'DB.php';
class DatabaseConnection{
public static function get(){
static $db = null;
if($db === null){
$db = new DatabaseConnection();
}
return $db;
}
private $_handle = null;
# 构造方法是私有的,所以不能字节使用 new 关键字实例化,这点对于单件模式至关重要
private function __construct(){
$dsn = 'mysql://root:root@localhost/test';
$this->_handle = DB::connect($dsn, array());
}
public function handle(){
return $this->_handle;
}
}
print( "Handle = ".DatabaseConnection::get()->handle()." " );
print( "Handle = ".DatabaseConnection::get()->handle()." " );
print_r(get_included_files());


# 下面是单件模式的原型,注意三个要点,
# 1. 对象必须是私有成员.
# 2.私有的构造函数
# 3. 一个公共的实例化并返回该Singleton的可被外部对象调用的成员函数
# 单件模式的事例化过程被从外部移到了内部.只有通过内部方法才能实例化对象
class Singleton{
private static $instance = null;
private function __construct(){
}
public static function getInstance(){
if(self::$instance === null){
self::$instance = new Singleton();
}
return self::instance;
}
}
?>
本文介绍PHP中实现单例模式的方法,并展示了一个具体的例子:利用单例模式管理数据库连接。通过私有构造函数和静态方法确保了类的唯一实例。
3972

被折叠的 条评论
为什么被折叠?



