thinkphp 3.2.3 - Think.class.php 解析
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 解析的更多相关文章
- thinkphp 3.2.3 - Route.class.php 解析(路由匹配)
class Route { public static function check(){ $depr = C('URL_PATHINFO_DEPR'); // '/' $regx = preg_re ...
- thinkphp 3.2.3 - Dispatcher.class.php 解析(转发器)
class Dispatcher { public static function dispatch() { $varPath = C('VAR_PATHINFO'); // 's' $varAddo ...
- thinkphp 3.2.3 - App.class.php 解析
class App { public static function init() { load_ext_file(COMMON_PATH); // { // /home/www/www.domain ...
- ThinkPHP各个目录是什么含义ThinkPHP怎么安装和使用
最近kdchxue看完了smarty之后,想学习下框架,于是乎就选择了ThinkPHP,听说这个框架简单易用,另外还是国产的!所以kdchxue毫不犹豫的就选择了ThinkPHP 了!下面看看Thin ...
- thinkphp cbd模式
ThinkPHP从3.0版本开始引入了全新的CBD(核心Core+行为Behavior+驱动Driver)架构模式,因为从底层开始,框架就采用核心+行为+驱动的架构体系,核心保留了最关键的部分,并在重 ...
- ThinkPHP 3.2 模板中的Angularjs 的变量{{$first}} 无法被解析
ThinkPHP 3.2 模板中的Angularjs 的变量"{{$first}}" 无法被解析, 模板解析冲突,例如在angularjs 的变量"{{$first}}& ...
- 解析使用ThinkPHP应该掌握的调试手段
解析使用ThinkPHP应该掌握的调试手段 使用ThinkPHP应该掌握的调试手段经常看到有人问到findAll的返回数据类型是什么之类的问题,以及出错了不知道什么原因的情况,其实还是没有熟悉 ...
- ThinkPHP中URL解析原理,以及URL路由使用教程!
几个概念: THINKPHP 是一个MVC框架,使用PATHINFO解析出分组名,模块名,方法名,以及参数. PATHINFO:就是 http://localhost/index.php/Home/I ...
- thinkphp从数据库里的html代码显示页面不解析
首先,这个问题不应该出现在这里,因为以前在用ThinkPHP3.1.2的时候,利用富文本编辑器保存文本后,直接从数据库里面取出的数据都能正常显示,改用ThinkPHP3.2.3之后,thinkphp从 ...
随机推荐
- Java面向对象_对象数组
今天学习了对象数组,写点东西总结一下.废话不多说,啥是对象数组呢? 对象数组的概念是这么讲的,对象数组就是数组里的每个元素都是类的对象,赋值时先定义对象,然后将对象直接赋给数组. 举个例子,使用对象数 ...
- $(document).ready(function() { });
l $(document).ready(function() { }); 初始化jsp
- Spring Cloud微服务初探
学习初衷 因为加了不少优秀的知识星球,结交了更多的小伙伴,加了更多的群,每每在自我介绍的时候,都说自己是Android & Java攻城狮. 然鹅,有的小伙伴就来问了,你是搞Java的,那对S ...
- CentOS-7.5 解决ifconfig报错
1.报错信息:-bash: ifconfig: command not found 2.检查IP地址是否设置正常 ip addr 以上说明ip设置正常,如果没有获取到IP地址则设置一个即可,设置i ...
- C 碎片一 计算机知识
一.计算机知识 1, 计算机组成及工作原理 计算机是硬件和软件的结合体.硬件由主机箱和外部设备组成,主机主要包括CPU.内存.主板.硬盘.光驱.各种扩展卡.连接线.电源等:外部设备包括鼠标.键盘等.软 ...
- tomcat的备份脚本
reference:Crontab的20个例子 先科普一下date的使用方法,在sh脚本中经常会使用得到 date -d<字符串>:显示字符串所指的日期与时间.字符串前后必须加上双引号: ...
- CAS登录认证的简单介绍
参考博客: https://www.jianshu.com/p/8daeb20abb84 下面是CAS最基本的协议过程: 下面是CAS Web工作流程图: 名词解释 Ticket Grangting ...
- 【iOS学习笔记】改变状态栏字体颜色
Step1. info.plist中设置UIViewControllerBasedStatusBarAppearance为NO Step2. AppDelegate.m中添加 - (BOOL)appl ...
- Wince 6.0获取设备的分辨率 自动设置窗体位置
调用微软提供给wince的API “coredll.dll” [DllImport("coredll.dll")] public static extern int GetSys ...
- RF的一些技术知识
1. dBm 定义的是 miliwatt(毫瓦特).0 dBm=1mw: dBw 定义 watt.0 dBW = 1 W =1000 mw = 10lg(1000/1)dBm=30dbm. dB ...