//自定义redis封装单例模式
class RedisDevice{
private $con; //连结句柄
//需要作为参数传入的参数全部定义成静态方法,因为单例是静态方法
private static $host = "127.0.0.1"; //地址
private static $port = "6379"; //数据库端口
private static $pass = ""; //数据库密码
private static $select = 0; //选择第几个数据库
//单例模式
private static $init;
public static function init($options=[]){
if (!isset(self::$init)) { //判断是否以前创建了当前类的实例
//在第一次的时候初始化参数,所以单例模式只接受第一传入传输的设置,
if(isset($options['host']) && $options['host']) self::$host = $options['host'];
if(isset($options['port']) && $options['port']) self::$port = $options['port'];
if(isset($options['pass']) && $options['pass']) self::$host = $options['pass'];
if(isset($options['select']) && $options['select']) self::$select = $options['select'];
self::$init = new static(); //如果没有创建,实例化当前类,这里实现类只实例化一次
}
return self::$init;//返回类的实例
}
//构造函数
public function __construct($options=[]){
//构造函数调用一次连接redis
$this->connect();
}
//非静态方法使用静态变量 self::$xxx
//连结并选择数据库
private function connect(){
$this->con = new Redis();
//连结数据库
$this->con->connect(self::$host, self::$port);
//密码授权
if(self::$pass){
$this->con->auth(self::$pass);
}
//选择数据库,如果需要设置不同的库,可以写一个public方法给外部调用并设置连接不同的库
if(self::$select){
$this->con->select(self::$select);
}
}
//改变数据库
// public function selDb($db_num=0){
// self::$select = $db_num;
// if(self::$select){
// $this->con->select(self::$select);
// }
// }