Domanda

come posso usare spl_autoload_register () con Codeigniter? Ho bisogno di fare questo perché Im usando Codeigniter con un altro quadro che utilizza anche autoload.

Ho visto qualcosa qui

PHP spl_autoload_register

ma Non so come indirizzare il CodeIgniter autoload . Im nuovo a OOP e Codeigniter. Grazie mille!

Il link qui sopra ha questo:

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');
È stato utile?

Soluzione

Grazie alla http://codeigniter.com/forums/viewthread/73804/#366081 e alcuni bit di informazioni da parte di alcuni CI popolare che seguo su twitter (ho chiesto em): Eric Barnes , Dan Horrigan , Phil Sturgeon e Zack Kitzmiller , ho trovato una soluzione. Se sei un n00b CodeIgniter come me, che hanno la possibilità di seguire questi ragazzi.

ho cancellato init.php e config.php, poi infilai il seguente nella parte inferiore del mio config.php di CI (sto anche caricamento automatico da una libreria personalizzata denominata 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');

funziona brillantemente. Grazie, gente!

Altri suggerimenti

Ahhh, vedo ora (dopo aver guardato una questione preliminare lei ha chiesto) ... hai un problema, perché ci sono 2 funzioni __autoload definiti (e quindi come risultato un errore di analisi) ...

Per risolvere il problema, è sufficiente rinominare uno di loro a qualcosa d'altro, e poi a destra dopo la definizione delle chiamate spl_autoload_register('yournewfunctionname'); ...

Questo dovrebbe essere tutto ciò che devi fare, fino a quando ho capito il tuo problema ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top