yaconf,使用单独的一个配置目录(在yaconf.directory指定),不和代码在一起。
在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=605.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
2.1Linux的 Directory Description目录描述(总结)学生购买腾讯云服务器续费什么是adb进程_adb查看进程命令的图文步骤购买云虚拟服务器购买腾讯云便宜服务器多少钱网站空间购买哪个好AMD意外透露有三款新游戏主机将使用全新SoC:新Xbox?大数据杀熟行为10月1日起明令禁止,作为开发的你怎么看?