あなたは単に、彼らはすべてのコントローラのメソッドが利用できるようになり、あなたのコンストラクタでグローバルデータベースインスタンスをロードすることができ...
例コントローラ
class Example extends CI_Controller {
//declare them globally in your controller
private $billing_db;
private $inventory_db;
function __construct() {
parent::__construct();
//Load them in the constructor
$this->billing_db = $this->load->database('billing', TRUE);
$this->inventory_db = $this->load->database('inventory', TRUE);
}
function index() {
//Then use them in any controller like this
$data['billing'] = $this->inventory_db->get('stuff');
$data['inventory'] = $this->billing_db->get('stuff');
}
}
そして、これらの同じデータベースを複数にまたがって使用されている場合
これらのグローバル変数を含むようにベースコントローラーを拡張し、ベースコントローラーのコンストラクターにロードすることを検討することがあります。
MY_Controller.php
例MY_Controller.php
class DB_Controller extends CI_Controller {
//declare them globally in your controller
private $billing_db;
private $inventory_db;
function __construct() {
parent::__construct();
//Load them in the constructor
$this->billing_db = $this->load->database('billing', TRUE);
$this->inventory_db = $this->load->database('inventory', TRUE);
}
}
その後、あなたはこのようにそれを使うだろう...すべてのコントローラにわたって
class Example extends DB_Controller {
function __construct() {
parent::__construct();
}
function index() {
//Then use them in any controller like this
$data['billing'] = $this->inventory_db->get('stuff');
$data['inventory'] = $this->billing_db->get('stuff');
}
}
はさらに良いでしょう。どのようにCI_Controllerを拡張するかのスニペットを投稿してもよろしいですか? – Dex
これは、CI_Controllerを拡張するという点で、あなたが探しているものかもしれません:http://philsturgeon.co.uk/news/2010/02/CodeIgniter-Base-Classes-Keeping-it-DRY – JDM
またはCIのドキュメントhttp: //codeigniter.com/user_guide/general/core_classes.html ...あなたは、あなたの拡張ベースコントローラーに私のサンプルコントローラーに入れたロジックを置くだけです。 – jondavidjohn