Open main menu
首页
专栏
课程
分类
归档
Chat
Sci-Hub
谷歌学术
Libgen
GitHub镜像
登录/注册
搜索
搜索
关闭
Previous
Previous
Next
Next
【thinkphp5分析二】ThinkPHP应用入口分析 - 深入研究ThinkPHP框架的应用入口
sockstack
/
613
/
2023-07-28 22:08:29
ThinkPHP5 源码分析
<p><span style="color: red; font-size: 18px">ChatGPT 可用网址,仅供交流学习使用,如对您有所帮助,请收藏并推荐给需要的朋友。</span><br><a href="https://ckai.xyz/?sockstack§ion=detail" target="__blank">https://ckai.xyz</a><br><br></p> ## 源码分析---入口篇 ### 源码分析 #### 应用入口 用户发起的请求都会经过应用的入口文件,通常是`public/index.php`文件。当然,你也可以更改或者增加新的入口文件。 通常入口文件的代码都比较简单,一个普通的入口文件代码如下: ```php // 应用入口文件 // 定义项目路径 define('APP_PATH', __DIR__ . '/../application/'); // 加载框架引导文件 require __DIR__ . '/../thinkphp/start.php'; ``` > 一般入口文件以定义一些常量为主,支持的常量请参考后续的内容或者附录部分。 > > 通常,我们不建议在应用入口文件中加入过多的代码,尤其是和业务逻辑相关的代码。 #### 加载引导文件 ``` // ThinkPHP 引导文件 // 1. 加载基础文件 require __DIR__ . '/base.php'; // 2. 执行应用 App::run()->send(); ``` #### 加载基础文件 ``` // __DIR__ . '/base.php'文件 //定义常量 define('THINK_VERSION', '5.0.24'); ....//常量太多省略了部分 // 载入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"); } } } // 注册自动加载 \think\Loader::register(); // 注册错误和异常处理机制 \think\Error::register(); // 加载惯例配置文件 \think\Config::set(include THINK_PATH . 'convention' . EXT); ``` 该部分主要是定义一些系统常量,关键点是引入了自动加载类并且注册了自动加载,使得框架可以自动引入类文件,业务层只要直接use对应命名空间的类即可进行实例化,注册错误及异常处理机制, 加载默认配置等操作。 最后就是应用启动,App::run()->send();
【thinkphp5分析二】ThinkPHP应用入口分析 - 深入研究ThinkPHP框架的应用入口
作者
sockstack
许可协议
CC BY 4.0
发布于
2023-07-28
修改于
2024-11-21
上一篇:百度快速收录
下一篇:【thinkphp5分析一】ThinkPHP生命周期 - 理解ThinkPHP框架的运行过程
尚未登录
登录 / 注册
文章分类
博客重构之路
5
Spring Boot简单入门
4
k8s 入门教程
0
MySQL 知识
1
NSQ 消息队列
0
ThinkPHP5 源码分析
5
使用 Docker 从零开始搭建私人代码仓库
3
日常开发汇总
3
标签列表
springboot
hyperf
swoole
webman
php
多线程
数据结构
docker
k8s
thinkphp
mysql
tailwindcss
flowbite
css
前端