Utilisation de la spl_autoload_register PHP () avec Codeigniter
-
27-09-2019 - |
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
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');
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 ...