首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
内容概述
ThinkPHP的配置系统
ThinkPHP的路由概述
路由条件与路由地址
Restful路由与路由分组
控制器全解
数据库操作层全解
模型层全解
视图层全解
数据验证器
缓存系统
Session和Cookie
命令行应用
开发调试
服务器部署
数据库设计
项目1:多人博客系统开发
1.1项目目的
1.2需求分析
1.3功能分析
1.4数据库设计
1.5模块设计
1.6效果展示
1.7代码示例
1.8接入统计系统
1.9项目总结
1.10项目完整代码
项目2:图书管理系统开发
2.1项目目的
2.2MVC+Repository+Service介绍
2.3需求分析
2.4功能分析
2.5模块设计
2.6数据库设计
2.7核心业务流程
2.8效果展示
2.9项目总结
2.10项目完整代码
项目3:论坛系统开发
3.1项目目的
3.2需求分析
3.3功能分析
3.4模块设计
3.5数据库设计
3.6效果展示
3.7项目总结
3.8项目完整代码
项目4:微信小程序商城
4.1项目目的
4.2需求分析
4.3功能分析
4.4模块设计
4.5数据库设计
4.6效果展示
4.7项目总结
4.8项目完整代码
当前位置:
首页>>
技术小册>>
ThinkPHP项目开发实战
小册名称:ThinkPHP项目开发实战
目前大部分框架的习惯都是“配置大于编码”,ThinkPHP 5也不例外。配置优先的方式可以让我们只修改配置部分,不需要修改程序源代码,有效减少了程序出错的可能。 ThinkPHP 5默认使用PHP数组方式定义配置,支持惯例配置、公共配置、模块配置、扩展配置、场景配置、环境变量配置和动态配置。 ThinkPHP 5的配置非常灵活,举一个简单的例子:假设你在家里、公司两个不同的地点开发同一个项目,通过配置app_status,系统就会自动加载不同环境下的配置文件,实现“无缝开发”。 怎么样?是不是很期待呢?那就跟我一起来学习一下ThinkPHP 5的配置吧! ## 配置的路径 ThinkPHP 5默认配置目录为application目录,该目录(不包括子目录)下的文件为全局配置,整个程序都可以访问到。如果是模块(如index模块)下的配置,就只对该模块生效。 如果需要将application/config.php的配置按照组件拆分(如拆分为数据库配置、缓存配置等)为多个文件,那么请放在application/extra目录下,文件名为键名,文件直接返回数组即可。 将配置文件拆分有利于规范项目文件结构,尽量做到单一职责,一个配置文件只负责一个组件/功能。 ## 配置的格式 ThinkPHP 5默认的格式为PHP数组,这也是ThinkPHP 3的做法,不过需要注意的是ThinkPHP 5推荐数组键名使用小写,而ThinkPHP 3的键名是大写。键值支持PHP所有数据类型,包括简单类型(字符串、数字、布尔值等)以及嵌套数组等。 ## 配置的加载顺序 ThinkPHP 5配置加载顺序如下: (1)框架配置(框架自带的默认配置)。 (2)全局配置(application/config.php)。 (3)扩展配置(application/extra目录下的配置文件)。 (4)场景配置(上文提到的app_status常量,如定义app_status为company,框架就会加载application/company.php配置)。 (5)模块配置(application/模块名/config.php,支持app_status常量,如第4点的app_status则会加载application/模块名/company.php配置)。 (6)动态配置(使用Config类进行操作)。 可以看到优先级是从上到下越来越低,希望读者能记住配置的加载顺序,这个顺序在开发中会带来很大的方便。 ## 配置的读写示例 使用配置的最终目的是方便开发,也就是在合适的时候需要读写配置,比如实例化数据库的时候需要读取database配置。ThinkPHP通过Config::get和Config::set读写配置。 下面我们来看配置的一个示例,这个示例将完成以下内容的验证: - 惯例配置的加载 - 全局配置的加载 - 扩展配置的加载 - 场景配置的加载 - 模块配置的加载 - 动态配置的加载与读写 步骤说明如下: (1)解压缩ThinkPHP 5核心版。 (2)运行PHP服务器 (3)编辑application/index/controller/Index.php: ```php <?php namespace app\index\controller; use think\Config; class Index { public function index() { echo '<pre>'; echo json_encode(Config::get(), JSON_PRETTY_PRINT); echo '</pre>'; } } ``` (4)访问http://localhost:8080 ,可以看到输出了一段JSON,这就是ThinkPHP的默认配置(惯例配置)。 (5)新建application/extra/amqp.php文件(如果extra目录不存在,就手动创建)。 ```php <?php //消息队列配置 return [ 'conn' => 'amqp://root:root@localhost:5672', ]; ``` (6)刷新页面,可以看到有刚才配置的amqp配置。 (7)将application/config.php的app_status更改为home。 (8)添加application/home.php。 ```php <?php return [ 'amqp' => [ 'conn' => 'I am here', ], ]; ``` (9)刷新页面,可以看到amqp的输出已经变成home.php中定义的内容。 (10)添加application/index/config.php。 ```php <?php return [ 'amqp' => [ 'conn' => 'I am index module amqp', ], ]; ``` (11)刷新页面,发现amqp又发生了变化,与上面定义的文件一致。 (12)添加application/index/home.php。 ```php <?php return [ 'amqp' => [ 'conn' => 'I am index module home config', ], ]; ``` (13)继续刷新页面,发现amqp又发生了变化,与上面定义的文件一致。 (14)编辑application/index/controller/Index.php,添加rw方法测试配置的读写。 ```php public function rw() { var_dump(Config::get('test')); Config::set('test', 'aaaa'); var_dump(Config::get('test')); } ``` (15)访问http://localhost:8080/index/index/rw ,可以看到如下输出: ```php NULL string(3) "aaaa" ```
上一篇:
内容概述
下一篇:
ThinkPHP的路由概述
该分类下的相关小册推荐:
PHP8入门与项目实战(6)
Yii2框架从入门到精通(上)
PHP8入门与项目实战(7)
Magento中文全栈二次开发
PHP合辑5-SPL标准库
PHP8入门与项目实战(8)
Laravel(10.x)从入门到精通(十)
Laravel(10.x)从入门到精通(十一)
Workerman高性能Web框架-Webman
全面掌握Magento2-从配置到优化
Laravel(10.x)从入门到精通(三)
经典设计模式PHP版