[英]CodeIgniter 2: not loading MY_Loader class
我一直在嘗試覆蓋加載器類(CI_Loader)的“數據庫”方法。 我按照CodeIgniter用戶指南中的說明進行操作: 創建庫 (滾動到“擴展本機庫”)。 但MY_Loader類不會自動加載,並且不會在$this->load
調用中使用,而不是CI核心Loader類。 我只創建了MY_Loader類(用戶指南中指定的application / libraries / MY_Loader.php)。 有什么我想念的嗎? 我試圖將它放在config / autoload.php中,用於該文件的libraries部分,它確實是自動加載的,但后來我使用$this->my_loader->database()
訪問該庫,這不是主意...
我粘貼在application / libraries / MY_Loader.php的內容下面
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class MY_Loader extends CI_Loader {
function database($params = '', $return = FALSE, $active_record = NULL)
{
echo '---test---';
exit;
}
}
非常感謝你。
loader類是核心的一部分,因此需要進入“application / core / MY_Loader.php”
您希望擴展的任何類都應該位於應用程序文件夾中的相應目錄中。 你應該能夠把你寫的課,放在那里,並預先......它應該工作。 不需要黑客攻擊。
好吧,我已經設法讓它工作,但我不確定它是最好還是最優雅的方式。 首先,我在庫部分的application / config / autoload.php中添加了“my_loader”。 然后我檢查了$this->load
在控制器內部是什么,它是CI_Loader實例,所以在MY_Loader類的構造函數中我創建了一個CI引用並用引用MY_Loader替換了它的load屬性: $CI->load = $this;
。
最終的MY_Loader類是這樣的:
class MY_Loader extends CI_Loader {
function __construct() {
parent::__construct();
$CI =& get_instance();
$CI->load = $this;
}
function database($params = '', $return = FALSE, $active_record = NULL)
{
parent::database($params, $return, $active_record);
// bootstrap doctrine
require_once APPPATH . DIRECTORY_SEPARATOR . 'hooks' . DIRECTORY_SEPARATOR . 'doctrine' . EXT;
bootstrap_doctrine();
}
}
如果您有更好/更智能的解決方案,請發布答案。 謝謝。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.