5.0版本对模块功能做了灵活设计,默认采用多模块的架构,并且支持单一模块设计,所有模块的命名空间均以APP作为艮命名空间(可配置更改)
1、ThinkPHP运行流程(了解)
1.加载ThinkPHP.php
2.加载./thinkPHP/LIB/core路径下的核心文件
3.加载项目的文件->分析URL->调用相关的控制器
示例URL:http://localhost/index.php?m=index&a=index
m->module 模块 控制器
a->action 方法
2、ThinkPHP的配置方式
2.1、模块设计
- 项目目录application下的相关知识和操作讲解
- 1.common模块不能通过路由直接访问(切记)
- 2.common模块下放置的代码为整个项目公用的代码和方法
- 3.如何使用common模块中的代码和方法
- a.通过
use app\common\controller\index as commonIndex
,引入common模块中的index类到index模块下,new这个类就可以使用它的方法了 - b.引入方式同上,index模块下的index类通过extend继承common模块下的index类,达到使用common模块的方法
- a.通过
2.2、配置
ThinkPHP 给我们提供了两种改变配置的方式
1、通过Config函数
2、通过Config助手函数
2.2.1、定义整个框架系统的配置文件目录
- Thinkphp5.0 默认配置是参考thinkphp\convention.php
- 1.在public目录下,打开index.php,在代码中
define('CONF_PATH',__DIR__.'/../conf/');
- 2.tp5提供了一个获取框架配置参数(惯例配置)的助手函数 config(),这个函数返回的配置参数来源于thinkphp目录下的convention.php文件
- 在APP同级目录建立conf目录,用来存放配置文件
应用配置
所谓应用配置是只对当前应用生效
- 在conf目录下创建config.php
扩展配置
为什么要扩展配置:如果应用的所有配置都放在config.php文件中,配置项太多的时候,不利于管理;另外,方便配置惯例参数为数组类型的参数
2.如果实现扩展配置
a.在conf目录下建立extra目录(默认为扩展配置参数的目录),目录下所有文件的文件名即为惯例参数名总结:
在与application同级目录下有一个conf文件夹,该文件夹中存在一个config.php文件,该文件保存的是应用配置,config.php中返回的是一个配置数组,该数组会与tp的惯例配置数组进行array_merge(惯例配置指的是thinkphp文件夹下的convention文件中保存的所有配置),这样的设计可以保证我们在设计我们需要的配置的同时,也不会去更改tp原本的文件(更改文件可能会导致后期的维护以及升级出现问题)。
在conf文件夹下还存在一个extra文件夹,该文件夹中保存的PHP文件是我们的扩展配置,配置之间的修改都是通过array_merge来实现的。
其中优先级为扩展配置>应用配置>惯例配置。
场景配置
为什么需要场景配置:不同的开发环境可能有一些配置不同,如home环境和company环境,在环境的切换过程中不可能将不同的配置一一做更改
如何实现场景配置:
- a.tp5提供了一个惯例参数app_status,只需要改变它的值就能实现一键修改平滑的切换运行环境
- b.app_status惯例参数对应的值表示应用哪个运行环境配置文件,该文件的文件名即为该参数的值,文件中的配置参数即为目前所需环境的参数配置
实例
- 在conf下面创建config.php文件
- ‘app_status’ =>’home’,//场景配置, 办公环境场景切换
- 再创建 home.php office.php两个文件.分别配置
在config.php中添加:
'app_address' =>'home'
在home.php中添加:
'password' => 'home_pwd',
模块配置
之前的扩展配置和场景配置都是相对应用级别的,而模块配置是相对模块级别,作用域不同
- 实现的方式
- a.在conf目录下建立与app目录下模块名相同的目录,该目录下在创建config.php文件,那么这个文件中的配置参数只在访问对应的app模块的时候生效(优先级比conf/config.php要高)对应模块目录下也可以创建extra扩展配置)
动态配置
何为动态配置:其实可以理解为控制器级别及以下级别的配置
- 如何实现动态配置
- a.在某个控制器中的
__construct()
方法中使用config('name', 'david')
,那么在该控制器中所有的方法都可以通过config()函数获取到配置的参数值 - b.在某个控制器方法中使用上述操作,那么配置的参数值,仅在该方法中生效
- a.在某个控制器中的
Config()类和config函数
tp5的全局config()函数
1.实现的原理
a.config()函数的所有功能来源于thinkphp框架目录下library目录下的config.php类提供的方法b.通过thinkphp框架目录下的helper.php文件定义了一个全局的function config()方法,根据传参调用config.php类中不同的方法实现不同的功能
2.config()函数的使用
a.可以在项目任何地方调用
b.因为不能确保在helper.php文件定义全局function config()方法之前是否已经定义了,所以在项目中建议使用config.php中的类方法操作整个框架的配置参数
c.项目文件中通过
use think\config
引入类方法,因为是静态类,所以通过Config::get()
可以获取所有配置的参数
config()函数功能使用
- 1.设置一个配置参数:
config('user_name', 'david', 'index')
,设置的参数名为user_name,值为david,作用域为index - 2.获取一个配置参数:
config('user_name', 'index')
,获取的参数名为user_name,是从作用域为index中获取 - 3.判断配置参数是否存在:
config('?user_name')
,必须带上?,且放在参数名之前
- 1.设置一个配置参数:
环境变量的配置和使用
环境变量ENV的配置和使用
1.为什么需要ENV:因为环境不同,应用的参数也可能不同,那么就需要一个可以配置环境变量的文件,根据所处的环境配置相应的参数,利于对不同环境下工作的人员可通过同一文件,进行简单的参数配置,就可以在他需要的环境下正常运行
2.环境变量ENV配置和使用的实现
a.在app的同级目录下创建.env配置文件
b.文件中提供参数的配置:例如
status=dev
,表示开发环境;
[database]
host=local
user=root
password=123456
,
表示一组参数c.那么需要对conf目录下的配置文件,与环境变量相关的都从.env配置文件中获取值
d.获取的方法:通过引入命名空间
use think\Env
来获取huanjingbianlEnv::get(key,"default")
,第二个参数当key不存在时,返回默认环境变量值e.配置方式
以下内容选择的是ThinkPHP 5.0
[已完结]