在 PHP 中将 Redis 封装成单例模式

互联网 20-6-9

单例模式是设计模式中最简单的形式之一。这一模式的目的是使得类的一个对象成为系统中的唯一实例。要实现这一点,可以从客户端对其进行实例化开始。因此需要用一种只允许生成对象类的唯一实例的机制,“阻止”所有想要生成对象的访问。使用工厂方法来限制实例化过程。这个方法应该是静态方法(类方法),因为让类的实例去生成另一个唯一实例毫无意义。

<?php /**  * Created by PhpStorm.  * User: Administrator  * Date: 2018/7/16  * Time: 14:19  */ /**  * 实现同步实现同步redis  */ namespace  app\common\lib\redis; class Predis{      /**      * 单例模式的变量      * @var null      */     private static $_instance=null;      public $redis = '';        /**      * 单例模式应用防止多次连接redis,提高性能      * @return Predis|null      */     public static function getInstance(){             if(is_null(self::$_instance) || empty(self::$_instance)){                     self::$_instance = new self();             }             return self::$_instance;     }        /**      *连接redis      */     private function __construct()    {             $this->redis = new \Redis();             $result = $this->redis->connect(config('redis.host'), config('redis.port'));            if($result==false){                     throw new \Exception('redis connect fail');             }      }      /**      *redis set方法的应用      * @param $key      * @param $value      * @param int $time      * @return bool|string      */     public function set($key,$value,$time=0){             if(!$key){                     return '';             }              if(is_array($value)){                     $value = json_encode($value);            }              if(!$time){                     return $this->redis->set($key,$value);            }             return $this->redis->setex($key,$time,$value);     }      /**      * redis get方法      * @param $key      * @return string      */     public function get($key){             if(!$key){                     return '';             }             return $this->redis->get($key);     }      /**      * 获取有序列表的结合      * @param $key      * @return array      */     public function sMembers($key) {             return $this->redis->sMembers($key);     }       /**      * 获取list的元素值结合      */     public function lRange($key){             var_dump($key);             return $this->redis->lRange($key,0,-1);     }      /**      * 魔术方法__call      */     public function __call($name, $arguments) {             echo $name.PHP_EOL;             print_r($arguments);             if(count($arguments) != 2) {                     return '';            }             $this->redis->$name($arguments[0], $arguments[1]);    }  }

以上就是在 PHP 中将 Redis 封装成单例模式的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: PHP
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:php命名格式注意事项(详解)

相关资讯