1

请问如何将 spl_autoload_register() 与 Codeigniter 一起使用?我需要这样做,因为我将 Codeigniter 与另一个也使用自动加载的框架一起使用。

我在这里看到了一些东西

PHP spl_autoload_register

我不知道如何定位 CodeIgniter 自动加载。我是 OOP 和 Codeigniter 的新手。非常感谢!

上面的链接有这个:

功能 autoload_services($class_name){
    $file = '服务/' 。$类名。'.php';
    if (file_exists($file)){
        需要一次($文件);
    }
}

函数 autoload_vos($class_name){
    $file = 'vos/' 。$类名。'.php';
    if (file_exists($file)){
        需要一次($文件);
    }
}

功能自动加载打印机($class_name){
    $file = '打印机' 。$类名。'.php';
    if (file_exists($file)){
        需要一次($文件);
    }
}

spl_autoload_register('autoload_services');
spl_autoload_register('autoload_vos');
spl_autoload_register('autoload_printers');
4

2 回答 2

8

感谢http://codeigniter.com/forums/viewthread/73804/#366081以及我在 Twitter 上关注的一些 CI 人员的一些信息(我问了他们):Eric BarnesDan HorriganPhil SturgeonZack Kitzmiller,我找到了解决方案。如果你和我一样是 CodeIgniter n00b,你可能会喜欢关注这些人。

我删除了 init.php 和 config.php,然后将以下内容塞进了我的 CI config.php 的底部(我还从一个名为 mylibrary 的自定义库中自动加载)。

function multi_auto_require($class) {
if(stripos($class, 'CI') === FALSE && stripos($class, 'PEAR') === FALSE) {
    foreach (array('flourish', 'mylibrary') as $folder){
        if (is_file(APPPATH."../auxengines/{$folder}/{$class}.php")){
            include_once APPPATH."../auxengines/{$folder}/{$class}.php";
        }
    }
}
}

spl_autoload_register('multi_auto_require');

工作出色。谢谢,人们!

于 2010-10-04T10:01:59.407 回答
2

啊,我现在明白了(在查看了您之前提出的问题之后)...您遇到了问题,因为有 2 个定义的__autoload函数(因此导致解析错误)...

要修复它,只需将其中一个重命名为其他名称,然后在定义调用后立即spl_autoload_register('yournewfunctionname');...

只要我理解你的问题,这应该就是它的全部......

于 2010-10-01T19:19:11.130 回答