簡體   English   中英

CodeIgniter 2:沒有加載MY_Loader類

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM