CodeIgniter 驱动器的使用

it2026-01-18  6

在研究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.phpdrivers Driver_name_subclass_1.phpDriver_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)