PHP面向对象单例模式(懒汉式)

知识点:

一、三私一公:

①、私有静态属性,又来储存生成的唯一对象

②、私有构造函数

③、私有克隆函数,防止克隆——clone

④、公共静态方法,用来访问静态属性储存的对象,如果没有对象,则生成此单例

二、关键词instanceof

检查此变量是否为该类的对象、子类、或是实现接口。

 代码:

简单的数据库操作类(单例模式)

<?php
class Single{
	
	public $host = "localhost";
	public $user = "root";
	public $password = "root";
	public $dbname ="login";
	private $con;
	private static $instance;
	private function __construct(){
		
		$this->con = mysql_connect($this->host,$this->user,$this->password);
		$db = mysql_select_db($this->dbname,$this->con);
		return $this->con;
	}
	public static function getInstance(){
		
		if(!self::$instance instanceof self){
		
			self::$instance = new self();
			return self::$instance;
		}else{
			return self::$instance;
		}	
	}
	private function __clone(){
		
		echo '此对象不允许克隆';
	}
	public function query($sql){
		
		$res = mysql_query($sql,$this->con);
		return $res;
	}
}
$object = Single::getInstance();
$res = $object->query("insert into login (user,password)values('xiaoming','123456')");
if($res === false){
	echo 'sql失败!';
}else{
	echo 'sql成功!';
}
?>

注意:单例模式的意义在于生成一个对象,重复对其使用,从而节省了new操作的资源,但是对于PHP来说,页面跳转之后,会释放掉内存中的对象,这样似乎就没什么意义了??只能说在单个页面中,重复使用的一个对象资源时,这个单例还是很有用的。

posted @ 2017-06-05 11:57  程昱仲德  阅读(863)  评论(0编辑  收藏  举报