使用CodeIgniter,从控制器(application/controllers/home.php)观察行:
$this->load->library(array('account/authentication'))
AFAIK,这将:
- 从加载"authentication.php"application/modules/account/librarys/authentication.php
- 从application/librarys/account/authentication.php加载"authentication.php"
那么,如果两者都存在呢?在实验中,CI似乎在寻找第一个,如果不存在,它就会加载第二个。这不是一种奇怪的行为吗??这两个文件可能没有任何关系。
是否有一种方法可以明确地声明您引用的是本地文件还是模块文件?
AFAIK,没有默认目录application/modules
,我在CI的文档和源中找不到任何引用
我想说CI的行为符合第2条
事实上,仔细查看CI的加载器(system/core/loader.php)会发现以下内容:
- 我们从函数"库"开始
- 它调用函数"_ci_load_class"
'_ci_load_class'将传递的库名称反汇编为两部分:subdir和类名。
首先,它在libraries/subdir/class
中查找类。如果它发现它很好,就会加载它。
如果在那里没有找到类,它会在其他一些预定义的路径($this->_ci_library_paths
)中查找它
如果仍然找不到库,它会进行最后一次尝试,并在libraries/class/class
中查找它。
我唯一能想到的是,您定义了一个指向modules
目录的自定义库路径。但即便如此,CI也应该在modules/libraries/account/authentication.php
中查找库。
编辑:
我刚刚注意到您用hmvc
标记了您的问题,确实使用了modules
目录
不幸的是,我没有使用它的经验。
我(显然)认为这就是你所描述的行为的原因。