配合手册中的看看
使用 CodeIgniter 适配器
适配器是一种特殊的库,它有一个父类和任意数量的子类。子类能够访问其父类元素,但不能访问其兄弟类的元素。在你的控制器中,适配器为类库提供了一种优雅的语法,所以类库会就此获益甚至会须要分解成离散的类。
适配器的源文件存放在system/libraries 目录下, 在本身的文件夹同样有和父类名字相同的类库能够使用 同时在这个文件夹中,有一个子文件夹叫作 drivers在其中包含了全部的子类
要使用一个适配器,你须要在一个控制器里用以下的初始化函数初始它:
$this->load->driver('class name');
这里的
driver方法最后调用
library方法,
library调用
_ci_load_class方法, 而后返回class的对象。
这里的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();
实现方法:
使用Cache举例子:
在Cache.php中CI_Cache有以下方法
public function __get($child)
{
$obj = parent::__get($child);
if ( ! $this->is_supported($child))
{
$this->_adapter = $this->_backup_driver;
}
return $obj;
}
当执行
$this->some_parent->child_two->another_method();时候, 执行该函数, 而后实现效果
但这样的调用方式,看着挺奇怪的,我的感受不是很好, 不知道有没有人又同感,不过实现的效果仍是挺好的