Php微架构,示例讲解 · cao.php微框架v1.0文档 · 看云

本文介绍了如何在应用程序中动态设置和获取配置,包括通过继承框架类或者使用配置辅助函数的方式来修改配置,如数据库连接信息。同时,讲解了如何合并配置,处理多维数组配置以及使用闭包函数来处理配置值。还提到了配置信息中常量的获取限制以及检测配置项是否存在。
摘要由CSDN通过智能技术生成

#### 更新配置

项目运行中我们会临时更改一个配置项的需求,比如临时更改数据库配置等,这时可以使用以下方式完成。如下:

~~~

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”

});

~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值