我已经通过CodeIgniter中的composer安装了自动加载功能,如果包含文件autoload.php
,我也会对其进行测试。所以,如果我在库中有一个名为Pager
的库,那么如何实例化(加载)Pager
类呢?这是一个全新的CodeIgniter安装,版本3.1.2
我在配置中设置:
$config['composer_autoload'] = TRUE;
我在欢迎控制器中尝试了以下方法:
$pager = new libraries\Pager(); //Class 'libraries\Pager' not found
$pager = new \libraries\Pager(); //Class 'libraries\Pager' not found
$pager = new \library\Pager(); // Class 'library\Pager' not found
$pager = new Pager(); // Class 'library\Pager' not found
这是来自libraries目录的Pager类:
class Pager {
function __construct()
{
parent::__construct();
echo __CLASS__;
}
}
谢谢你的帮助!
答案 0 :(得分:2)
这实际上与CodeIgniter无关。
您需要告诉composer
您有自己的PHP类,而不是自动加载的文件。
在composer.json
添加其中一个:
{
// ...
"autoload": {
"psr-4": { "MyNamespace\\": "src/library/MyNamespace" },
"files": ["src/some/custom/filepath.php"]
}
}
然后在控制台update
中运行,使用新配置更新autoload.php
:
$ composer update
现在每次使用MyNamespace
中的MyNamespace\MyClass
类时,它都会查找文件src/library/MyNamespace/MyClass.php
。
此外,文件src/some/custom/filepath.php
始终自动包含在内,因此您无需手动包含它。 (我不知道你的用例是什么。)
有关详细信息,请参阅:https://getcomposer.org/doc/04-schema.md#autoload
答案 1 :(得分:1)
您是否已将其添加到autoload.php
中$autoload['libraries'] = array(
'pager'
);