0

在我的application/config/config.php中,我想自动加载我的库包:

/*
| -------------------------------------------------------------------
|  Auto-load Packges
| -------------------------------------------------------------------
| Prototype:
|
|  $autoload['packages'] = array(APPPATH.'third_party', '/usr/local/shared');
|
*/

$autoload['packages'] = array('../../lib');

相对路径不起作用,所以我得到了我的当前目录index.php并尝试了:

$autoload['packages'] = array(getcwd() . '/../../lib');

最后,我只是把绝对路径放在那里:

$autoload['packages'] = array('/Users/.../lib');

这些都不起作用。我错过了什么吗?因为文档非常稀少。

4

2 回答 2

1

不久前我遇到了类似的问题。我必须创建一个库来加载驱动程序。我用以下方法修复了它。

/application/config.php

$autoload['libraries'] = array('callcache');
//callcache is loaded from application/libraries/Callcache.php

/application/libraries/Callcache.php

<?php
class Callcache  {
    public function __construct($config = array())
    {
        $ci = &get_instance();
        $ci->load->driver('cache', array('adapter' => 'apc', 'backup' => 'file'));
    }
}

希望这对您有所帮助,即使您尝试加载包而不是驱动程序(通过库)。我不记得我在哪里找到了这方面的信息,并且我自己还在学习 CI。

于 2013-11-11T23:53:08.363 回答
0

为了解决这个问题,我在require_once语句之前添加了一个修改过的自动加载器index.php

spl_autoload_register(function($class) {
    if (strstr($class, 'CI') || strstr($class, 'MY')) {
        return;
    }

    $class = ltrim($class, '\\');
    $filename  = '';
    $namespace = '';

    if ($last_ns_pos = strripos($class, '\\')) {
        $namespace = substr($class, 0, $last_ns_pos);
        $class = substr($class, $last_ns_pos + 1);
        $filename  = str_replace('\\', DIRECTORY_SEPARATOR, $namespace) . DIRECTORY_SEPARATOR;
    }

    $filename .= str_replace('_', DIRECTORY_SEPARATOR, $class) . '.php';

    require strtolower($filename);
});

原始自动装载机可在此处找到。

老实说,无论我使用 CodeIgnitier 进行什么尝试,加载第三方包或驱动程序都是行不通的。

于 2013-11-25T20:07:11.277 回答