博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
thinkphp3.2.3源码学习(3)
阅读量:5748 次
发布时间:2019-06-18

本文共 3339 字,大约阅读时间需要 11 分钟。

/**     * 应用程序初始化     * @access public     * @return void     */    static public function start() {      // 注册AUTOLOAD方法      spl_autoload_register('Think\Think::autoload');            // 设定错误和异常处理      register_shutdown_function('Think\Think::fatalError');      set_error_handler('Think\Think::appError');      set_exception_handler('Think\Think::appException');      // 初始化文件存储方式      Storage::connect(STORAGE_TYPE);      $runtimefile  = RUNTIME_PATH.APP_MODE.'~runtime.php';      if(!APP_DEBUG && Storage::has($runtimefile)){          Storage::load($runtimefile);      }else{          if(Storage::has($runtimefile))              Storage::unlink($runtimefile);          $content =  '';          // 读取应用模式          $mode   =   include is_file(CONF_PATH.'core.php')?CONF_PATH.'core.php':MODE_PATH.APP_MODE.'.php';          // 加载核心文件          foreach ($mode['core'] as $file){              if(is_file($file)) {                include $file;                if(!APP_DEBUG) $content   .= compile($file);              }          }          // 加载应用模式配置文件          foreach ($mode['config'] as $key=>$file){              is_numeric($key)?C(load_config($file)):C($key,load_config($file));          }          // 读取当前应用模式对应的配置文件          if('common' != APP_MODE && is_file(CONF_PATH.'config_'.APP_MODE.CONF_EXT))              C(load_config(CONF_PATH.'config_'.APP_MODE.CONF_EXT));            // 加载模式别名定义          if(isset($mode['alias'])){              self::addMap(is_array($mode['alias'])?$mode['alias']:include $mode['alias']);          }          // 加载应用别名定义文件          if(is_file(CONF_PATH.'alias.php'))              self::addMap(include CONF_PATH.'alias.php');          // 加载模式行为定义          if(isset($mode['tags'])) {              Hook::import(is_array($mode['tags'])?$mode['tags']:include $mode['tags']);          }          // 加载应用行为定义          if(is_file(CONF_PATH.'tags.php'))              // 允许应用增加开发模式配置定义              Hook::import(include CONF_PATH.'tags.php');             // 加载框架底层语言包          L(include THINK_PATH.'Lang/'.strtolower(C('DEFAULT_LANG')).'.php');          if(!APP_DEBUG){              $content  .=  "\nnamespace { Think\\Think::addMap(".var_export(self::$_map,true).");";              $content  .=  "\nL(".var_export(L(),true).");\nC(".var_export(C(),true).');Think\Hook::import('.var_export(Hook::get(),true).');}';              Storage::put($runtimefile,strip_whitespace('
  1. 注册autoload方法
  2. 设定错误和异常处理
  3. 初始化文件存储方式
  4. 初始化缓存文件。如果不是调试模式,且缓存文件存在的话,就加载缓存
  5. 否则,有缓存的话,就删除缓存文件。
  6. 引入Mode/common.php 里面的core,如果对应的文件存在的话,就引入文件。如果不是调试模式的话,content就等于编译文件。
// 函数和类文件    'core'      =>  array(        THINK_PATH.'Common/functions.php',        COMMON_PATH.'Common/function.php',        CORE_PATH . 'Hook'.EXT,        CORE_PATH . 'App'.EXT,        CORE_PATH . 'Dispatcher'.EXT,        //CORE_PATH . 'Log'.EXT,        CORE_PATH . 'Route'.EXT,        CORE_PATH . 'Controller'.EXT,        CORE_PATH . 'View'.EXT,        BEHAVIOR_PATH . 'BuildLiteBehavior'.EXT,        BEHAVIOR_PATH . 'ParseTemplateBehavior'.EXT,        BEHAVIOR_PATH . 'ContentReplaceBehavior'.EXT,    ),复制代码
  1. 加载配置文件
'config'    =>  array(        THINK_PATH.'Conf/convention.php',   // 系统惯例配置        CONF_PATH.'config'.CONF_EXT,      // 应用公共配置    ),复制代码
  1. 如果APP_MODE不等于common的话,读取当前应用模式对应的配置文件
  2. 加载模式行为定义
  3. 加载应用行为定义
  4. 加载框架底层语言包
  5. 读取当前应用状态对应的配置文件
  6. 设置系统时区
  7. 检查应用目录结构,如果不存在则自动创建
  8. 记录加载文件时间
  9. APP:run()

转载地址:http://afrzx.baihongyu.com/

你可能感兴趣的文章
ASP.NET网站部署问题集
查看>>
Python之模块和包学习
查看>>
Oracle RAC负载均衡
查看>>
读书笔记2014第6本:《The Hunger Games》
查看>>
Linux下安装MongoDB
查看>>
Rafy 框架 - 通用查询条件(CommonQueryCriteria)
查看>>
js为元素动态添加css代码
查看>>
十个Flex/Air疑难杂症及解决方案简略
查看>>
EBS R12 ADCTRL的使用
查看>>
如何使用metasploit挖掘邮箱地址
查看>>
[New Portal]SQL Azure(十二) 使用新Portal 创建 SQL Azure Database
查看>>
页_SQL Server 中数据存储的基本单位
查看>>
Node.js 网页瘸腿爬虫初体验
查看>>
简单文章管理系统
查看>>
网络基础
查看>>
[MFC] 从文件读取与向文件添加数据
查看>>
ABP理论学习之领域服务
查看>>
Python之冒泡排序
查看>>
写的好帮手项目官员 - Evernote 5.4(Evernote的) 中国绿色版
查看>>
HTML最新标准HTML5小结
查看>>