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();時候, 執行該函數, 而後實現效果

但這樣的調用方式,看着挺奇怪的,我的感受不是很好, 不知道有沒有人又同感,不過實現的效果仍是挺好的
相關文章
相關標籤/搜索