function include_class_file($dir, $class) { if (is_dir($dir) && ($handle = opendir($dir))) { while (false !== ($entry = readdir($handle))) { // skip any file starting with "." if (preg_match('/^\\./', $entry)) { continue; } // loop over $target = $dir . DS . $entry; if (is_file($target) && $entry == $class . '.class.php') { include_once $target; } else { if (is_dir($target)) { include_class_file($target, $class); } } } } }
function class_autoload($class) { $prefix = substr($class, 0, 3); if ('CI_' == $prefix or config_item('subclass_prefix') == $prefix) { return; } $folders = ['controllers', 'core', 'dao', 'models', 'libraries', 'config', 'third_party']; foreach ($folders as $dir) { if (include_class_file($class, APPPATH . $dir)) { return; } } foreach ($folders as $dir) { if (!is_dir(APPPATH . $dir)) { continue; } foreach (scandir(APPPATH . $dir) as $sub) { if ($sub == '.' || $sub == '..') { continue; } if (include_class_file($class, APPPATH . $dir . '/' . $sub)) { return; } } } }