コード例 #1
0
ファイル: core.php プロジェクト: rentalhost/core
 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);
     }
 }