app repository

runphp 42ee12269a ci(ddev): 配置 DDEV 环境和 NGINX 7 hónapja
.ddev 42ee12269a ci(ddev): 配置 DDEV 环境和 NGINX 7 hónapja
app e39572a06c feat: 初始化 ThinkPHP 8项目结构 7 hónapja
config e39572a06c feat: 初始化 ThinkPHP 8项目结构 7 hónapja
extend e39572a06c feat: 初始化 ThinkPHP 8项目结构 7 hónapja
public e39572a06c feat: 初始化 ThinkPHP 8项目结构 7 hónapja
route e39572a06c feat: 初始化 ThinkPHP 8项目结构 7 hónapja
runtime e39572a06c feat: 初始化 ThinkPHP 8项目结构 7 hónapja
view e39572a06c feat: 初始化 ThinkPHP 8项目结构 7 hónapja
.example.env 42ee12269a ci(ddev): 配置 DDEV 环境和 NGINX 7 hónapja
.gitignore e39572a06c feat: 初始化 ThinkPHP 8项目结构 7 hónapja
.travis.yml e39572a06c feat: 初始化 ThinkPHP 8项目结构 7 hónapja
LICENSE.txt e39572a06c feat: 初始化 ThinkPHP 8项目结构 7 hónapja
README.md 89a8a7c8c5 docs:修正 README 文档中的拼写错误 7 hónapja
composer.json e39572a06c feat: 初始化 ThinkPHP 8项目结构 7 hónapja
think e39572a06c feat: 初始化 ThinkPHP 8项目结构 7 hónapja

README.md

SixShop应用

安装依赖

ddev composer install

运行应用

ddev start
ddev launch # 或者访问 https://app.ddev.site/

SixShop扩展特性

SixShop扩展旨在为ThinkPHP开发者们开发出更易维护的项目

每个项目都是不同的扩展组合而成,对ThinkPHP应用的扩展只需要通过composer require 进行安装(包括数据的迁移脚本)

最终你只需要寻找现成合适的扩展进行安装,然后自己自行开发部分扩展

支持私有仓库进行扩展模块开发,保护用户定制开发的代码

支持应用市场扩展开发模式

项目依赖

"php": ">=8.3",
"topthink/framework": "^8.1",
"topthink/think-orm": "^4.0"

扩展列表

https://packagist.org/?type=sixshop-extension

https://packagist.jd29.com

SixShop扩展开发指南

扩展模块开发流程:

  1. 先创建git项目
  2. 项目clone到本地runtime/extension目录下,也可以其他没有版本控制的目录下

    cd backend/runtime/extension
    git clone git@github.com:runphp/sixshop-hello.git
    
  3. composer.json中添加path仓库(下面以hello为例)

    {
        "repositories": [
            {
                "type": "path",
                "url": "runtime/extension/sixshop-hello",
                "options": {
                    "symlink": true,
                    "versions": {
                        "six-shop/hello": "v0.2.9"
                    }
                }
            }
        ]
    }
    
  4. 安装你的扩展模块

    ddev composer require  "six-shop/hello:^v0.2.0"
    

    上面的版本是假如最新版本的six-shop/hellov0.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/extensionvendor目录下修改代码了

  1. 私有扩展模块认证说明

~/.composer/auth.json 中添加认证信息

   {
      "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官方文档。

  1. 扩展模块的composer.json 参考其他扩展,不同地方是添加了"type": "sixshop-extension",然后就是

    {
     "extra": {
       "sixshop": {
         "id": "hello",
         "class": "SixShop\\Hello\\Extension"
       }
     }
    }
    

    id为扩展模块的标识符,需要唯一,class为扩展模块的类名,实现了SixShop\Extension\ExtensionInterface接口

  2. 扩展模块的sql安装脚本使用cakephp的migration,在模块的database/migrations目录添加

  3. 扩展路由在route目录下添加路由文件 默认会加载admin.phpapi.php两个文件, 对应的是admin和api应用,你也可以实现SixShop\Extension\ExtensionInterfacegetRoutes接口

  4. 扩展模块的事件监听,可以说使用SixShop\Core\Attribute\Hook实现,具体请查看SixShop\Core\Attribute\Hook类,在模块的src/Hooks目录下添加,然后实现SixShop\Extension\ExtensionInterfacegetHooks接口

  5. 扩展模块的异步任务实现你可以继承SixShop\Core\Job\BaseJob即可,具体请查看SixShop\Core\Job\BaseJob类 使用示例

    \app\api\job\IndexJob::dispatch(); // 异步任务
    \app\api\job\IndexJob::dispatch()->delay(10); // 延迟10s执行
    
  6. 扩展定时任务,使用SixShop\Core\Attribute\Cron注解, 并且需要实现SixShop\Extension\ExtensionInterfacegetCronJobs接口 参考\SixShop\System\Cron\SystemCron

  7. 扩展命令行 注册命令行请实现SixShop\Extension\ExtensionInterfacegetCommands接口 ,默认自动加载扩展目录下command.php文件 可以参考backend/vendor/six-shop/system/command.php

  8. 扩展的配置,默认自动加载扩展目录下config.php文件,可以参考backend/vendor/six-shop/hello/config.php 统一配置的实现目前需要安装six-shop/system,后续会单独的扩展包,目前配置的实现是使用 form-create 生成配置表单即可,支持子表单组件

欢迎PHP开发者加入我们