CodeIgniter 驱动器的使用

本文介绍了CodeIgniter(CI)框架中的驱动器类库,它允许开发者创建具有父类和子类的类库。驱动器类库的父类和子类结构使得在控制器中可以优雅地调用方法。子类可以通过父类直接访问,无需单独初始化。文章通过创建自定义驱动器及其子类的示例,展示了如何在CI中组织和使用这些类,并提供了加载和调用驱动器的方法。
摘要由CSDN通过智能技术生成

在研究CI框架中的驱动器类时,官方给的文档解释是:

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

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

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

$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();

让人看得一头雾水,不知道如何调用。下面是在网上找的一些资料,以及体验后得到的一些学习现在记录下来......

创建自己的驱动器,首先在application/libraries/ 文件夹下创建一个驱动器文件,类似官方给的:

/application/libraries/Driver_name

  • Driver_name.php
  • drivers
    • Driver_name_subclass_1.php
    • Driver_name_subclass_2.php

 Driver_name.php 代表主驱动器文件,在同级的drivers文件夹下所有的文件为次驱动器文件。

通过主驱动器文件来访问次驱动器文件中的信息

<?php
    //建立主驱动器
    defined('BASEPATH') OR exit('No direct script access allowed');

    class Driver_name extends CI_Driver_Library  //主驱动器必须继承CI_Driver_Library
    {

        public $valid_drivers;  //这个素性值也是必须的

        public function __construct()
        {
            //链接次驱动器,数组形式
            //在这里链接次驱动器时,前面主驱动器Driver_name千万不要带
            $this->valid_drivers = array('subclass_1','subclass_2');
        }


        public function get_friends()
        {
            return $this->subclass_1->get_friends().$this->subclass_2->get_friends();
        }
    }

  ?>

 

   

<?php
    //创建次驱动器类
    defined('BASEPATH') OR exit('No direct script access allowed');

    class Driver_name_subclass_1 extends CI_Driver //次驱动器必须继承CI_Driver
    {
        public function get_friends(){
             return 'Driver_name_subclass_1 ';
        }
    }

?>

 

 

<?php
    //创建次驱动器类
    defined('BASEPATH') OR exit('No direct script access allowed');

    class Driver_name_subclass_2 extends CI_Driver //次驱动器必须继承CI_Driver
    {
        public function get_friends(){
             return ' Driver_name_subclass_2 ';
        }
    }

?>

 

//创建控制器来访问驱动器类

<?php
    defined('BASEPATH') OR exit('No direct script access allowed');

    class Test extends CI_Controller
    {

        public function __construct()
        {
            parent::__construct();
            //加载驱动器
            $this->load->driver('driver_name');
        }


        //驱动测试
        public function friends(){
            echo $this->driver_name->get_friends();
            //这里输出就时次驱动器中的:'Driver_name_subclass_1  Driver_name_subclass_2' 信息了
        }

    }

?>

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值