|
|
hace 7 meses | |
|---|---|---|
| .ddev | hace 7 meses | |
| app | hace 7 meses | |
| config | hace 7 meses | |
| extend | hace 7 meses | |
| public | hace 7 meses | |
| route | hace 7 meses | |
| runtime | hace 7 meses | |
| view | hace 7 meses | |
| .example.env | hace 7 meses | |
| .gitignore | hace 7 meses | |
| .travis.yml | hace 7 meses | |
| LICENSE.txt | hace 7 meses | |
| README.md | hace 7 meses | |
| composer.json | hace 7 meses | |
| think | hace 7 meses |
这是一个纯净版的ThinkPHP项目,基于ThinkPHP8.1开发,添加了DDEV开发环境的配置。
我们的目标是你的项目就是目前这一个项目,只需要安装扩展即可完成开发,不需要修改项目代码,你的业务逻辑应该在某个扩展中完成。
欢迎PHP开发者加入我们,一起开发SixShop扩展。
ddev composer install
ddev start
ddev launch # 或者访问 https://app.ddev.site/
SixShop扩展旨在为ThinkPHP开发者们开发出更易维护的项目
每个项目都是不同的扩展组合而成,对ThinkPHP应用的扩展只需要通过composer require 进行安装(包括数据的迁移脚本)
最终你只需要寻找现成合适的扩展进行安装,然后自己自行开发部分扩展
支持私有仓库进行扩展模块开发,保护用户定制开发的代码
支持应用市场扩展开发模式
"php": ">=8.3",
"topthink/framework": "^8.1",
"topthink/think-orm": "^4.0"
https://packagist.org/?type=sixshop-extension
扩展模块开发流程:
项目clone到本地runtime/extension目录下,也可以其他没有版本控制的目录下
cd backend/runtime/extension
git clone git@github.com:runphp/sixshop-hello.git
在composer.json中添加path仓库(下面以hello为例)
{
"repositories": [
{
"type": "path",
"url": "runtime/extension/sixshop-hello",
"options": {
"symlink": true,
"versions": {
"six-shop/hello": "v0.2.9"
}
}
}
]
}
安装你的扩展模块
ddev composer require "six-shop/hello:^v0.2.0"
上面的版本是假如最新版本的six-shop/hello是v0.2.0,那么我们的开发版本比它大的版本就好了,我们可以设置成v0.2.9
成功处理的话可以看到
Package operations: 1 install, 0 updates, 0 removals
- Installing six-shop/hello (v0.2.9): Symlinking from runtime/extension/sixshop-hello
现在你就可以在runtime/extension或vendor目录下修改代码了
在 ~/.composer/auth.json 中添加认证信息
{
"custom-headers": {
"packagist.jd29.com": {
"X-API-KEY": "5f280c17d5958****************************************0893f506ca01acef704"
}
}
}
说明: ddev环境对应的auth.json文件为~/.ddev/homeadditions/.composer/auth.json
当然你可以做软连接过去
mkdir -p ~/.ddev/homeadditions/.composer && ln -s ~/.composer/auth.json ~/.ddev/homeadditions/.composer/auth.json
然后需要ddev start重启下容器,可以通过ddev composer config -l查看是否生效
最后你可以参考doc/auth.json这份示例文件,进行修改,这些设置也可以直接在composer.json文件设置,最终使用方式请参考composer官方文档。
扩展模块的composer.json
参考其他扩展,不同地方是添加了"type": "sixshop-extension",然后就是
{
"extra": {
"sixshop": {
"id": "hello",
"class": "SixShop\\Hello\\Extension"
}
}
}
id为扩展模块的标识符,需要唯一,class为扩展模块的类名,实现了SixShop\Extension\ExtensionInterface接口
扩展模块的sql安装脚本使用cakephp的migration,在模块的database/migrations目录添加
扩展路由在route目录下添加路由文件
默认会加载admin.php和api.php两个文件, 对应的是admin和api应用,你也可以实现SixShop\Extension\ExtensionInterface的getRoutes接口
扩展模块的事件监听,可以说使用SixShop\Core\Attribute\Hook实现,具体请查看SixShop\Core\Attribute\Hook类,在模块的src/Hooks目录下添加,然后实现SixShop\Extension\ExtensionInterface的getHooks接口
扩展模块的异步任务实现你可以继承SixShop\Core\Job\BaseJob即可,具体请查看SixShop\Core\Job\BaseJob类
使用示例
\app\api\job\IndexJob::dispatch(); // 异步任务
\app\api\job\IndexJob::dispatch()->delay(10); // 延迟10s执行
扩展定时任务,使用SixShop\Core\Attribute\Cron注解, 并且需要实现SixShop\Extension\ExtensionInterface的getCronJobs接口
参考\SixShop\System\Cron\SystemCron类
扩展命令行
注册命令行请实现SixShop\Extension\ExtensionInterface的getCommands接口 ,默认自动加载扩展目录下command.php文件
可以参考backend/vendor/six-shop/system/command.php
扩展的配置,默认自动加载扩展目录下config.php文件,可以参考backend/vendor/six-shop/hello/config.php
统一配置的实现目前需要安装six-shop/system,后续会单独的扩展包,目前配置的实现是使用 form-create 生成配置表单即可,支持子表单组件