简要咨询咨询QQ网站导航网站搜索手机站点联系我们设为首页加入收藏 

PHP设计模式之单例模式

来源:易贤网   阅读:862 次  日期:2015-02-03 14:33:32

温馨提示:易贤网小编为您整理了“PHP设计模式之单例模式”,方便广大网友查阅!

单例模式 :使得类的一个对象成为系统中的唯一实例.

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();

}

}

更多信息请查看IT技术专栏

更多信息请查看网络编程
点此处就本文及相关问题在本站进行非正式的简要咨询(便捷快速)】     【点此处查询各地各类考试咨询QQ号码及交流群
上一篇:php+mysqli批量查询多张表数据的方法
下一篇:PHP提示:Fatal error: Allowed memory size of
易贤网手机网站地址:PHP设计模式之单例模式
由于各方面情况的不断调整与变化,易贤网提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!