PHP系列之Thinkphp(理论及简单配置篇)

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模块的方法

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.在某个控制器方法中使用上述操作,那么配置的参数值,仅在该方法中生效

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'),必须带上?,且放在参数名之前

环境变量的配置和使用

  • 环境变量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 来获取huanjingbianl Env::get(key,"default"),第二个参数当key不存在时,返回默认环境变量值

      e.配置方式

    这里写图片描述

以下内容选择的是ThinkPHP 5.0
[已完结]

猜你喜欢

转载自blog.csdn.net/qq_33261700/article/details/78976052
今日推荐