ci框架 加载驱动&ci框架使用redis

来源:互联网 发布:阿里云mysql远程连接 编辑:程序博客网 时间:2024/06/06 01:47

问题是:使用ci框架搭建自己redis服务

注意:我这里使用的是wamp集成,需要开启redis,以及添加redis扩展

搜素资料,解决方式:

1.在application\config目录下新建redis.php文件

<?phpdefined('BASEPATH') or exit('No direct script access allowed');$config['socket_type'] = 'tcp';$config['host'] = '127.0.0.1';$config['password'] = NULL;$config['port'] = 6379;$config['timeout'] = 0;

2.在application\config\config.php引入该文件

require_once(APPPATH."config/redis.php");


3.在application\libraries新建个文件(该文件命名是主驱动名称,且首字母大写),比如是:application\libraries\Rediscache。在该文件下添加主驱动类:(application\libraries\Rediscache\Rediscache.php)

<?phpdefined('BASEPATH') or exit ('No direct script access allowed');class Rediscache extends CI_Driver_Library{    public $valid_drivers;    public $CI;    function __construct()    {        $this->CI = &get_instance();        $this->valid_drivers = array(            'default'        );//告诉加载次驱动器    }}
//Rediscache继承CI_Driver_Library,并赋值valid_drivers变量 是为了告诉ci框架加载哪些驱动器

4.新建drivers文件,命名一定是drivers(application\libraries\Rediscache\drivers)。在drivers下新建Rediscache_default.php次驱动文件(application\libraries\Rediscache\drivers\Rediscache_default.php),注意文件命名规则是主驱动类名加“_”再加自己定义的名称。该名称用于主驱动类中声明加载次驱动类。该文件用于对redis的操作方式(由于是公司自己写的,就不贴代码了),但是作为测试的化,可以把system\libraries\Cache\drivers\Cache_redis.php复制拿过来,改下文件名和类名。


5.应用到控制器中:

$this->load->driver('Rediscache');if($this->rediscache->default->is_supported()){$this->rediscache->default->save('key','123');echo $this->rediscache->default->get('key');}
在网页访问该方法。显示123,测试成功

知识补充:(http://www.mamicode.com/info-detail-1084422.html)

1.什么是驱动器

驱动器是一种特殊类型的类库,它有一个父类和任意多个子类。子类可以访问父类, 但不能访问兄弟类。在你的控制器中,驱动器为你的类库提供了 一种优雅的语法,从而不用将它们拆成很多离散的类。

一般我们看到父类和子类,我们会毫不犹豫的认为他们是继承和派生的关系,但是这里需要注意的是,驱动器中所提到的子类,并不是真的继承了父类驱动器,仅仅是其有访问父类驱动器的权限,在其中一篇参考文献中,作者将父类称为主类(master class),将此类称为次类(sub class)

驱动器位于 system/libraries/ 目录,每个驱动器都有一个独立的目录,目录名和 驱动器父类的类名一致,在该目录下还有一个子目录,命名为 drivers,用于存放所有子类的文件。

2.如何使用驱动器?

要使用一个驱动器,你可以在控制器中使用下面的方法来进行初始化:

$this->load->driver('class_name');

class_name 是你想要调用的驱动器类名,例如,你要加载名为 Some_parent 的驱动器, 可以这样:
$this->load->driver('some_parent');

然后就可以像下面这样调用该类的方法:
$this->some_parent->some_method();

而对于那些子类,我们不用初始化,可以直接通过父类调用了:
$this->some_parent->child_one->some_method();
$this->some_parent->child_two->another_method();