如何通过autoload composer在Codeigniter中加载库?

时间:2016-11-05 20:50:58

标签: php codeigniter composer-php autoload

我已经通过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__;
    }

}

谢谢你的帮助!

2 个答案:

答案 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'
);