
在PHP启动的时候,处理所有的要处理的配置,然后这些配置就会常驻内存,随着PHP的生命周期存亡. 避免了每次请求的时候解析配置文件。
配置目录和代码分离以后,可以借助一个配置管理后台,来实现配置的统一化管理。
配置如果有变化, 它会reload,不需要重启(检测的频率由yaconf.check_delay控制)。
它支持丰富的配置类型,包括字符串,数组,分节,分节继承,并且还可以在配置中直接写PHP的常量和环境变量等。
为什么要用 yaconf ?
一般我们项目中是用PHP文件做配置的,一个config目录下可能有十几个甚至数十个.php配置文件,里面都是各种各样的array, 这就导致配置文件的解析耗费了很大的性能
一、单独使用
在目录 D:\phpStudy\Yaconf 下新增配置文件 redis.ini,内容如下
[base] parent="yaconf" children="NULL" [children:base] children="set"
重启服务器,新建 index.php 文件测试
<?php
$redis = \Yaconf::get('redis');
print_r($redis);
打印内容
$ php index.php
Hello WorldArray
(
[base] => Array
(
[parent] => yaconf
[children] => NULL
)
[children] => Array
(
[parent] => yaconf
[children] => set
)
)
二、框架集成使用(ThinkPHP5.1)
php.ini
[yaconf] yaconf.directory="/home/www/web/cl_new_pay_dev" yaconf.check_delay=60
5.1 版本默认支付yaconf
在项目更目录新建 thinkphp.ini 添加以下内容( cl_new_pay_dev 目录下)
name="yaconf"
year=2015
features[]="fast"
features.1="light"
features.plus="zero-copy"
features.constant=PHP_VERSION
features.env=${HOME}
由于默认Yaconf使用多个配置文件,建议在项目中使用setYaconf方法指定Yaconf使用的独立配置文件,例如
// 建议在应用的公共函数文件中进行设置 common.php
think\facade\Config::setYaconf('thinkphp');
(1)使用助手函数
var_dump(Config::yaconf('name'));
var_dump(Config::yaconf('year'));
var_dump(Config::yaconf('features')['plus']);
var_dump(Config::yaconf('features.plus'));
var_dump(Config::yaconf('features.constant'));
var_dump(Config::yaconf('features.env'));
打印结果
string(6) "yaconf" string(4) "2015" string(9) "zero-copy" string(9) "zero-copy" string(6) "7.2.12" string(0) ""
(2)不适用助手函数,直接访问
print_r("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
print_r(\Yaconf::get("cpay"));
print_r(\Yaconf::get("cpay.common"));
print_r(\Yaconf::get("cpay.database"));
print_r(\Yaconf::get("cpay.redis"));
print_r(\Yaconf::get("cpay.redis.host"));
打印结果
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Array
(
[common] => Array
(
[app_name] => 二万OCR
[app_host] => www.cnblogs.com
[app_debug] => 1
)
[database] => Array
(
[app_name] => 二万OCR
[app_host] => www.cnblogs.com
[app_debug] => 1
[hostname] => 127.0.0.1
[database] => cl_cpay
[username] => root
[password] => wang123456,
)
[redis] => Array
(
[app_name] => 点点支付
[app_host] => www.cnblogs.com
[app_debug] => 1
[host] => 192.168.1.1
[port] => 6379
[auth] => 123456
[prefix] => TII
)
)
Array
(
[app_name] => 二万OCR
[app_host] => www.cnblogs.com
[app_debug] => 1
)
Array
(
[app_name] => 二万OCR
[app_host] => www.cnblogs.com
[app_debug] => 1
[hostname] => 127.0.0.1
[database] => cl_cpay
[username] => root
[password] => wang123456,
)
Array
(
[app_name] => 二万OCR
[app_host] => www.cnblogs.com
[app_debug] => 1
[host] => 192.168.1.1
[port] => 6379
[auth] => 123456
[prefix] => TII
)
192.168.1.1
capy.ini 配置文件
[common] app_name = "二万OCR" app_host = "www.cnblogs.com" app_debug= true [database:common] hostname = "127.0.0.1" database = "cl_cpay" username = "root" password = "wang123456", [redis:common] host = "192.168.1.1" port = 6379 auth = 123456 prefix = "TII"


