💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、豆包、星火、月之暗面及文生图、文生视频 广告
# Yaconf(核心) Yaconf是一个高效的PHP配置容器,它在PHP启动的时候把格式为INI的配置文件解析后存储在PHP的常驻内存中,不需要每次请求的时候都来分析配置文件,并在获取配置项的时候“ zero-copy” Yaconf需要PHP 7.0或更高版本 - [预定义常量](https://www.php.net/manual/zh/yaconf.constants.php) - [Yaconf](https://www.php.net/manual/zh/class.yaconf.php)—Yaconf类 - [Yaconf::get](https://www.php.net/manual/zh/yaconf.get.php)—检索项 - [Yaconf::has](https://www.php.net/manual/zh/yaconf.has.php)— 确定一个项目是否存在 **为什么要用 yaconf ?** 一般我们项目中是用PHP文件做配置的, 一个config目录下可能有十几个甚至数十个.php配置文件, 里面都是各种各样的array, 这就导致配置文件的解析耗费了很大的性能 扩展下载地址:<http://pecl.php.net/package/yaconf> 修改php.ini 配置文件,添加以下扩展 ``` <pre class="calibre10">``` extension<span class="token1">=</span>php_yaconf<span class="token3">.</span>dll  <span class="token3">;</span>配置yaconf <span class="token3">[</span>yaconf<span class="token3">]</span> <span class="token3">;</span>配置文件的目录位置 yaconf<span class="token3">.</span>directory<span class="token1">=</span><span class="token2">"D:\phpStudy\Yaconf"</span> <span class="token3">;</span>配置文件的更新时间 yaconf<span class="token3">.</span>check_delay<span class="token1">=</span><span class="token6">60</span> ``` ``` linux安装 ``` <pre class="calibre10">``` $pecl install yaconf ``` ``` 或者 ``` <pre class="calibre10">``` git clone https<span class="token3">:</span><span class="token1">/</span><span class="token1">/</span>github<span class="token3">.</span>com<span class="token1">/</span>laruence<span class="token1">/</span>yaconf<span class="token3">.</span>git cd yaconf<span class="token1">/</span> phpize <span class="token3">.</span><span class="token1">/</span>configure <span class="token1">--</span>with<span class="token1">-</span>php<span class="token1">-</span>config<span class="token1">=</span><span class="token1">/</span>usr<span class="token1">/</span>local<span class="token1">/</span>php<span class="token1">-</span><span class="token6">7.2</span><span class="token1">/</span>bin<span class="token1">/</span>php<span class="token1">-</span>config sudo vim <span class="token1">/</span>usr<span class="token1">/</span>local<span class="token1">/</span>php<span class="token1">-</span><span class="token6">7.2</span><span class="token1">/</span>etc<span class="token1">/</span>php<span class="token3">.</span>ini ## 添加 extension<span class="token1">=</span>yaconf<span class="token3">.</span>so sudo systemctl restart php<span class="token1">-</span>fpm<span class="token3">.</span>service ``` ``` ## **使用** 在目录 **D:\\phpStudy\\Yaconf**(由yaconf.directory配置) 下新增配置文件 **redis.ini**,内容如下 ``` <pre class="calibre10">``` <span class="token3">[</span>base<span class="token3">]</span> parent<span class="token1">=</span><span class="token2">"yaconf"</span> children<span class="token1">=</span><span class="token2">"NULL"</span> <span class="token3">[</span>children<span class="token3">:</span>base<span class="token3">]</span> children<span class="token1">=</span><span class="token2">"set"</span> ``` ``` 获取配置信息 重启服务器,新建 index.php 文件测试 ``` <pre class="calibre10">``` <span class="token1"><</span><span class="token1">?</span>php $redis <span class="token1">=</span> \Yaconf<span class="token3">:</span><span class="token3">:</span><span class="token4">get</span><span class="token3">(</span><span class="token2">'redis'</span><span class="token3">)</span><span class="token3">;</span><span class="token">//参数是文件名</span> <span class="token4">print_r</span><span class="token3">(</span>$redis<span class="token3">)</span><span class="token3">;</span>    ``` ``` 结果: ``` <pre class="calibre17">``` <span class="token4">Array</span><span class="token3">(</span> <span class="token3">[</span>base<span class="token3">]</span> <span class="token1">=</span><span class="token1">></span> <span class="token4">Array</span><span class="token3">(</span> <span class="token3">[</span>parent<span class="token3">]</span> <span class="token1">=</span><span class="token1">></span> yaconf <span class="token3">[</span>children<span class="token3">]</span> <span class="token1">=</span><span class="token1">></span> NULL <span class="token3">)</span> <span class="token3">[</span>children<span class="token3">]</span> <span class="token1">=</span><span class="token1">></span> <span class="token4">Array</span><span class="token3">(</span> <span class="token3">[</span>parent<span class="token3">]</span> <span class="token1">=</span><span class="token1">></span> yaconf <span class="token3">[</span>children<span class="token3">]</span> <span class="token1">=</span><span class="token1">></span> set <span class="token3">)</span> <span class="token3">)</span> ``` ```