当前位置: 首页 > article >正文

thinkphp 5.1 部分知识记录<一>

1、配置基础

惯例配置->应用配置->模块配置->动态配置

  • 惯例配置:核心框架内置的配置文件,无需更改。
  • 应用配置:每个应用的全局配置文件(框架安装后会生成初始的应用配置文件),有部分配置参数仅能在应用配置文件中设置。
  • 模块配置:每个模块的配置文件(相同的配置参数会覆盖应用配置),有部分配置参数模块配置是无效的,因为已经使用过。
  • 动态配置:主要是指在控制器或者行为中进行(动态)更改配置,该配置方式只在当次请求有效,因为不会保存到配置文件中。

只能应用配置中设置参数如下:

配置参数描述
app_debug应用调试模式(支持环境变量配置)
app_trace应用trace(支持环境变量配置)
class_suffix类后缀
default_filter默认过滤机制
root_namespace根命名空间
pathinfo_deprPATH_INFO分隔符
url_route_must路由强制模式
auto_bind_module自动绑定模块
default_lang默认语言
lang_switch_on多语言切换

只能环境变量中修改的参数如下:

配置参数描述
app_namespace应用命名空间
config_ext配置文件后缀

2、架构总览

  • 入口文件
  • 应用
  • 路由
  • 模块
  • 控制器
  • 操作(方法)
  • 模型
  • 视图
  • 板引擎
  • 驱动
  • 行为
  • 中间件
  • 事件
  • 助手函数

3、环境变量

5.1版本取消了所有的系统常量,原来的系统路径变量改为使用Env类获取(需要引入think\facade\Env):

// 获取应用目录(不区分大小写)
echo Env::get('app_path');
// 或者
echo Env::get('APP_PATH');

支持获取的系统路径变量包括:

系统路径Env参数名称
应用根目录root_path
应用目录app_path
框架目录think_path
配置目录config_path
扩展目录extend_path
composer目录vendor_path
运行缓存目录runtime_path
路由目录route_path
当前模块目录module_path
系统路径Env参数名称
应用根目录root_path
应用目录app_path
框架目录think_path
配置目录config_path
扩展目录extend_path
composer目录vendor_path
运行缓存目录runtime_path
路由目录route_path
当前模块目录module_path

4、命名空间

特别注意的是,如果你需要调用PHP内置的类库,或者第三方没有使用命名空间的类库,记得在实例化类库的时候加上 \,例如:

// 错误的用法
$class = new stdClass();
$xml  =  new SimpleXmlElement($xmlstr);
// 正确的用法
$class = new \stdClass();
$xml  =  new \SimpleXmlElement($xmlstr);

从ThinkPHP5.0开始,遵循PSR-4自动加载规范,只需要给类库正确定义所在的命名空间,并且命名空间的路径与类库文件的目录一致,那么就可以实现类的自动加载,从而实现真正的惰性加载。

例如,\think\cache\driver\File类的定义为:

namespace think\cache\driver;class File 
{
}

如果我们实例化该类的话,应该是:

$class = new \think\cache\driver\File();

系统会自动加载该类对应路径的类文件,其所在的路径是 thinkphp/library/think/cache/driver/File.php

注:5.1版本默认的目录规范是小写,类文件命名是驼峰法,并且首字母大写。

5、容器和依赖注入

依赖注入其实本质上是指对类的依赖通过构造器完成自动注入,例如在控制器架构方法和操作方法中一旦对参数进行对象类型约束则会自动触发依赖注入,由于访问控制器的参数都来自于URL请求,普通变量就是通过参数绑定自动获取,对象变量则是通过依赖注入生成。其实就是java的对象参数,这个概念豪头太大,又不好记。

<?php
namespace app\index\controller;use app\index\model\User;class Index
{protected $user;public function __construct(User $user){$this->user = $user;}public function hello(){return 'Hello,' . $this->user->name . '!';}
}

系统内置绑定到容器中的类库包括:

系统类库容器绑定标识
think\Buildbuild
think\Cachecache
http://www.lryc.cn/news/2396055.html

相关文章:

  • RAG:面向知识密集型自然语言处理任务的检索增强生成
  • MVVM、MVC的区别、什么是MVVM
  • 网页自动化部署(webhook方法)
  • 线性代数入门:轻松理解二阶与三阶行列式的定义与理解
  • AU6825集成音频DSP的2x32W数字型ClaSSD音频功率放大器(替代TAS5825)
  • 华为云Flexus+DeepSeek征文|DeepSeek-V3/R1商用服务体验全流程
  • Go语言的原子操作
  • Visual Studio 2022 插件推荐
  • 【深度学习-pytorch篇】3. 优化器实现:momentum,NAG,AdaGrad,RMSProp,Adam
  • C# NX二次开发-查找连续倒圆角面
  • 今天遇到的bug
  • Go语言字符串类型详解
  • 长安链智能合约命令解析(全集)
  • 一、OpenCV的基本操作
  • 裂缝仪在线监测装置:工程安全领域的“实时守卫者”
  • 【论文精读】2024 ECCV--MGLD-VSR现实世界视频超分辨率(RealWorld VSR)
  • SpringBoot简单体验
  • 【系统架构设计师】2025年上半年真题论文回忆版: 论系统负载均衡设计方法(包括解题思路和参考素材)
  • 2025年通用 Linux 服务器操作系统该如何选择?
  • Azure devops 系统之五-部署ASP.NET web app
  • Hadoop是什么
  • 学习路之PHP--easyswoole_panel安装使用
  • 结合 AI 编程,让前端开发更简单:趋势、方法与实践
  • 【拓扑排序】P6560 [SBCOI2020] 时光的流逝|普及+
  • SSRF 接收器
  • 【设计模式】责任链
  • unix/linux source 命令,其高级使用
  • 邮件验证码存储推荐方式
  • Allegro 输出生产数据详解
  • FastAPI MCP 快速入门教程