Pergunta

Por favor, como posso usar spl_autoload_register () com codeigniter? Preciso fazer isso porque estou usando o CodeIgniter com outra estrutura que também usa o AutoLoad.

Eu vi algo aqui

Php spl_autoload_register

mas Eu não sei como segmentar o codeigniter automaticamente. Eu sou novo no OOP e CodeIgniter. Muito obrigado!

O link acima tem o seguinte:

function autoload_services($class_name){
    $file = 'services/' . $class_name. '.php';
    if (file_exists($file)){
        require_once($file);
    }
}

function autoload_vos($class_name){
    $file = 'vos/' . $class_name. '.php';
    if (file_exists($file)){
        require_once($file);
    }
}

function autoload_printers($class_name){
    $file = 'printers' . $class_name. '.php';
    if (file_exists($file)){
        require_once($file);
    }
}

spl_autoload_register('autoload_services');
spl_autoload_register('autoload_vos');
spl_autoload_register('autoload_printers');
Foi útil?

Solução

Graças a http://codeigniter.com/forums/viewthread/73804/#366081 E algumas informações de algumas pessoas de IC que eu sigo no Twitter (perguntei a eles): Eric Barnes, Dan Horrigan, Phil Sturgeon e Zack Kitzmiller, Eu encontrei uma solução. Se você é um CodeIgniter N00B como eu, você pode seguir esses caras.

Eu excluí o init.php e o config.php e depois atolei o seguinte na parte inferior do meu CI Config.php (também estou carregando automaticamente uma biblioteca personalizada chamada 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');

Funciona brilhantemente. Obrigado, pessoal!

Outras dicas

Ahhh, eu vejo agora (depois de olhar para uma pergunta anterior você perguntou) ... você está tendo um problema porque há 2 definidos __autoload funções (e, portanto, resultam em um erro de análise) ...

Para corrigi -lo, basta renomear um deles para outra coisa e depois logo após a chamada de definição spl_autoload_register('yournewfunctionname');...

Isso deve ser tudo o que existe, desde que eu entendi seu problema ...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top