Usando o php spl_autoload_register () com codeigniter
-
27-09-2019 - |
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
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');
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 ...