Question

S'il vous plaît comment puis-je utiliser spl_autoload_register () avec CodeIgniter? Je dois faire cela parce que Im en utilisant CodeIgniter avec un autre cadre qui utilise également autoload.

J'ai vu quelque chose ici

PHP spl_autoload_register

Je ne sais pas comment cibler le CodeIgniter autoload . Im nouveau à POO et Codeigniter. Merci beaucoup!

Le lien ci-dessus a ceci:

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');
Était-ce utile?

La solution

Merci à http://codeigniter.com/forums/viewthread/73804/#366081 et quelques bribes d'information de certains gens de CI que je suivre sur Twitter (j'ai demandé em): Eric Barnes , Dan Horrigan , Phil Sturgeon et Zack Kitzmiller , je l'ai trouvé une solution. Si vous êtes un n00b CodeIgniter comme moi, vous pouvez aimer suivre ces gars-là.

Je init.php et supprimé config.php, puis coincé ce qui suit dans le fond de mon config.php de CI (je suis également d'auto-chargement d'une bibliothèque personnalisée appelée 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');

fonctionne avec brio. Merci, les gens!

Autres conseils

Ahhh, je vois maintenant (après avoir regardé une question avant ) ... vous avez un problème parce qu'il ya 2 fonctions __autoload définies (et donc le résultat d'une erreur d'analyse) ...

Pour résoudre ce problème, il suffit de renommer un d'entre eux à quelque chose d'autre, puis juste après appel définition spl_autoload_register('yournewfunctionname'); ...

Ce devrait être tout ce qu'il ya à faire, tant que je comprends votre problème ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top