2012-07-31 98 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目录。
不幸的是,我没有经验。
我会(显然)认为这是什么原因导致你描述的行为。