class Think {
public static 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); // ...
// /home/www/www.domain.com/core/Mode/common.php
$mode = include is_file(CONF_PATH.'core.php')?CONF_PATH.'core.php':MODE_PATH.APP_MODE.'.php'; //---------------- core ----------------
// 加载核心文件 /home/www/www.domain.com/core/Mode/common.php
foreach ($mode['core'] as $file){
if(is_file($file)) {
include $file;
if(!APP_DEBUG) $content .= compile($file);
}
}
// {
// /home/www/www.domain.com/core/Common/functions.php
// /home/www/www.domain.com/myapp/Common/functions.php
// /home/www/www.domain.com/core/Library/Think/Hook.class.php,
// /home/www/www.domain.com/core/Library/Think/App.class.php,
// /home/www/www.domain.com/core/Library/Think/Dispatcher.class.php,
// /home/www/www.domain.com/core/Library/Think/Route.class.php,
// /home/www/www.domain.com/core/Library/Think/Controller.class.php,
// /home/www/www.domain.com/core/Library/Think/View.class.php,
// /home/www/www.domain.com/core/Library/Behavior/BuildLiteBehavior.class.php,
// /home/www/www.domain.com/core/Library/Behavior/ParseTemplateBehavior.class.php,
// /home/www/www.domain.com/core/Library/Behavior/ContentReplaceBehavior.class.php,
// } //---------------- config ----------------
// 加载应用模式配置文件 /home/www/www.domain.com/core/Mode/common.php
foreach ($mode['config'] as $key=>$file){
is_numeric($key)?C(load_config($file)):C($key,load_config($file));
}
// $mode['config'] = {
// /home/www/www.domain.com/core/Conf/convention.php, // 系统惯例配置
// /home/www/www.domain.com/myapp/Common/Conf/config.php, // 应用公共配置
// } //---------------- alias ----------------
// 加载模式别名定义 /home/www/www.domain.com/core/Mode/common.php
if(isset($mode['alias'])){
self::addMap(is_array($mode['alias'])?$mode['alias']:include $mode['alias']);
}
// $mode['alias'] = {
// 'Think\Log' => '/home/www/www.domain.com/core/Library/Think/Log.class.php',
// 'Think\Log\Driver\File' => '/home/www/www.domain.com/core/Library/Think/Log/Driver/File',
// 'Think\Exception' => '/home/www/www.domain.com/core/Library/Think/Exception',
// 'Think\Model' => '/home/www/www.domain.com/core/Library/Think/Model',
// 'Think\Db' => '/home/www/www.domain.com/core/Library/Think/Db',
// 'Think\Template' => '/home/www/www.domain.com/core/Library/Think/Template',
// 'Think\Cache' => '/home/www/www.domain.com/core/Library/Think/Cache',
// 'Think\Cache\Driver\File' => '/home/www/www.domain.com/core/Library/Think/Cache/Driver/File',
// 'Think\Storage' => '/home/www/www.domain.com/core/Library/Think/Storage',
// } // 加载应用别名定义文件 /home/www/www.domain.com/<myapp>/Common/alias.php
if(is_file(CONF_PATH.'alias.php'))
self::addMap(include CONF_PATH.'alias.php'); //---------------- tags ----------------
// 加载模式行为定义 /home/www/www.domain.com/core/Mode/common.php
if(isset($mode['tags'])) {
// 如: self::$tags['app_init'][] = 'Behavior\BuildLiteBehavior';
Hook::import(is_array($mode['tags'])?$mode['tags']:include $mode['tags']);
}
// $mode['tags'] = {
// 'app_init' => array(
// 'Behavior\BuildLiteBehavior', // 生成运行Lite文件
// ),
// 'app_begin' => array(
// 'Behavior\ReadHtmlCacheBehavior', // 读取静态缓存
// ),
// 'app_end' => array(
// 'Behavior\ShowPageTraceBehavior', // 页面Trace显示
// ),
// 'view_parse' => array(
// 'Behavior\ParseTemplateBehavior', // 模板解析 支持PHP、内置模板引擎和第三方模板引擎
// ),
// 'template_filter'=> array(
// 'Behavior\ContentReplaceBehavior', // 模板输出替换
// ),
// 'view_filter' => array(
// 'Behavior\WriteHtmlCacheBehavior', // 写入静态缓存
// ),
// } // 加载应用行为定义 /home/www/www.domain.com/<myapp>/Common/Conf/tags.php
if(is_file(CONF_PATH.'tags.php'))
// 如:
// 定义: self::$tags['method1'][] = 'UnStandardBehavior\CheckClientIp';
// 执行: Hook::listen('method1');
// 允许应用增加开发模式配置定义
Hook::import(include CONF_PATH.'tags.php'); // 加载框架底层语言包 /home/www/www.domain.com/core/Lang/zh-cn.php
L(include THINK_PATH.'Lang/'.strtolower(C('DEFAULT_LANG')).'.php'); if(!APP_DEBUG){
// 生成合并后的执行文件
// /home/www/www.domain.com/<myapp>/Runtime/common~runtime.php
}else{
// 调试模式加载系统默认的配置文件 /home/www/www.domain.com/core/Conf/debug.php
C(include THINK_PATH.'Conf/debug.php'); // 读取应用调试配置文件 /home/www/www.domain.com/<myapp>/Common/Conf/debug.php
if(is_file(CONF_PATH.'debug'.CONF_EXT))
C(include CONF_PATH.'debug'.CONF_EXT);
} // ... // 设置系统时区
date_default_timezone_set(C('DEFAULT_TIMEZONE')); // 检查应用目录结构 如果不存在则自动创建
if(C('CHECK_APP_DIR')) {
$module = defined('BIND_MODULE') ? BIND_MODULE : C('DEFAULT_MODULE');
if(!is_dir(APP_PATH.$module) || !is_dir(LOG_PATH)){
// 检测应用目录结构
Build::checkDir($module);
}
}
// ... // 运行应用
App::run();
}
}

thinkphp 3.2.3 - Think.class.php 解析的更多相关文章

  1. thinkphp 3.2.3 - Route.class.php 解析(路由匹配)

    class Route { public static function check(){ $depr = C('URL_PATHINFO_DEPR'); // '/' $regx = preg_re ...

  2. thinkphp 3.2.3 - Dispatcher.class.php 解析(转发器)

    class Dispatcher { public static function dispatch() { $varPath = C('VAR_PATHINFO'); // 's' $varAddo ...

  3. thinkphp 3.2.3 - App.class.php 解析

    class App { public static function init() { load_ext_file(COMMON_PATH); // { // /home/www/www.domain ...

  4. ThinkPHP各个目录是什么含义ThinkPHP怎么安装和使用

    最近kdchxue看完了smarty之后,想学习下框架,于是乎就选择了ThinkPHP,听说这个框架简单易用,另外还是国产的!所以kdchxue毫不犹豫的就选择了ThinkPHP 了!下面看看Thin ...

  5. thinkphp cbd模式

    ThinkPHP从3.0版本开始引入了全新的CBD(核心Core+行为Behavior+驱动Driver)架构模式,因为从底层开始,框架就采用核心+行为+驱动的架构体系,核心保留了最关键的部分,并在重 ...

  6. ThinkPHP 3.2 模板中的Angularjs 的变量{{$first}} 无法被解析

    ThinkPHP 3.2 模板中的Angularjs 的变量"{{$first}}" 无法被解析, 模板解析冲突,例如在angularjs 的变量"{{$first}}& ...

  7. 解析使用ThinkPHP应该掌握的调试手段

    解析使用ThinkPHP应该掌握的调试手段     使用ThinkPHP应该掌握的调试手段经常看到有人问到findAll的返回数据类型是什么之类的问题,以及出错了不知道什么原因的情况,其实还是没有熟悉 ...

  8. ThinkPHP中URL解析原理,以及URL路由使用教程!

    几个概念: THINKPHP 是一个MVC框架,使用PATHINFO解析出分组名,模块名,方法名,以及参数. PATHINFO:就是 http://localhost/index.php/Home/I ...

  9. thinkphp从数据库里的html代码显示页面不解析

    首先,这个问题不应该出现在这里,因为以前在用ThinkPHP3.1.2的时候,利用富文本编辑器保存文本后,直接从数据库里面取出的数据都能正常显示,改用ThinkPHP3.2.3之后,thinkphp从 ...

随机推荐

  1. (转)Bash Shell常用快捷键

    Bash Shell常用快捷键 原文:https://github.com/hokein/Wiki/wiki/Bash-Shell%E5%B8%B8%E7%94%A8%E5%BF%AB%E6%8D%B ...

  2. /sbin/int的启动及后续进程的启动_3

    转载自: http://www.ruanyifeng.com/blog/2013/08/linux_boot_process.html 半年前,我写了<计算机是如何启动的?>,探讨BIOS ...

  3. 你一直在用的 Spring Boot Starters 究竟是怎么回事

    Spring Boot 对比 Spring MVC 最大的优点就是使用简单,约定大于配置.不会像之前用 Spring MVC 的时候,时不时被 xml 配置文件搞的晕头转向,冷不防还因为 xml 配置 ...

  4. 提高PHP编程效率的20个要点

    用单引号代替双引号来包含字符串,这样做会更快一些.因为PHP会在双引号包围的字符串中搜寻变量,单引号则 不会,注意:只有echo能这么做,它是一种可以把多个字符串当作参数的“函数”(译注:PHP手册中 ...

  5. SpringBoot | 第五章:多环境配置

    前言 写上一篇看英文资料,耗费了心力呀,这章,相对来说简单点.也比较熟悉,但是这很实用.不扯了,开始~ 多环境配置 maven的多环境配置 springboot多环境配置 总结 老生常谈 多环境配置 ...

  6. SSRF总结

    ssrf漏洞,全称为服务端请求伪造漏洞,由于有的web应用需要实现从其它服务器上获取资源的功能,但是没有对url进行限制,导致可以构造非本意的url对内网或者其它服务器发起恶意请求.ssrf漏洞的危害 ...

  7. fn先生开篇博客

    开篇博客,也不清楚要写点啥nie,以前好像在CSDN上写过一点,但是由于本人工作号一直在变,忘了CSDN上的账号密码(尴尬...不确定这个以后会不会再次丢失呀),重新在开始吧. 记得以前,一直有朋友说 ...

  8. 符号替换问题:请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

    public class Solution { public String replaceSpace(StringBuffer str) { String str1=str.toString(); c ...

  9. 从零开始的全栈工程师——js篇2.13(字符串与数组的方法)

    基类Object的子类有 Function  Array  Number  Boolean  String  Date  Math  RegExp 函数 数组 数字 布尔 字符串 日期 算数 正则 都 ...

  10. POJ3233Matrix Power Series(矩阵快速幂)

    题意 题目链接 给出$n \times n$的矩阵$A$,求$\sum_{i = 1}^k A^i $,每个元素对$m$取模 Sol 考虑直接分治 当$k$为奇数时 $\sum_{i = 1}^k A ...