我对应该可以工作的 PHP API 库有疑问。我正在使用 codeigniter 框架。
我正在尝试使用 eve_market_model 中的 PHPEVECentral 库。如您所见,该库由多个使用命名空间的文件组成。要使用这个库,我只需要包含主文件 PHPEVECentral。
在这里,您可以找到树状文件夹的屏幕截图。
namespace PHPEveCentral;
class PHPEveCentral
{
...
public function MarketStat($typeid = array())
{
return new \PHPEveCentral\Requests\MarketStat($typeid);
}
}
所以,当我调用 PHPEveCentral->MarketStat() 函数时,我得到一个 php 错误:
Class 'PHPEveCentral\Requests\MarketStat' not found in C:\wamp\www\Eve-board\application\libraries\PHPEveCentral\PHPEveCentral.php on line 68
当我包含 PHPEveCentral\Requests\MarketStat.php 文件时,不再有此错误,但是我对另一个文件有另一个错误,所以我也必须包含它等等。
我是否必须手动包含库的每个文件?我希望有其他方法,因为它有点无聊。
谢谢你的帮助。
编辑
我扩展了 CodeIgniter Loader 类,添加了一个方法来递归地包含文件夹的所有文件。https://github.com/zallek/CodeIgniter/blob/master/MY_Loader.php
使用这种方法,我没有收到任何错误,这是可行的。唯一的问题是优化问题:
Load->file() 只是像 PHP vanilla 一样包含文件,而 Load->class() 设计为仅实例化一次类(单例)。但是我不能使用 Load->class() 因为有些接口不适用于这种方法。所以也许,我应该找到一种方法来检测它是类文件还是接口文件......