Uso de la spl_autoload_register PHP () con Codeigniter
-
27-09-2019 - |
Pregunta
Por favor, ¿cómo puedo usar spl_autoload_register () con CodeIgniter? Necesito hacer esto porque Im usando CodeIgniter con otro marco que también utiliza la carga automática.
vi algo aquí
y I no sabe cómo dirigirse a la CodeIgniter carga automática . Im nuevo en programación orientada a objetos y CodeIgniter. ¡Muchas gracias!
El enlace de arriba tiene esta:
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');
Solución
Gracias a http://codeigniter.com/forums/viewthread/73804/#366081 y algunos bits de información de algunos popular IC que sigo en twitter (pedí em): Eric Barnes , Dan Horrigan , Phil esturión y Zack Kitzmiller , he encontrado una solución. Si usted es un n00b CodeIgniter como yo, usted puede tener gusto de seguir estos chicos.
He eliminado init.php y config.php, entonces atascado lo siguiente en la parte inferior de mi config.php de CI (También estoy de carga automática de una biblioteca personalizada llamada 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 muy bien. Gracias, gente!
Otros consejos
Ahhh, veo ahora (después de mirar una cuestión previa usted pidió) ... va a tener un problema porque hay 2 funciones __autoload
definidos (y por lo tanto da lugar a un error de análisis) ...
Para solucionarlo, basta con cambiar el nombre de una de ellas a otra cosa, y luego a la derecha después de la llamada definición spl_autoload_register('yournewfunctionname');
...
Eso debería ser todo lo que hay que hacer, siempre y cuando entiendo su problema ...