本文共 2906 字,大约阅读时间需要 9 分钟。
这个是鸟哥开发的一个管理配置文件的php插件
地址:
介绍,直接哪来点用吧,反正自己体会就好了
项目地址代码已经提交到了Github: https://github.com/laruence/yaconf , 欢迎大家提交Issue简介首先说说, 这个是干啥的.1. 我见过很多的项目中, 用PHP文件做配置的, 一个config目录下可能有十几个甚至数十个.php配置文件, 里面都是各种各样的array, 还有甚者会把一些词典文件(比如中文/英文对照)也放到配置中去. 这就导致配置文件的解析耗费了很大的性能(诚然, 用了opcache能好点, 但是实际上还是有执行的过程).2. 除了PHP的, 还有用json的, yaml的, 一个共同的特点就是这些配置的可读性比较差. 另外, 他们也都要runtime解析.3. config目录往往和代码在一起, 首先会有安全隐患(配置中往往有敏感信息), 其次如果配置和代码属于一个项目, 这就会导致配置的修改也要走代码上线的流程.4. 一些资源配置文件, 比如mysql/memcache的配置信息, 这些内容本来是应该对开发透明的, 运维直接负责即可. 但是放到了代码中就会导致, 运维如果要发起一些变更, 也要开发配合修改配置文件上线.所以, Yaconf就是为了解决这些问题而生的一个工具.1. 它使用单独的一个配置目录(在yaconf.directory指定), 不和代码在一起.2. 它在PHP启动的时候, 处理所有的要处理的配置, 然后这些配置就会常驻内存, 随着PHP的生命周期存亡. 避免了每次请求的时候解析配置文件.3. 所有的配置内容都是immutable的, 这就可以借助于Fork的COW, 降低内存占用, 并且在访问配置的时候, 几乎不需要任何的内存Copy, 也不会有无谓的引用计数增减4. 最重要的, 配置目录和代码分离以后, 可以借助一个配置管理后台, 来实现配置的统一化管理.5. 它支持(对于非ZTS)配置变更重新加载, 也就是说配置如果有变化(建议更改配置一定使用mv, 不要使用cp), 它会reload, 不需要重启(检测的频率由yaconf.check_delay控制).6. 它支持丰富的配置类型, 包括字符串, 数组, 分节, 分节继承, 并且还可以在配置中直接写PHP的常量和环境变量等.7. 最重要的是, 它很简单.
我就说下安装过程吧:
好吧,人家说的挺清楚的,推荐使用
安装在Linux中编译YaconfYaconf是PECL扩展,因此您可以通过以下方式简单地安装它:$pecl install yaconf或者您可以自己编译:$ /path/to/php7/bin/phpize$ ./configure --with-php-config=/path/to/php7/bin/php-config$ make && make install运行时配置yaconf.directory Path to directory which all ini configuration files are placed inyaconf.check_delay In which interval Yaconf will detect ini file's change(by directory's mtime), if it is set to zero, you have to restart php to reloading configurations.蜜蜂混合Yaconf :: get(字符串$ name,mixed $ default = NULL)bool Yaconf :: has(string $ name)例目录假设我们将所有配置文件放在/ tmp / yaconf /中,因此我们将其添加到php.ini中yaconf.directory=/tmp/yaconfINI文件假设/ tmp / yaconf中有两个文件foo.ininame = “ yaconf ” year = 2015features [] = “ fast ” features.1 = “ light ” features.plus = “ zero-copy ” features.constant = PHP_VERSION features.env = $ {HOME}和bar.ini[base] parent = “ yaconf ” children = “ NULL ”[孩子:基地] 孩子 = “集”跑让我们访问配置foo.iniPHP7 - [R '的var_dump(Yaconf ::获得( “富”)); ' / * array(3){ [“name”] => string(6)“yaconf” [“year”] => string(4)“2015” [“features”] => array(5){ [0 ] => string(4)“fast” [1] => string(5)“light” [“plus”] => string(9)“zero-copy” [“constant”] => string(9)“ 7.0.0-dev“ [”env“] => string(16)”/ home / huixinchen“ } } * /如您所见,Yaconf支持字符串,映射(数组),ini,env变量和PHP常量。您还可以访问以下配置:PHP7 - [R '的var_dump(Yaconf ::获得( “foo.name”)); ' // string(6)“yaconf”PHP7 - [R '的var_dump(Yaconf ::获得( “foo.features.1”)); ' // string(5)“light”PHP7 - [R '的var_dump(Yaconf ::获得( “foo.features”) “加”]); ' // string(9)“零拷贝”bar.ini现在让我们看看继承的部分和部分:PHP7 - [R '的var_dump(Yaconf ::获得( “酒吧”)); ' / * array(2){ [“base”] => array(2){ [“parent”] => string(6)“yaconf” [“children”] => string(4)“NULL” } [ “children”] => array(2){ [“parent”] => string(6)“yaconf” [“children”] => string(3)“set” } } * /子部分在基本部分中继承了值,子部分能够覆盖他们想要的值。
转载地址:http://mqtnn.baihongyu.com/