Utilizzando lo spl_autoload_register PHP () con Codeigniter
-
27-09-2019 - |
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
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');
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 ...