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

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