php 构造函数带参数吗,PHP单例模式给构造函数传递参数

//自定义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);

//           }

// }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值