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. 新手写AIDL构建失败:...aidl.exe'' finished with non-zero exit value 1

    最近学习aidl,写demo后编译报错,跟着<Android开发艺术探索>以及网上的一些aidl详解博客敲完后一直编译不过,错误日志如下: Process 'command 'C:\Use ...

  2. 【Linux】Linux常用命令大全

    系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 - (SMBIOS ...

  3. Ceres Solver: 高效的非线性优化库(二)实战篇

    Ceres Solver: 高效的非线性优化库(二)实战篇 接上篇: Ceres Solver: 高效的非线性优化库(一) 如何求导 Ceres Solver提供了一种自动求导的方案,上一篇我们已经看 ...

  4. 白话SpringCloud | 第一章:什么是SpringCloud

    前言 作为SpringCloud的正式第一章,我们先来简单了解下SpringCloud相关知识点吧,内容可能比较多. 何为微服务 传统单体架构 服务化架构 微服务架构 什么是SpringCloud 核 ...

  5. asp.net弹出窗口并返回值

    a.html <form name="form1" method="post" action=""> <a href=&q ...

  6. Laravel项目的结构文章

    http://esbenp.github.io/2016/04/11/modern-rest-api-laravel-part-1/

  7. 人工智能之必须会的Python基础

    Python 号称是最接近人工智能的语言,因为它的动态便捷性和灵活的三方扩展,成就了它在人工智能领域的丰碑 走进Python,靠近人工智能 一.编程语言Python的基础 之 "浅入浅出&q ...

  8. 安装windows phone 7

    本机环境win7 32位旗舰版,本来是4G内存的  系统只能读出2.9G,vs2010中文旗舰版,想搭建windows phone环境学习wp手机开发.安装完了之后明显感觉机器慢了些. ①:安装Mic ...

  9. Nagios-4.1.1 (OpenLogic CentOS 7.2)

    平台: CentOS 类型: 虚拟机镜像 软件包: apache2.4.6 nagios 4.1.1 php5.4.16 devops monitoring nagios open-source ph ...

  10. LeetCode Merge Sorted Array 合并已排序的数组

    void merge(int A[], int m, int B[], int n) { int *a=A,*b=B; ,j=; ||m==){ //针对特殊情况,比如A或B中无元素的情况 & ...