本文概述
- 什么是驱动程序
- 初始化驱动程序
- 创建自己的驱动程序
- 制作文件结构
- 制作驱动程序清单
什么是驱动程序 这些是具有父类和许多子类的特殊类型的库。这些子类有权访问父类, 但不能访问其父级。它使你可以在控制器内创建更优雅的类和更优雅的语法。
驱动程序位于CodeIgniter文件夹的system / libraries文件夹中。
初始化驱动程序 要初始化驱动程序, 请编写以下语法。
$this->
load->
driver('class_name');
在这里, class_name是你要调用的驱动程序名称。
例如, 要调用驱动程序类main_class, 请执行以下操作。
$this->
load->
driver('main_class');
要调用其方法,
$this->
main_class->
a_method();
然后可以直接通过父类调用子类, 而无需初始化它们。
$this->
main_class->
first_child->
a_method();
$this->
main_class->
second_child->
a_method();
创建自己的驱动程序 在CodeIgniter中创建驱动程序需要三个步骤。
- 制作文件结构
- 制作驱动程序清单
- 制作驱动程序
现在在My_driver文件夹中新建一个文件夹, 将其命名为driver。在这个新文件夹中, 创建一个文件My_driver_first_driver.php。
【CodeIgniter驱动程序】将显示以下文件结构。
/libraries
/My_driver
My_driver.php
/drivers
My_driver _first_driver.php
文章图片
在CodeIgniter中, 驱动程序库结构是这样的:子类不扩展, 因此它们不继承主驱动程序的属性或方法(在本例中为My_driver)。
- My_driver-这是一个类。
- My_driver.php-父驱动程序
- My_driver_first_driver.php-子驱动程序
<
?php
defined('BASEPATH') OR exit('No direct script access allowed');
class CI_My_driver extends CI_Driver_Library
{
function __construct()
{
$this->
valid_drivers = array('first_driver');
}
function index()
{
echo "<
h1>
This is Parent Driver<
/h1>
";
}
}
在system / libraries / My_driver / drivers中的My_driver_first_driver.php文件中, 编写以下代码,
<
?php
defined('BASEPATH') OR exit('No direct script access allowed');
class My_driver_first_driver extends CI_Driver
{
function first()
{
echo "<
h1>
This is first Child Driver<
/h1>
";
}
}
?>
使用以下代码在应用程序/控制器中创建控制器文件Mydrive.php,
<
?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Mydrive extends CI_Controller
{
function __construct()
{
parent::__construct();
$this->
load->
driver('my_driver');
}
public function invoke1()
{
$this->
my_driver->
index();
}
public function invoke2()
{
$this->
my_driver->
first_driver->
first();
}
}?>
在浏览器上, 运行URL http://localhost/driver/index.php/mydrive/invoke1
文章图片
看上面的快照, 父驱动程序类通过函数invoke1调用。
现在运行URL http://localhost/driver/index.php/mydrive/invoke2
文章图片
看一下上面的快照, 使用函数invoke2调用了子驱动程序类。
推荐阅读
- CodeIgniter数据库配置
- 在CodeIgniter中传递参数
- CodeIgniter钩子用法
- URL路由详解
- CodeIgniter库详解
- CodeIgniter助手详解
- CodeIgniter方法详解
- 在CodeIgniter中创建基本站点
- CodeIgniter URL详解