|
|
@@ -1,45 +1,137 @@
|
|
|
|
|
|
|
|
|
-# Core Extension
|
|
|
-
|
|
|
-这个扩展为后端应用提供了核心功能。
|
|
|
+# SixShop扩展
|
|
|
|
|
|
## 特性
|
|
|
|
|
|
-- 提供 \SixShop\Core\Entity\BaseEntity 类,作为所有实体的基类。
|
|
|
-
|
|
|
-## 安装
|
|
|
-
|
|
|
-请使用 Composer 来安装此扩展:
|
|
|
-
|
|
|
-```bash
|
|
|
-composer require six-shop/core
|
|
|
-```
|
|
|
-
|
|
|
-## 使用
|
|
|
-
|
|
|
-使用此扩展,你需要创建一个继承自 `SixShop\\core\\Entity\\BaseEntity` 的实体类,并根据需要实现 `SixShop\\core\\Contracts\\ExtensionInterface` 接口。
|
|
|
-
|
|
|
-你还可以使用 `SixShop\\core\\Attribute\\Cron` 和 `SixShop\\core\\Attribute\\Hook` 属性来定义定时任务和钩子。
|
|
|
+次扩展旨在为ThinkPHP开发者们开发出更易维护的项目
|
|
|
|
|
|
-对于异常处理,可以使用 `SixShop\\core\\Exception\\ExceptionHandle` 类来渲染异常并返回适当的响应。
|
|
|
+每个项目都是不同的扩展组合而成,对ThinkPHP应用的扩展只需要通过`composer require` 进行安装(包括数据的迁移脚本)
|
|
|
|
|
|
-## 服务
|
|
|
+最终你只需要寻找现成合适的扩展进行安装,然后自己自行开发部分扩展
|
|
|
|
|
|
-该扩展包括多个服务类,用于初始化和注册功能,如自动加载服务、命令服务、钩子属性服务和路由注册服务。
|
|
|
+支持私有仓库进行扩展模块开发,保护用户定制开发的代码
|
|
|
|
|
|
-## 调度任务
|
|
|
+支持应用市场扩展开发模式
|
|
|
|
|
|
-使用 `SixShop\\core\\Job\\BaseJob` 抽象类来创建作业任务,并利用 `SixShop\\core\\Job\\JobDispatcher` 来调度这些任务。
|
|
|
-
|
|
|
-## 中间件
|
|
|
-
|
|
|
-该扩展还提供了一些中间件,如 `ExtensionStatusMiddleware` 和 `MacroPageMiddleware`,用于处理请求和响应。
|
|
|
-
|
|
|
-## 贡献
|
|
|
-
|
|
|
-欢迎为这个扩展贡献代码和测试。请确保遵循 PSR-12 编码标准,并为你的拉取请求提供清晰的描述。
|
|
|
-
|
|
|
-## 许可证
|
|
|
+## 项目依赖
|
|
|
+```
|
|
|
+"php": ">=8.3",
|
|
|
+"topthink/framework": "^8.1",
|
|
|
+"topthink/think-orm": "^4.0"
|
|
|
+```
|
|
|
|
|
|
-此项目遵循 MIT 许可证。详情请查看 LICENSE 文件。
|
|
|
+## 扩展列表
|
|
|
+
|
|
|
+<https://packagist.org/?type=sixshop-extension>
|
|
|
+
|
|
|
+<https://packagist.jd29.com>
|
|
|
+
|
|
|
+
|
|
|
+## SixShop扩展开发指南
|
|
|
+
|
|
|
+扩展模块开发流程:
|
|
|
+1. 先创建git项目
|
|
|
+2. 项目clone到本地`runtime/extension`目录下,也可以其他没有版本控制的目录下
|
|
|
+ ```shell
|
|
|
+ cd backend/runtime/extension
|
|
|
+ git clone git@github.com:runphp/sixshop-hello.git
|
|
|
+ ```
|
|
|
+3. 在~/.composer/auth.json中添加path仓库(下面以hello为例)
|
|
|
+ ```json
|
|
|
+ {
|
|
|
+ "repositories": [
|
|
|
+ {
|
|
|
+ "type": "path",
|
|
|
+ "url": "runtime/extension/sixshop-hello",
|
|
|
+ "options": {
|
|
|
+ "symlink": true,
|
|
|
+ "versions": {
|
|
|
+ "six-shop/hello": "v0.2.9"
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ ```
|
|
|
+4. 安装你的扩展模块
|
|
|
+ ```shell
|
|
|
+ ddev composer require "six-shop/hello:^v0.2.0"
|
|
|
+ ```
|
|
|
+ 上面的版本是假如最新版本的`six-shop/hello`是`v0.2.0`,那么我们的开发版本比它大的版本就好了,我们可以设置成`v0.2.9`
|
|
|
+
|
|
|
+ 成功处理的话可以看到
|
|
|
+ ```shell
|
|
|
+ Package operations: 1 install, 0 updates, 0 removals
|
|
|
+ - Installing six-shop/hello (v0.2.9): Symlinking from runtime/extension/sixshop-hello
|
|
|
+ ```
|
|
|
+
|
|
|
+ 现在你就可以在`runtime/extension`或`vendor`目录下修改代码了
|
|
|
+
|
|
|
+5. 私有扩展模块认证说明
|
|
|
+
|
|
|
+ 在 ~/.composer/auth.json 中添加认证信息
|
|
|
+ ```json
|
|
|
+ {
|
|
|
+ "repositories": [
|
|
|
+ {
|
|
|
+ "type": "composer",
|
|
|
+ "url": "https://packagist.jd29.com",
|
|
|
+ "options": {
|
|
|
+ "http": {
|
|
|
+ "header": [
|
|
|
+ "X-API-KEY: 699d5f8e02a255e657bb2bfad35570bb468e970e72918b2e38797f6a00beb4e4"
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ ```
|
|
|
+ 说明: ddev环境对应的auth.json文件为`~/.ddev/homeadditions/.composer/auth.json`
|
|
|
+
|
|
|
+ 当然你可以做软连接过去
|
|
|
+ ```shell
|
|
|
+ mkdir -p ~/.ddev/homeadditions/.composer && ln -s ~/.composer/auth.json ~/.ddev/homeadditions/.composer/auth.json
|
|
|
+ ```
|
|
|
+
|
|
|
+ 最后你可以参考`extension/auth.json`这份示例文件,进行修改,这些设置也可以直接在`composer.json`文件设置,最终使用方式请参考composer官方文档。
|
|
|
+
|
|
|
+6. 扩展模块的composer.json
|
|
|
+ 参考其他扩展,不同地方是添加了`"type": "sixshop-extension"`,然后就是
|
|
|
+ ```json
|
|
|
+ {
|
|
|
+ "extra": {
|
|
|
+ "sixshop": {
|
|
|
+ "id": "hello",
|
|
|
+ "class": "SixShop\\Hello\\Extension"
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ```
|
|
|
+ id为扩展模块的标识符,需要唯一,class为扩展模块的类名,实现了`SixShop\Extension\ExtensionInterface`接口
|
|
|
+
|
|
|
+7. 扩展模块的sql安装脚本使用cakephp的migration,在模块的`database/migrations`目录添加
|
|
|
+
|
|
|
+8. 扩展路由在`route`目录下添加路由文件
|
|
|
+ 默认会加载`admin.php`和`api.php`两个文件, 对应的是admin和api应用,你也可以实现`SixShop\Extension\ExtensionInterface`的`getRoutes`接口
|
|
|
+
|
|
|
+9. 扩展模块的事件监听,可以说使用`SixShop\Core\Attribute\Hook`实现,具体请查看`SixShop\Core\Attribute\Hook`类,在模块的`src/Hooks`目录下添加,然后实现`SixShop\Extension\ExtensionInterface`的`getHooks`接口
|
|
|
+
|
|
|
+10. 扩展模块的异步任务实现你可以继承`SixShop\Core\Job\BaseJob`即可,具体请查看`SixShop\Core\Job\BaseJob`类
|
|
|
+ 使用示例
|
|
|
+ ```php
|
|
|
+ \app\api\job\IndexJob::dispatch(); // 异步任务
|
|
|
+ \app\api\job\IndexJob::dispatch()->delay(10); // 延迟10s执行
|
|
|
+ ```
|
|
|
+11. 扩展定时任务,使用`SixShop\Core\Attribute\Cron`注解, 并且需要实现`SixShop\Extension\ExtensionInterface`的`getCronJobs`接口
|
|
|
+ 参考`\SixShop\System\Cron\SystemCron`类
|
|
|
+
|
|
|
+12. 扩展命令行
|
|
|
+ 注册命令行请实现`SixShop\Extension\ExtensionInterface`的`getCommands`接口 ,默认自动加载扩展目录下`command.php`文件
|
|
|
+ 可以参考`backend/vendor/six-shop/system/command.php`
|
|
|
+
|
|
|
+13. 扩展的配置,默认自动加载扩展目录下`config.php`文件,可以参考`backend/vendor/six-shop/hello/config.php`
|
|
|
+ 统一配置的实现目前需要安装`six-sho/system`,后续会单独的扩展包,目前配置的实现是使用 [form-create](https://form-create.com/v3/designer/) 生成配置表单即可,支持子表单组件
|
|
|
+
|
|
|
+## 欢迎加入我们
|