PHP设计模式之单例模式_PHP教程
推荐:PHP制作百度词典查词采集器这篇文章主要介绍了PHP制作百度词典查词采集器的相关资料,需要的朋友可以参考下 百度dict 采集样本 写的采集百度dict词典翻译后的所有结果数据,当然附带了13.5w单词库和采集简单的案例,这里我把写出的主要类dict.class.php放出来,项目地址http://github.com/widuu/b
单例模式 :使得类的一个对象成为系统中的唯一实例.
PHP中使用单例模式最常见的就是数据库操作了。避免在系统中有多个连接数据库的操作,浪费系统资源的现象,就可以使用单例模式。每次对数据库操作都使用一个实例。
简单示例
class AClass {
// 用来存储自己实例
public static $instance;
// 私有化构造函数,防止外界实例化对象
private function __construct() {}
// 私有化克隆函数,防止外界克隆对象
private function __clone() {}
// 静态方法,单例访问统一入口
public static function getInstance() {
if (!(self::$instance instanceof self)){
self::$instance = new self();
}
return self::$instance;
}
// test
public function test() {
return "done";
}
// 私有化克隆函数,防止外界克隆对象
private function __clone() {}
}
class BClass extends AClass{
}
// 获取实例
$aclass = AClass::getInstance();
$bclass = BClass::getInstance();
// 调用方法
echo $aclass->test();
对一些比较大型的应用来说,可能连接多个数据库,那么不同的数据库公用一个对象可能会产生问题,比如连接句柄的分配等,我们可以通过给$instance变成数组,通过不同的参数来控制
简单示例
class DB {
// 用来存储自己实例
public static $instance = array();
public $conn;
// 私有化构造函数,防止外界实例化对象
private function __construct($host, $username, $password, $dbname, $port) {
$this->conn = new mysqli($host, $username, $password, $dbname, $port);
}
// 静态方法,单例访问统一入口
public static function getInstance($host, $username, $password, $dbname, $port) {
$key = $host.":".$port;
if (!(self::$instance[$key] instanceof self)){
self::$instance[$key] = new self($host, $username, $password, $dbname, $port);#实例化
}
return self::$instance[$key];
}
//query
public function query($ql) {
return $this->conn->query($sql);
}
// 私有化克隆函数,防止外界克隆对象
private function __clone() {}
//释放资源
public function __destruct(){
$this->conn->close();
}
}
分享:php+mysqli事务控制实现银行转账实例这篇文章主要介绍了php+mysqli事务控制实现银行转账,实例分析了事物控制的原理与事物回滚的使用技巧,需要的朋友可以参考 本文实例讲述了php+mysqli事务控制实现银行转账的方法。分享给大家供大家参考。具体分析如下: 事务控制,也就是说所有的语句执行成功后,才会提
- 相关链接:
- 教程说明:
PHP教程-PHP设计模式之单例模式。