#### 更新配置
项目运行中我们会临时更改一个配置项的需求,比如临时更改数据库配置等,这时可以使用以下方式完成。如下:
~~~
namespace application;
use framework\cao;
class test extends cao {
public function set_config(){
//设置"db"的值
parent::config('db', array(
'type'=> 'mysql', //数据库类型
'host'=> '127.0.0.1', //主机
'user'=> 'user',//数据库账号,用户名
'pass'=> 'pass', //密码
'base'=> 'base', //数据库名
'port'=> 'port', //端口
'charset'=> 'utf8', //设置访问数据库的字符集
'prefix'=> 'prefix', //表前缀
));
}
}
?>
~~~
* 如果 config('db') 已经存在,并且值是一个数组。后面设置的值也是数组的时候,那么旧数组单元将会被新值单元进行覆盖合并。
* 如果 config('db') 已存在的值不是数组,那么则直接赋值为新值。
如果没有继承cao框架类,也可以使用配置辅助函数。如下:
~~~
namespace application;
class test {
public function set_config(){
//配置辅助函数,设置配置
config('test', true);
}
}
?>
~~~
* 如果 config('test') 不存在,那么配置信息将被添加。
在设置配置的时候,一定要注意有个特殊配置键名称,是不能被设置和单独获取的(在获取所有配置信息的时候会被附带)。如下:
~~~
//这个是不能被设置,返回的是NULL
config("get_defined_constants(true)['user']", true) ;
~~~
有时候需要对整个配置进行合并,如下:
~~~
$config = array(//......);
config($config);
~~~
* * * * *
#### 获取配置
在 config() 方法或函数中,传入一个参数,并且是配置项的键名称,即获得该配置的值。如下:
~~~
//继承框架类的配置方法的方式
parent::config('test');
//赋值配置函数的方式
config('test');
~~~
* * * * *
#### 获取所有配置
不带参数,则是获取全部配置信息。返回的是一个数组,如下:
~~~
//继承框架类的配置方法的方式
parent::config();
//赋值配置函数的方式
config();
~~~
在全部配置的信息中,会附带常量信息。如下:
~~~
[get_defined_constants(true)['user']] => Array
(
[RUNTIME_START] => 1520203411.3236
[FRAMEWORK_ACCESS] => 1
[FRAMEWORK_FILE_NAME] => cao.php
[FRAMEWORK_FOLDER_NAME] => framework
[FRAMEWORK_PATH] => C:\WWW\website\framework
[LOCALHOST_FILE_NAME] => index.php
[LOCALHOST_FOLDER_NAME] => localhost
[LOCALHOST_PATH] => C:\WWW\website\localhost
[ROOT_PATH] => C:\WWW\website
[CACHE_PATH] => C:\WWW\website\cache
[SUBDIRECTORY_LINK] =>
[HTTP_REFERER] =>
[HTTP_HOST] => cao.php.com
[HTTP_IP] => 127.0.0.1
[FRAMEWORK_VERSION] => cao.php 0.0.1
)
~~~
注意了,下面是无法获取常量信息:
~~~
config("get_defined_constants(true)['user']"); //返回的是NULL
config("get_defined_constants(true)['user']", true); //设置无效,获取返回的仍然是NULL
~~~
检测一个配置信息是否存在。如下:
~~~
//配置不存在,返回的是NULL
if( config("test") === NULL ){
//不存在的时候执行
}
~~~
---
#### 设置多维数组配置的方式
有些时候,我们要对配置中某一项进行修改,然后这一项却是多维数组的某一个单元。操作方式是先获取全部配置,然后进行合并。如下修改数据库配置的某一项:
```
//先获取数据库的配置
$config = config('db');
//再修改某一项
$config['base'] = '测试数据库';
//然后更新设置
config('db', $config);
```
* * * * *
#### 闭包函数
闭包函数的用法,其参数即是配置返回的值。如下:
~~~
config("test", function($c){
//这里的$c 就是 config("test")返回的值
/**
在闭包函数中:
如果 return 为NULL 那么整个最终返回的仍然是config("test")的返回值
如果 return 一个非NULL的值,那么整个最终返回的是该返回值。
**/
return 123;//整个最终返回值“123”
});
~~~