public static function __autoload($classname) { // Se for uma classe do core... if (substr($classname, 0, 5) === 'core_') { $classpath = CORE_ROOT . "/classes/{$classname}.php"; // Após obter o caminho, inclui o arquivo if (!is_file($classpath)) { $classpath = self::get_path_fixed($classpath); $error = new core_error('CxFFF0', null, array('classname' => $classname, 'classpath' => $classpath)); $error->run_special_exception(); } require_once $classpath; return true; } // Localiza uma user class // Primeiro localiza a parte modular $classpath = self::get_modular_parts($classname, array('path_clip' => true, 'search_paths' => false, 'make_fullpath' => true)); // Feito isso, verifica qual será o complemento que será aplicado no fullpath switch ($classpath->clipped) { case 'model': $classpath->fullpath .= '/models'; break; case 'library': $classpath->fullpath .= '/libraries'; break; case 'exception': $classpath->fullpath .= '/exceptions'; break; } // O próximo passo é localizar o arquivo que será incluido $classpath_subdata = self::get_modular_parts($classpath->remains, array('start_dir' => $classpath->fullpath, 'search_modules' => false, 'make_fullpath' => true)); // Após obter o caminho, inclui o arquivo if (!is_file($classpath_subdata->fullpath)) { $error = new core_error('CxFFF1', null, array('classname' => $classname, 'classpath' => $classpath->fullpath)); $error->run_special_exception(); } // Inclui o arquivo self::do_require($classpath_subdata->fullpath); // Se for um modelo, é necessário iniciá-lo if ($classpath->clipped === 'model') { core_model::_get_instance($classname); } }