ThinkPHP5.0学习-框架配置

ThinkPHP5.0学习-框架配置_第1张图片

示例:

默认配置文件在application/config.php

惯例配置文件在thinkphp/convention.php

在index目录下新建config.php

使用dump(\think\Config::get());输出所有配置项

自定义配置

在public/index.php中定义配置目录


// +----------------------------------------------------------------------

// [ 应用入口文件 ]

// 定义应用目录
define('APP_PATH', __DIR__ . '/../application/');
// 定义配置目录
define('CONF_PATH', __DIR__ . '/../config/');
// 加载框架引导文件
require __DIR__ . '/../thinkphp/start.php';

 

在项目中新建config文件夹(与application同级),在此文件夹下新建文件config.php

true,
    'aite_name'=>'php学习',
];

更改现有配置项和新增自定义配置项


在config文件夹下新建index文件夹,在此文件夹下新建config.php与index模块绑定

 

扩展配置目录

在config文件夹下新建extra文件夹,在此文件夹下新建my_base.php文件

'wybing',
    'my_age'=>28,
    'my_sex'=>'男',
];

也可以在index模块下新建extra文件夹,在此文件夹下新建config.php文件

'wybing.com',
];

ThinkPHP5.0学习-框架配置_第2张图片

array(69) {
  ["app_host"] => string(0) ""
  ["app_debug"] => bool(false)
  ["app_trace"] => bool(true)
  ["app_status"] => string(0) ""
  ["app_multi_module"] => bool(true)
  ["auto_bind_module"] => bool(false)
  ["root_namespace"] => array(0) {
  }
  ["extra_file_list"] => array(1) {
    [0] => string(56) "D:\myphp_www\PHPTutorial\WWW\phpTest\thinkphp\helper.php"
  }
  ["default_return_type"] => string(4) "html"
  ["default_ajax_return"] => string(4) "json"
  ["default_jsonp_handler"] => string(11) "jsonpReturn"
  ["var_jsonp_handler"] => string(8) "callback"
  ["default_timezone"] => string(3) "PRC"
  ["lang_switch_on"] => bool(false)
  ["default_filter"] => string(0) ""
  ["default_lang"] => string(5) "zh-cn"
  ["class_suffix"] => bool(false)
  ["controller_suffix"] => bool(false)
  ["default_module"] => string(5) "index"
  ["deny_module_list"] => array(1) {
    [0] => string(6) "common"
  }
  ["default_controller"] => string(5) "Index"
  ["default_action"] => string(5) "index"
  ["default_validate"] => string(0) ""
  ["empty_controller"] => string(5) "Error"
  ["use_action_prefix"] => bool(false)
  ["action_suffix"] => string(0) ""
  ["controller_auto_search"] => bool(false)
  ["var_pathinfo"] => string(1) "s"
  ["pathinfo_fetch"] => array(3) {
    [0] => string(14) "ORIG_PATH_INFO"
    [1] => string(18) "REDIRECT_PATH_INFO"
    [2] => string(12) "REDIRECT_URL"
  }
  ["pathinfo_depr"] => string(1) "/"
  ["https_agent_name"] => string(0) ""
  ["url_html_suffix"] => string(4) "html"
  ["url_common_param"] => bool(false)
  ["url_param_type"] => int(0)
  ["url_route_on"] => bool(true)
  ["route_config_file"] => array(1) {
    [0] => string(5) "route"
  }
  ["route_complete_match"] => bool(false)
  ["url_route_must"] => bool(false)
  ["url_domain_deploy"] => bool(false)
  ["url_domain_root"] => string(0) ""
  ["url_convert"] => bool(true)
  ["url_controller_layer"] => string(10) "controller"
  ["var_method"] => string(7) "_method"
  ["var_ajax"] => string(5) "_ajax"
  ["var_pjax"] => string(5) "_pjax"
  ["request_cache"] => bool(false)
  ["request_cache_expire"] => NULL
  ["request_cache_except"] => array(0) {
  }
  ["template"] => array(10) {
    ["auto_rule"] => int(1)
    ["type"] => string(5) "Think"
    ["view_base"] => string(0) ""
    ["view_path"] => string(0) ""
    ["view_suffix"] => string(4) "html"
    ["view_depr"] => string(1) "\"
    ["tpl_begin"] => string(1) "{"
    ["tpl_end"] => string(1) "}"
    ["taglib_begin"] => string(1) "{"
    ["taglib_end"] => string(1) "}"
  }
  ["view_replace_str"] => array(0) {
  }
  ["dispatch_success_tmpl"] => string(67) "D:\myphp_www\PHPTutorial\WWW\phpTest\thinkphp\tpl\dispatch_jump.tpl"
  ["dispatch_error_tmpl"] => string(67) "D:\myphp_www\PHPTutorial\WWW\phpTest\thinkphp\tpl\dispatch_jump.tpl"
  ["exception_tmpl"] => string(69) "D:\myphp_www\PHPTutorial\WWW\phpTest\thinkphp\tpl\think_exception.tpl"
  ["error_message"] => string(33) "椤甸潰閿欒锛佽绋嶅悗鍐嶈瘯锝�"
  ["show_error_msg"] => bool(false)
  ["exception_handle"] => string(0) ""
  ["record_trace"] => bool(false)
  ["log"] => array(3) {
    ["type"] => string(4) "File"
    ["path"] => string(49) "D:\myphp_www\PHPTutorial\WWW\phpTest\runtime\log\"
    ["level"] => array(0) {
    }
  }
  ["trace"] => array(1) {
    ["type"] => string(4) "Html"
  }
  ["cache"] => array(4) {
    ["type"] => string(4) "File"
    ["path"] => string(51) "D:\myphp_www\PHPTutorial\WWW\phpTest\runtime\cache\"
    ["prefix"] => string(0) ""
    ["expire"] => int(0)
  }
  ["session"] => array(7) {
    ["id"] => string(0) ""
    ["var_session_id"] => string(0) ""
    ["prefix"] => string(5) "think"
    ["type"] => string(0) ""
    ["auto_start"] => bool(true)
    ["httponly"] => bool(true)
    ["secure"] => bool(false)
  }
  ["cookie"] => array(7) {
    ["prefix"] => string(0) ""
    ["expire"] => int(0)
    ["path"] => string(1) "/"
    ["domain"] => string(0) ""
    ["secure"] => bool(false)
    ["httponly"] => string(0) ""
    ["setcookie"] => bool(true)
  }
  ["database"] => array(20) {
    ["type"] => string(5) "mysql"
    ["dsn"] => string(0) ""
    ["hostname"] => string(9) "127.0.0.1"
    ["database"] => string(0) ""
    ["username"] => string(4) "root"
    ["password"] => string(0) ""
    ["hostport"] => string(0) ""
    ["params"] => array(0) {
    }
    ["charset"] => string(4) "utf8"
    ["prefix"] => string(0) ""
    ["debug"] => bool(false)
    ["deploy"] => int(0)
    ["rw_separate"] => bool(false)
    ["master_num"] => int(1)
    ["slave_no"] => string(0) ""
    ["fields_strict"] => bool(true)
    ["resultset_type"] => string(5) "array"
    ["auto_timestamp"] => bool(false)
    ["datetime_format"] => string(11) "Y-m-d H:i:s"
    ["sql_explain"] => bool(false)
  }
  ["paginate"] => array(3) {
    ["type"] => string(9) "bootstrap"
    ["var_page"] => string(4) "page"
    ["list_rows"] => int(15)
  }
  ["console"] => array(3) {
    ["name"] => string(13) "Think Console"
    ["version"] => string(3) "0.1"
    ["user"] => NULL
  }
  ["aite_name"] => string(9) "php瀛︿範"
  ["my_base"] => array(3) {
    ["my_name"] => string(6) "wybing"
    ["my_age"] => int(28)
    ["my_sex"] => string(3) "鐢�"
  }
  ["my_name"] => string(6) "wybing"
  ["test"] => array(1) {
    ["site_name"] => string(10) "wybing.com"
  }
}

配置文件格式

Array数组键值对——默认格式

ini名值对——入口文件:defina('CONF_EXT','.ini')

xml标签对——入口文件:defina('CONF_EXT','.xml')

json对象属性名值对——入口文件:defina('CONF_EXT','.json')


ini名值对

在public/index.php文件中定义文件配置类型


// +----------------------------------------------------------------------

// [ 应用入口文件 ]

// 定义应用目录
define('APP_PATH', __DIR__ . '/../application/');
// 定义配置目录
define('CONF_PATH', __DIR__ . '/../config/');
//定义配置文件类型
define('CONF_EXT','.ini');
// 加载框架引导文件
require __DIR__ . '/../thinkphp/start.php';

在config文件夹下新建config.ini配置文件

my_name=peter ;这是注释
my_salary=4000

在public/index.php文件中定义文件配置类型,把ini改为xml,新增config.xml


    
        湖南省
        程序员
    

在public/index.php文件中定义文件配置类型,把ini改为json,新增config.json

{
  "my_name":"wybing",
  "my_age":22,
  "my_sex":"男"
}

ThinkPHP5.0学习-框架配置_第3张图片

最多用的是数组。

场景配置

1.必要性:

在不同的环境下,使用不同的配置项。例如在家中和公司中,使用的数据库有可能是不一样的,那么就可以为这两个不同的环境创建不同的数据库连接配置。

2.实现步骤

1.修改应用或模块配置文件中的:'app_status',将值设置为场景名称,如:Home

2.在与该配置文件同级的目录下,创建与场景名称同名的配置文件,如:home.php

3.再次执行,将会自动根据场景配置文件(home.php),更新当前应用的配置文件。

在Config/config.php下设置

'app_status'=>'home',

在Config文件夹下新建home.php文件

 'mysql',
    // 服务器地址
    'hostname'        => '127.0.0.1',
    // 数据库名
    'database'        => 'wybing',
    // 用户名
    'username'        => 'root',
    // 密码
    'password'        => 'root',
    // 端口
    'hostport'        => '',
    // 连接dsn
    'dsn'             => '',
    // 数据库连接参数
    'params'          => [],
    // 数据库编码默认采用utf8
    'charset'         => 'utf8',
    // 数据库表前缀
    'prefix'          => '',
    // 数据库调试模式
    'debug'           => true,
    // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
    'deploy'          => 0,
    // 数据库读写是否分离 主从式有效
    'rw_separate'     => false,
    // 读写分离后 主服务器数量
    'master_num'      => 1,
    // 指定从服务器序号
    'slave_no'        => '',
    // 自动读取主库数据
    'read_master'     => false,
    // 是否严格检查字段是否存在
    'fields_strict'   => true,
    // 数据集返回类型
    'resultset_type'  => 'array',
    // 自动写入时间戳字段
    'auto_timestamp'  => false,
    // 时间字段取出后的默认时间格式
    'datetime_format' => 'Y-m-d H:i:s',
    // 是否需要进行SQL性能分析
];

也可以在index模块中设置,新增或修改app_status的值,把相应的文件放在index文件夹下。

模块配置

1.模块可以有自己的配置文件,独立配置文件和场景配置文件

2.模块配置的优先级高于应用配置,相同配置项会覆盖掉应用中的配置项

3.模块默认配置文件名是:Config.php

4.模块默认独立配置文件有两个:database.php,validate.php

5.模块场景配置文件名,根据'app_status'参数值确定

在public/index.php配置好定义配置目录后,在index模块下新建config.php文件,设置app_status为my_home,在index模块下新建my_home.php,配置相关参数就可以了。

ThinkPHP5.0学习-框架配置_第4张图片

为降低应用的复杂度,提高安全性,绝大多数情况下,模块配置用得并不多,但如果你有个性化需求时,使用模块设置会方便许多

加载其它位置的配置文件

1.如果配置文件是php文件

\think\Config::load(APP_PATH.'完整文件名');//使用绝对路径加载,默认返回数组

2.如果配置文件是其它格式:ini、xml、json等

\think\Config::parse(APP_PATH.'完整文件名','ini')//使用绝对路径加载,默认返回数组

注意:读取其他位置的配置文件,都是动态加载,需要在控制器中的方法中执行加载。

 

这里在config目录下新建newconf文件夹,在该文件夹下新建conf.php作为配置文件,通过

\think\Config::load(APP_PATH.'../config/newconf/conf.php');

加载配置文件。

在newconf文件夹下新建conf.ini作为配置文件,通过

\think\Config::parse(APP_PATH.'../config/newconf/conf.ini','ini');

加载配置文件。


正确读取配置项

一、读取配置项

1.类方法:Config::get('配置参数'),参数为空则是获取全部配置项

dump(\think\Config::get('app_debug'));

2.使用助手函数:config('配置参数'),参数说明与Config::get()完全一样

3.读取二级配置项,参数与值之间用.(点)进行连接

dump(\think\Config::get('app_debug.名字'));

二、判断某配置项是否存在?

1.类方法:Config::has('配置参数');//返回布尔值

dump(\think\Config::has('app_debug'));

2.助手函数:config('?配置参数');//返回布尔值

dump(Config('?app_debug'));

推荐使用类方法


动态设置

一、类方法:\think\Config.php

  1. 逐个配置:Config::set('配置参数','参数值');
  2. 批量配置:Config::set(数组);
  3. 二级配置:Config::set('配置参数',数组)

在index模块的index.php中编写

//批量配置
        $config=[
            'site_name'=>'wybing.com',
            'site_name'=>'wybing',
        ];
        Config::set($config);
 //二级配置
        Config::set('site_info',$config);

二、助手函数:config()

1.逐个配置:config('配置参数','参数值');

2.批量配置:config(数组);

3.二级配置:config('配置参数',数组);

        //逐个配置
       config('site_name','wybing.com');
        //批量配置
        $config=[
            'site_name'=>'wybing.com',
            'site_name'=>'wybing',
        ];
        config($config);
        //二级配置
        config('site_info',$config);

在控制器的方法中,动态设置配置项,可以临时改变某个配置项,优先级也是最高的。


独立配置(扩展配置)

一、独立配置文件

1.用户自定义的独立配置文件必须放在应用或模块下面的extra目录下面

2.默认独立配置文件database.php[数据库],validate.php[验证规则]既可以放在extra下面,也可放在与应用或模块同级的目录下面。如果放在extra目录下面,优先级大于放在应用或模块的同级目录下面

3.文件名就是配置项名称,文件返回一个数组。

惯例配置<应用配置<模块配置<动态配置


配置项的作用域

1.作用域与命名空间的概念有点类似,就是配置项的可见范围;

2.作用域的表现形式上与二维数组是一样的

3.切换作用域使用:Config::range('作用域');

4.可以将独立配置项归纳到作用域进行管理,也可动态设置。

        $config=[
            'site_address'=>'wybing.com',
            'site_name'=>'wybing',
        ];
        //批量设置,写入user作用域
        Config::set($config,'user');
        //输出全部配置项
        dump(Config::get());
        //用数组的方式来配置作用域中的值
        Config::set('user.site_name','hello');
        //查看设置的值
        dump(Config::get('user.site_name'));
        //切换作用域
        Config::range('_sys_');
        dump(Config::get());

 

你可能感兴趣的:(PHP)