[TOC]
## 插件配置
配置路径: /html/plugins/tphp/demo/config
#### 路由配置
- 插件路由配置路径:/html/plugins/tphp/demo/config/domains.php
- 所有插件中的 domains.php 文件会自动预先加载
- 在插件中设置路由比根目录 /config/domains.php 更加方便灵活
#### 数据库配置
- 插件数据库配置路径:/html/plugins/tphp/demo/config/database.php
- 会与 /config/database.php 文件配置合并
设置文件/html/plugins/tphp/demo/config/database.php内容如下
```
<?php
return [
"connections" => [
'plu_test' => [
'driver' => 'mysql',
'host' => '127.0.0.1',
'database' => 'plu_test',
'username' => 'root',
'password' => 'root',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
]
]
];
```
设置文件/html/plugins/tphp/demo/html/www/config/database/_init.php内容如下
```
<?php
return function () {
// 获取数据库配置
dump(config("database.connections"));
};
```
打开网址[http://plu.tphp.com/config/database](http://plu.tphp.com/config/database)获得如下效果![](/static/plugins/tphp/help/plugins/config/database.png)
#### 预加载配置
- 插件预加载配置路径 /html/plugins/tphp/demo/config/autoload.php
- 预加载会在TPHP最先执行,用于处理更底层的操作,比如修改一些Laravel的预处理
- 动态加载机制目录: /html/plugins/tphp/demo/src,该目录下的所有文件、命名空间都可以访问的
设置文件/html/plugins/tphp/demo/src/Plugins.php内容如下
```
<?php
namespace My\Web;
use Illuminate\Support\Facades\Blade;
class Plugins
{
/**
* 自定义 Blade 模板语句
* Language constructor.
*/
function __construct()
{
// 因为 Blade 有缓存,所以修改此文件后需清除 Blade 文件缓存才生效
// Blade缓存路径: /storage/framework/views
// 或者修改对应的Blade就会重新刷新缓存
Blade::directive('test', function ($str='') {
return "<?php echo 'Info: ' . $str; ?>";
});
}
}
```
设置文件/html/plugins/tphp/demo/src/Test.php内容如下
```
<?php
namespace My\Web;
class Test
{
public function test()
{
return "This is a Test.php";
}
}
```
设置文件/html/plugins/tphp/demo/config/autoload.php内容如下
```
<?php
return [
// 会执行文件__construct方法:/html/plugins/tphp/demo/src/Plugins.php
My\Web\Plugins::class
];
```
设置文件/html/plugins/tphp/demo/html/www/config/autoload/tpl.blade.php内容如下
```
@php
$test = new \My\Web\Test();
$testHtml = $test->test();
@endphp
<div>{{$testHtml~~</div>
<div>@test("Hello")</div>
```
打开网址[http://plu.tphp.com/config/autoload](http://plu.tphp.com/config/autoload)获得如下效果![](/static/plugins/tphp/help/plugins/config/autoload.png)
#### env配置
- 插件env配置路径 /html/plugins/tphp/demo/config/env.php
设置文件/html/plugins/tphp/demo/config/env.php内容如下
```
<?php
/**
* 优先级高于 .env
* 优先级低于 domains.php 的 env 配置
* 优先级低于 data.php 的 env 配置
*/
return [
"MY_DATA=My Data",
"MY_SET" => "My Set"
];
```
设置文件/html/plugins/tphp/demo/html/www/config/env/_init.php内容如下
```
<?php
return function () {
dump(env("MY_DATA"));
dump(env("MY_SET"));
};
```
打开网址[http://plu.tphp.com/config/env](http://plu.tphp.com/config/env)获得如下效果![](/static/plugins/tphp/help/plugins/config/env.png)
## 获取插件配置值
设置文件/html/plugins/tphp/demo/html/www/config/value/_init.php内容如下
```
<?php
return function () {
// 获取Laravel全部配置
dump(config());
// 设置插件配置(和Laravel一样)
$this->plu->config(['test' => [
"hello" => "TPHP"
]]);
// 获取当前插件内所有配置
dump($this->plu->config());
};
```
设置文件/html/plugins/tphp/demo/html/www/config/value/tpl.blade.php内容如下
```
@php
// 获取多级值(和Laravel一样),但只获取插件内的配置信息
dump($plu->config("database.connections"));
// config 和 getConfig 获取范围不同
// getConfig 先从插件内获取数据,未获取到就再从 Laravel 中获取数据
// 在某些情况下可能使用getConfig更方便
// dump($plu->getConfig("view"));
@endphp
```
打开网址[http://plu.tphp.com/config/value](http://plu.tphp.com/config/value)获得如下效果![](/static/plugins/tphp/help/plugins/config/value.png)
- 字段中有符号 "." 无法匹配
- Laravel: config('domains.plu.tphp.com') 无法匹配
- 插件: $this-plu->config('domains.plu.tphp.com') 无法匹配
- 正确匹配方式: config('domains')\['plu.tphp.com'\]