thinkphp 5.1 部分知识记录<一>
1、配置基础
惯例配置->应用配置->模块配置->动态配置
- 惯例配置:核心框架内置的配置文件,无需更改。
- 应用配置:每个应用的全局配置文件(框架安装后会生成初始的应用配置文件),有部分配置参数仅能在应用配置文件中设置。
- 模块配置:每个模块的配置文件(相同的配置参数会覆盖应用配置),有部分配置参数模块配置是无效的,因为已经使用过。
- 动态配置:主要是指在控制器或者行为中进行(动态)更改配置,该配置方式只在当次请求有效,因为不会保存到配置文件中。
只能应用配置中设置参数如下:
配置参数 | 描述 |
---|---|
app_debug | 应用调试模式(支持环境变量配置) |
app_trace | 应用trace(支持环境变量配置) |
class_suffix | 类后缀 |
default_filter | 默认过滤机制 |
root_namespace | 根命名空间 |
pathinfo_depr | PATH_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\Build | build |
think\Cache | cache |
相关文章:
thinkphp 5.1 部分知识记录<一>
1、配置基础 惯例配置->应用配置->模块配置->动态配置 惯例配置:核心框架内置的配置文件,无需更改。应用配置:每个应用的全局配置文件(框架安装后会生成初始的应用配置文件),有部分配置参数仅能在应用配置文件中设置。模块配置:每个模块的配置文件(相同的配置…...
RAG:面向知识密集型自然语言处理任务的检索增强生成
摘要 大型预训练语言模型已被证明能够在其参数中存储事实性知识,并在下游自然语言处理(NLP)任务的微调中取得了最先进的结果。然而,它们访问和精准操作知识的能力仍然有限,因此在知识密集型任务中,其表现落后于针对特定任务设计的架构。此外,如何为它们的决策提供出处(…...
MVVM、MVC的区别、什么是MVVM
一、什么是MVVM (一)定义 MVVM是Model - View - ViewModel的缩写,它是一种软件架构设计模式,主要用于构建用户界面。这种模式将应用程序分为三个主要部分: Model(模型层) 它是应用程序中负责…...

网页自动化部署(webhook方法)
实现步骤: 宝塔安装宝塔WebHook 2.5插件。 github 上配置网页仓库(或可在服务器的网页根目录clone)。 配置宝塔WebHook 2.5 添加hook脚本; 编辑添加syncJC脚本; #!/bin/bash # 定义网站根目录 WEBROOT"/www…...
线性代数入门:轻松理解二阶与三阶行列式的定义与理解
前言 行列式是线性代数中一个非常基础但又极其重要的概念。它不仅是解线性方程组的利器,还在矩阵理论、向量空间、特征值等问题中扮演着关键角色。今天,我将用最通俗易懂的方式,向高中生朋友们介绍二阶和三阶行列式的基本概念和计算方法。让…...

AU6825集成音频DSP的2x32W数字型ClaSSD音频功率放大器(替代TAS5825)
1.特性 ● 输出配置 - 立体声 2.0: 2 x 32W (8Ω,24V,THD N 10%) - 立体声 2.0: 2 x 26W (8Ω,21V,THD N 1%) ● 供电电压范围 - PVDD:4.5V -26.4V - DVDD: 1.8V 或者 3.3V ● 静态功耗 - 37mA at PVDD12V ● 音频性能指标 - THDN ≤ 0.02% at 1W,1kHz - SNR ≥ 107dB (A-wei…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1商用服务体验全流程
华为云 Flexus 与 DeepSeek-V3/R1 的深度整合,构建了一套 “弹性算力 智能引擎” 的协同体系。 Flexus 系列云服务器基于柔性计算技术,通过动态资源调度(如 Flexus X 实例)实现 CPU / 内存的实时弹性分配,尤其适合大模…...
Go语言的原子操作
当我们想要对某个变量并发安全的修改,除了使用官方提供的mutex,还可以使用sync/atomic包的原子操作,它能够保证对变量的读取或修改期间不被其他的协程所影响。 Golang提供的原子操作都是非侵入式的,由标准库sync/atmoic包提供&am…...
Visual Studio 2022 插件推荐
Visual Studio 2022 插件推荐 Visual Studio 2022 (简称 VS2022) 是一款强大的 IDE,适合各类系统组件、框架和应用的开发。插件是接入 VS2022 最重要的扩展方式之一,它们可以大幅提升开发效率、优化代码质量,并提供强大的调试和分析功能。 …...
【深度学习-pytorch篇】3. 优化器实现:momentum,NAG,AdaGrad,RMSProp,Adam
Optimization Algorithms Explained 1. Beale Function 与导数函数讲解 Beale 函数是一个著名的用于测试优化算法性能的函数,其具有多个局部极值点,适合评估不同优化器的表现: def beale(x1, x2):"""Beale 函数定义&#x…...

C# NX二次开发-查找连续倒圆角面
在QQ群里有人问怎么通过一个选择一个倒圆角面来自动选中一组倒圆角面。 可以通过ufun函数 UF_MODL_ask_face_type 和 UF_MODL_ask_face_props 可判断处理选择相应的一组圆角面。 代码: Tag[] 查找连续倒圆角面(Tag faceTag) {theUf.Modl.AskFaceType(faceTag, out int typ…...

今天遇到的bug
先呈现一下BUG现象。 这主要是一个传参问题,参数一直传不过去。后来我才发现,问题所在。 我们这里用的RquestBody接收参数,所有请求的参数需要用在body体中接收,但是我们用postman,用的是字符串查询方式传参&#x…...
Go语言字符串类型详解
1. 定义字符串类型 package mainimport ("fmt");func main() {var str1 string "你好 GoLang 1"var str2 "你好 GoLang 2"str3 : "你好 GoLang 3"fmt.Printf("%v--%T\n", str1, str1)// 你好 GoLang 1--stringfmt.Printf…...

长安链智能合约命令解析(全集)
创建命令解析 ./cmc client contract user create \ --contract-namefact \ --runtime-typeWASMER \ --byte-code-path./testdata/claim-wasm-demo/rust-fact-2.0.0.wasm \ --version1.0 \ --sdk-conf-path./testdata/sdk_config.yml \ --admin-key-file-paths./testdata/cryp…...

一、OpenCV的基本操作
目录 1、OpenCV的模块 2、OpenCV的基础操作 2.1图像的IO操作 2.2绘制几何图形 2.3获取并修改图像中的像素点 2.4 获取图像的属性 2.5图像通道的拆分与合并 2.6色彩空间的改变 3、OpenCV的算数操作 3.1图像的加法 3.2图像的混合 3.3总结 1、OpenCV的模块 2、OpenCV的基…...

裂缝仪在线监测装置:工程安全领域的“实时守卫者”
在基础设施运维领域,裂缝扩展是威胁建筑结构安全的核心隐患之一。传统人工巡检方式存在效率低、时效性差、数据主观性强等局限,而裂缝仪在线监测装置通过技术迭代,实现了对结构裂缝的自动化、持续性追踪,为工程安全评估提供科学依…...

【论文精读】2024 ECCV--MGLD-VSR现实世界视频超分辨率(RealWorld VSR)
文章目录 一、摘要二、问题三、Method3.1 Latent Diffusion Model3.2 Motion-guided Diffusion Sampling3.3 Temporal-aware Decoder Fine-tuning 四、实验设置4.1 训练阶段4.2 训练数据 贡献总结 论文全称: Motion-Guided Latent Diffusion for Temporally Consis…...

SpringBoot简单体验
1 Helloworld 打开:https://start.spring.io/ 选择maven配置。增加SpringWeb的依赖。 Generate之后解压,代码大致如下: hpDESKTOP-430500P:~/springboot2/demo$ tree ├── HELP.md ├── mvnw ├── mvnw.cmd ├── pom.xml └── s…...
【系统架构设计师】2025年上半年真题论文回忆版: 论系统负载均衡设计方法(包括解题思路和参考素材)
更多内容请见: 备考系统架构设计师-专栏介绍和目录 文章目录 真题题目(2025年上半年 试题3)解题思路论文素材参考1、静态负载均衡策略2、动态负载均衡策略3、基于场景的负载均衡真题题目(2025年上半年 试题3) 请围绕 “论系统负载均衡设计方法” 论题,依次从以下三个方面…...

2025年通用 Linux 服务器操作系统该如何选择?
2025年通用 Linux 服务器操作系统该如何选择? 服务器操作系统的选择对一个企业IT和云服务影响很大,主推的操作系统在后期更换的成本很高,而且也有很大的迁移风险,所以企业在选择服务器操作系统时要尤为重视。 之前最流行的服务器…...

Azure devops 系统之五-部署ASP.NET web app
今天介绍如何通过vscode 来创建一个asp.net web app,并部署到azure 上。 创建 ASP.NET Web 应用 在您的计算机上打开一个终端窗口并进入工作目录。使用 dotnet new webapp 命令创建一个新的 .NET Web 应用,然后将目录切换到新创建的应用。 dotnet new webapp -n MyFirstAzu…...
Hadoop是什么
注:本人不懂Hadoop是什么,问的大模型,让它用生动浅显的语言向我解释。为了防止忘记,我把它说的记录下来。接下来的解释都是大模型生成的,如果有错误的地方欢迎指正 。 Hadoop 是什么?(一句…...

学习路之PHP--easyswoole_panel安装使用
学习路之PHP--easyswoole_panel安装使用 一、新建文件夹二、安装三、改配置地址四、访问 IP:Port 自动进入index.html页面 一、新建文件夹 /www/wwwroot/easyswoole_panel 及配置ftp 解压easyswoole_panel源码 https://github.com/easyswoole-panel/easyswoole_panel 二、安…...
结合 AI 编程,让前端开发更简单:趋势、方法与实践
在 AI 迅猛发展的浪潮中,前端开发正在迎来范式转变。本文将深入探讨如何将 AI 编程能力嵌入前端工程体系中,重塑前端生产力工具链与开发方式。 一、前端开发的核心痛点 尽管前端框架(如 Vue、React)已经大大简化了 UI 构建&#…...

【拓扑排序】P6560 [SBCOI2020] 时光的流逝|普及+
本文涉及知识点 C图论 拓扑排序 P6560 [SBCOI2020] 时光的流逝 题目背景 时间一分一秒的过着,伴随着雪一同消融在了这个冬天, 或许,要是时光能停留在这一刻,该有多好啊。 … “这是…我在这个小镇的最后一个冬天了吧。” “嗯…...

SSRF 接收器
接收请求 IP.php <?php // 定义日志文件路径 $logFile hackip.txt;// 处理删除请求 if (isset($_POST[delete])) {$ipToDelete $_POST[ip];$lines file($logFile, FILE_IGNORE_NEW_LINES);$newLines array();foreach ($lines as $line) {$parts explode( | , $line);…...
【设计模式】责任链
【设计模式】责任链 在实际开发中,我们经常遇到这样的需求:某个请求需要经过多个处理者,但处理的顺序、方式可能会变化或扩展。这时候,责任链模式就能派上用场。 责任链模式(Chain of Responsibility) 是…...
unix/linux source 命令,其高级使用
就像在物理学中,掌握了基本定律后,我们可以开始研究更复杂的系统和现象,source 的高级用法也是建立在对其基本行为深刻理解之上的。 让我们一起探索 source 的高级应用领域: 1. 条件化加载 (Conditional Sourcing) 根据某些条件来决定是否 source 一个文件,或者 source…...
邮件验证码存储推荐方式
邮件验证码的存储方案需要兼顾 安全性、性能 和 可维护性,以下是详细分析和推荐方案: 1. 推荐方案:Redis(首选) 为什么选择 Redis? 优势说明高性能内存读写,毫秒级响应,适合高频验…...
Allegro 输出生产数据详解
说明 用于PCB裸板的生产可以分别单独创建文件 光绘数据(Gerber)、钻孔(NC Drill)、IPC网表;或者通过ODB++或IPC2581文件(这是一个新格式),它包含生产裸板所需要的所有信息 光绘数据 Artwork Gerber 光绘数据一般包含设计中各个层面的蚀刻线路、阻焊、铅锡、字符等信…...