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

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

相关文章:

  • Executors面试题
  • 利用Flask来实现留言板的基本操作
  • 异步上传石墨文件进度条前端展示记录(采用Redis中List数据结构实现)
  • mongodb删除字段
  • 油猴脚本开发基础
  • 【科研绘图系列】R语言绘制森林图(forest plot)
  • Go语言中flag包的用法详解
  • 德国GEMÜ 3020特价型号3020 25D 7 1 4P002 3600
  • 一文讲清:卫星电话与普通电话有什么不同?
  • 云计算服务模式全解析:IaaS、PaaS、SaaS及其扩展
  • 文件系统与文件管理:从磁盘到内核的全链路解析
  • JVM——SubstrateVM:AOT编译框架
  • 国产化Word处理控件Spire.Doc教程:通过Java简单快速的将 HTML 转换为 PDF
  • UE5打包项目设置Project Settings(打包widows exe安装包)
  • 代理IP在云计算中的应用:技术演进与场景实践
  • 相量法正弦稳态电路的分析(面向题目)
  • SmolVLM2: The Smollest Video Model Ever(七)
  • C++创建对象过程
  • 什么是单片机?
  • k8s中kubeSphere的安装使用+阿里云私有镜像仓库配置完整步骤
  • 成都大型网站建设公司/爱站网备案查询
  • 小程序注册页面/附子seo
  • 做游戏试玩网站/小广告设计
  • 深圳做手机网站设计/北京seo网站优化培训
  • 专门做外包的网站/沈阳全网推广公司哪家好
  • 宁波网站建设定制开发/查排名