2012-07-31 48 views
2

使用笨,從控制器(應用/控制器/ home.php),觀察線:CodeIgniter模塊加載創建與本地類的路徑衝突?

$this->load->library(array('account/authentication')) 

AFAIK,這會:

  1. 從 應用加載 'authentication.php'/模塊/帳戶/庫/ authentication.php
  2. 加載 'authentication.php' 從應用/庫/帳戶/ authentication.php

那麼,如果兩者都存在呢?試驗中,似乎CI尋找第一個,如果不存在,則加載第二個。不是那種奇怪的行爲?這兩個文件可能沒有任何關係。

如果您引用本地文件或模塊文件,是不是有明確聲明的方法?

回答

0

AFAIK,沒有默認目錄application/modules,我無法在CI的文檔和來源中找到任何參考。
我要說的是CI的行爲根據二號
事實上採取在CI的裝載(system/core/Loader.php)仔細觀察,可以發現以下幾點:

  1. 我們開始在功能'library'
  2. 其中調用函數'_ci_load_class'

「_ci_load_class」拆卸您傳遞分爲兩個部分庫名:子目錄和類名。

首先它在libraries/subdir/class中尋找類。如果它發現它 - 很好,它會加載它。
如果沒有在該類中找到該類,它會在其他一些預定義的路徑($this->_ci_library_paths)中查找它。
如果庫仍未找到,它將進行最後一次嘗試並在libraries/class/class中查找它。

我唯一能想到的是,你已經定義了一個指向modules目錄的自定義庫路徑。但即使如此,CI應該在modules/libraries/account/authentication.php中尋找圖書館。

編輯:
我只注意到你hmvc標記你的問題,這使用modules目錄。
不幸的是,我沒有經驗。
我會(顯然)認爲這是什麼原因導致你描述的行爲。