网站首页 > 技术教程 正文
一、生命周期:
二、入口文件
thinkphp使用单一入口,所有的请求都从默认的index.php文件进入。你还可以创建多个应用,一个应用对应一个入口文件,所有的入口文件都引用一套thinkphp类库。
// 定义应用目录
define('APP_PATH', __DIR__ . '/../application/');
// 加载框架引导文件
require __DIR__ . '/../thinkphp/start.php';
第一行代码 定义了应用的默认目录;
第二行代码是我们下面要看的引导文件
注意:官方不建议在应用入口文件中加入过多的代码,尤其是和业务逻辑相关的代码。
三、引导文件
start.php文件就是系统默认的一个引导文件。在引导文件中,会依次执行下面操作:
加载系统常量定义-->加载环境变量定义文件-->注册自动加载机制-->注册错误和异常处理机制-->加载惯例配置文件-->执行应用
// ThinkPHP 引导文件 // 1. 加载基础文件 require __DIR__ . '/base.php'; // 2. 执行应用 App::run()->send();
start.php引导文件首先会调用base.php基础引导文件,某些特殊需求下面可能直接在入口文件中引入基础引导文件。
define('THINK_VERSION', '5.0.23'); // 版本信息
define('THINK_START_TIME', microtime(true)); // 记录开始运行时间
define('THINK_START_MEM', memory_get_usage()); // 记录内存初始使用
define('EXT', '.php'); // 类文件后缀
define('DS', DIRECTORY_SEPARATOR);
defined('THINK_PATH') or define('THINK_PATH', __DIR__ . DS); //定义当前入口文件所在的目录,即thinkphp框架的目录
define('LIB_PATH', THINK_PATH . 'library' . DS); // lib所在目录
define('CORE_PATH', LIB_PATH . 'think' . DS); // 核心文件所在目录
define('TRAIT_PATH', LIB_PATH . 'traits' . DS);
defined('APP_PATH') or define('APP_PATH', dirname($_SERVER['SCRIPT_FILENAME']) . DS);
defined('ROOT_PATH') or define('ROOT_PATH', dirname(realpath(APP_PATH)) . DS);
defined('EXTEND_PATH') or define('EXTEND_PATH', ROOT_PATH . 'extend' . DS);
defined('VENDOR_PATH') or define('VENDOR_PATH', ROOT_PATH . 'vendor' . DS);
defined('RUNTIME_PATH') or define('RUNTIME_PATH', ROOT_PATH . 'runtime' . DS);
defined('LOG_PATH') or define('LOG_PATH', RUNTIME_PATH . 'log' . DS);
defined('CACHE_PATH') or define('CACHE_PATH', RUNTIME_PATH . 'cache' . DS);
defined('TEMP_PATH') or define('TEMP_PATH', RUNTIME_PATH . 'temp' . DS);
defined('CONF_PATH') or define('CONF_PATH', APP_PATH); // 配置文件目录
defined('CONF_EXT') or define('CONF_EXT', EXT); // 配置文件后缀
defined('ENV_PREFIX') or define('ENV_PREFIX', 'PHP_'); // 环境变量的配置前缀
/**
* 环境常量
* php判断解析php服务是由那种服务器软件,是采用那种协议,PHP_ASPI是一个可以直接使用的常量。
* 如果是nginx+fastcgi环境,那么它的值是cgi-fcgi
* 如果是apache环境,那么他的值是apache2handler
* 如果是命令行的形式,那么它的值是cli
* PHP_OS PHP所在的操作系统的名字,例如linux和WIN。
* 充分理解php的各种运行模式,参看:
* http://www.jb51.net/article/37756.htm
* http://www.cnblogs.com/liuzhang/p/3929198.html
*/
define('IS_CLI', PHP_SAPI == 'cli' ? true : false);
define('IS_WIN', strpos(PHP_OS, 'WIN') !== false);
// 载入Loader类
require CORE_PATH . 'Loader.php';
// 加载环境变量配置文件
if (is_file(ROOT_PATH . '.env')) {
$env = parse_ini_file(ROOT_PATH . '.env', true);
foreach ($env as $key => $val) {
$name = ENV_PREFIX . strtoupper($key);
if (is_array($val)) {
foreach ($val as $k => $v) {
$item = $name . '_' . strtoupper($k);
putenv("$item=$v");
}
} else {
putenv("$name=$val");
}
}
}
/**
* 注册自动加载
* 系统的自动加载由下面主要部分组成:
* 1、注册系统的自动加载方法 \think\Loader::autoload
* 2、注册系统命名空间定义
* 3、加载类库映射文件(如果存在)
* 4、如果存在Composer安装,则注册**Composer**自动加载
* 5、注册extend扩展目录
*/
\think\Loader::register();
/**
* 注册错误和异常处理机制 由三部分组成:
* 1.应用关闭方法:think\Error::appShutdown
* 2.错误处理方法:think\Error::appError
* 3.异常处理方法:think\Error::appException
*/
\think\Error::register();
// 加载惯例配置文件
\think\Config::set(include THINK_PATH . 'convention' . EXT);
猜你喜欢
- 2024-10-16 php宝塔搭建部署实战零起飞OA办公管理系统源码
- 2024-10-07 docker部署think vue项目(docker部署thinkphp)
- 2024-10-07 ThinkAdmin-V5开发笔记(thinkadmin怎么样)
- 2024-10-07 php宝塔搭建实战开源MUYUCMS轻量级开源内容管理系统php源码
- 2024-10-07 基于docker-compose跑起一个php网站
- 2024-10-07 thinkphp8+vue3微信小程序商城,发布公众号App+SAAS+多商户
- 2024-10-07 php宝塔部署实战OneKeyAdmin插件化管理系统源码
- 2024-10-07 配置nginx,Apache支持pathinfo模式-什么是phpinfo模式
- 2024-10-07 应用phpEnv+VSCode+Git+码云+Thinkphp6进行项目开发的基本配置
- 2024-10-07 皮特吧分享一款基于ThinkPHP的WAP+PC导航网站源码
欢迎 你 发表评论:
- 10-23Excel计算工龄和年份之差_excel算工龄的公式year
- 10-23Excel YEARFRAC函数:时间的"年份比例尺"详解
- 10-23最常用的10个Excel函数,中文解读,动图演示,易学易用
- 10-23EXCEL中如何计算截止到今日(两个时间中)的时间
- 10-2390%人不知道的Excel神技:DATEDIF 精准计算年龄,告别手动算错!
- 10-23计算工龄及工龄工资(90%的人搞错了):DATE、DATEDIF组合应用
- 10-23Excel中如何计算工作日天数?用这两个函数轻松计算,附新年日历
- 10-23怎样快速提取单元格中的出生日期?用「Ctrl+E」批量搞定
- 最近发表
-
- Excel计算工龄和年份之差_excel算工龄的公式year
- Excel YEARFRAC函数:时间的"年份比例尺"详解
- 最常用的10个Excel函数,中文解读,动图演示,易学易用
- EXCEL中如何计算截止到今日(两个时间中)的时间
- 90%人不知道的Excel神技:DATEDIF 精准计算年龄,告别手动算错!
- 计算工龄及工龄工资(90%的人搞错了):DATE、DATEDIF组合应用
- Excel中如何计算工作日天数?用这两个函数轻松计算,附新年日历
- 怎样快速提取单元格中的出生日期?用「Ctrl+E」批量搞定
- Excel日期函数之DATEDIF函数_excel函数datedif在哪里
- Excel函数-DATEDIF求司龄_exceldatedif函数计算年龄
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)

本文暂时没有评论,来添加一个吧(●'◡'●)