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来说,页面跳转之后,会释放掉内存中的对象,这样似乎就没什么意义了??只能说在单个页面中,重复使用的一个对象资源时,这个单例还是很有用的。