CI框架是适配器

配合手册中的看看

使用 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();时候, 执行该函数, 然后实现效果

但这样的调用方式,看着挺奇怪的,个人感觉不是很好, 不知道有没有人又同感,不过实现的效果还是挺好的

你可能感兴趣的:(CI框架是适配器)