Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/widuu/think-addons

tp6 addons
https://github.com/widuu/think-addons

Last synced: about 2 months ago
JSON representation

tp6 addons

Awesome Lists containing this project

README

        

# think-addons

> tp6 (Thinkphp) 插件扩展包,更友好兼容 `Thinkphp` 原生框架。

>插件路由分发器 `think\addons\dispatch\Controller` 继承 `think\route\Dispatch`

>插件支持 `event`/`middleware`/`provider` 配置,没有将事件封装成 `hook` 函数,使用原生 `\think\facade\Event` 操作,让开发者能够快速上手,如果你习惯使用 `hook` 函数,只需要将下边的方法添加到 `app\common.php` 中即可

```
/**
* 处理插件钩子
* @param string $event 钩子名称
* @param array|null $params 传入参数
* @param bool $once 是否只返回一个结果
* @return mixed
*/
function hook($event, $params = null, bool $once = false)
{
$result = Event::trigger($event, $params, $once);

return join('', $result);
}
```

> 更细化的配置,能够根据配置来进行按需加载

### 安装

```
composer require widuu/think-addons
```

### 全局配置

> `config\addons.php` 文件

```
return [
// 插件的 namespace 也是插件目录
'app_namespace' => 'addons',
// 生产环境下,开启自动加载时的缓存名称,方便更新
'addons_autoload_cache' => 'addons_autoload_cache',
// 自动解析加载插件事件,此为全局事件,可以在全局访问
'autoload_addons_event' => true,
// 全局加载插件下的 event.php
'autoload_addons_efile' => false,
// 自动解析服务注册,全局服务,可以在全局访问
'autoload_addons_service' => false,
// 自动注册路由
'autoload_addons_route' => true,
// 自动注册命令行
'autoload_addons_command' => true,
// 监听事件
'addons_event' => [],
// 注册服务
'addons_service' => [],
// 注册命令行
'addons_commands' => [],
// 注册路由
'route' => [],
];
```
> 当运行到某个插件时譬如 `test` 插件,会自动加载插件下的 (公共函数) `common.php` (服务注册) `provider.php` (事件) `event.php` 和 `Test.php` 中的事件。

> 但是 `provider.php`/`event.php`/`Test.php` 文件中的事件和服务并不全局调用,假如你想在任何地方调用,可以开启上方的自动加载或者将这些配置到对应的配置数组中

> 注:生产环境中(非 `Debug`)模式,会在缓存读取,所以有新的插件记住清除缓存,缓存名称在配置中自定义的。

### 生成插件

> 使用如下命令行可以自动生成插件

```
php think addon:build 模块名称
```

> 目录如下

```html
www WEB部署目录(或者子目录)
├─addons 插件目录
│ ├─test test 插件目录
│ │ ├─controller 控制器目录
│ │ ├─model 模型目录
│ │ ├─ ... 更多类库目录
│ │ │
│ │ ├─Test.php 插件类继承 think\Addons
│ │ ├─info.ini 插件信息
│ │ ├─config.php 插件配置
│ │ ├─common.php 公共函数文件
│ │ ├─middleware.php 中间件文件
│ │ ├─provider.php 服务注册文件
│ │ └─event.php 事件定义文件
├─app 应用目录
├─config 配置目录
│ ├─addons.php 插件配置
│ └─ ... 更多配置
├─view 视图目录
├─route 路由定义目录
├─public WEB目录(对外访问目录)
├─extend 扩展类库目录
├─runtime 应用的运行时目录(可写,可定制)
├─vendor Composer类库目录
├─.example.env 环境变量示例文件
├─composer.json composer 定义文件
├─LICENSE.txt 授权说明文件
├─README.md README 文件
├─think 命令行入口文件
```

> 我们插件实现类中可以通过注释修改事件名称,以 `Test.php` 插件为类

```php
`addons_url` 中的 `$url` 在插件内可以 `controller/action` 或者 `action`,如果全局使用,`addon/controller/action`

> 其它使用方法请参考 thinkphp 手册即可