설명 없음

runphp e88e29c645 refactor(core): 移除MacroPageMiddleware并重构分页逻辑 3 달 전
src e88e29c645 refactor(core): 移除MacroPageMiddleware并重构分页逻辑 3 달 전
.gitignore 1bb7d64dad 添加核心扩展包 7 달 전
LICENSE db2b34b85c Initial commit 7 달 전
README.md 792c62bf32 refactor(core): 移除已弃用的助手类并更新依赖版本 3 달 전
composer.json 8eb83e3b6c chore(deps): add topthink/think-multi-app 3 달 전
info.php f832c49c0d refactor(核心): 更新命名空间以使用 SixShop\System 7 달 전

README.md

SixShop Core扩展

这个扩展为后端应用提供了核心功能,是构建SixShop电商系统扩展的基础组件。

功能特性

  • 扩展生命周期管理(安装、卸载、启动)
  • 统一的请求处理类
  • 常用辅助函数
  • 属性注解支持(定时任务、钩子)
  • 实体基类
  • 核心服务提供者

安装

composer require six-shop/core

核心组件

1. 扩展抽象类 (ExtensionAbstract)

所有SixShop扩展都需要继承 SixShop\Core\ExtensionAbstract 类并实现其抽象方法:

use SixShop\Core\ExtensionAbstract;

class MyExtension extends ExtensionAbstract
{
    protected function getBaseDir(): string
    {
        return __DIR__;
    }
}

扩展类需要实现的方法:

  • getBaseDir(): 返回扩展的根目录路径
  • install(): 扩展安装时执行的逻辑
  • uninstall(): 扩展卸载时执行的逻辑
  • getInfo(): 获取扩展基本信息
  • getConfig(): 获取扩展配置
  • getCommands(): 获取扩展命令
  • getHooks(): 获取扩展钩子
  • getRoutes(): 获取扩展路由
  • getCronJobs(): 获取扩展定时任务
  • boot(): 扩展启动时执行的逻辑

2. 请求类 (Request)

扩展了ThinkPHP的请求类,提供了额外的属性和方法:

use SixShop\Core\Request;

public function myAction(Request $request)
{
    // 获取管理员ID
    $adminID = $request->adminID;
    
    // 获取用户ID
    $userID = $request->userID;
    
    // 获取分页参数
    [$page, $limit] = $request->pageAndLimit();
}

3. 辅助函数

提供了一系列常用的辅助函数:

响应函数

  • success_response(): 返回成功响应
  • error_response(): 返回错误响应
  • page_response(): 返回分页响应

其他函数

  • throw_logic_exception(): 抛出逻辑异常
  • build_tree_options(): 构建树形结构选项
  • secret_password(): 生成随机密码
  • extension_path(): 获取扩展路径
  • extension_name_list(): 获取扩展名称列表
  • extension_composer_info(): 获取扩展Composer信息

4. 属性注解

定时任务注解 (Cron)

用于标记定时任务类或方法:

use SixShop\Core\Attribute\Cron;

#[Cron('0 */5 * * * *', 'my_task')]
class MyCronTask
{
    public function execute()
    {
        // 定时任务逻辑
    }
}

钩子注解 (Hook)

用于标记钩子处理方法:

use SixShop\Core\Attribute\Hook;

#[Hook(MyEvent::class)]
public function handleMyEvent(MyEvent $event)
{
    // 钩子处理逻辑
}

5. 实体基类 (BaseEntity)

所有实体类都应该继承 SixShop\Core\Entity\BaseEntity

use SixShop\Core\Entity\BaseEntity;

/**
 * @mixin \app\Model\MyModel
 */
class MyEntity extends BaseEntity
{
    // 实体逻辑
}

使用示例

创建扩展

<?php
declare(strict_types=1);

namespace MyVendor\MyExtension;

use SixShop\Core\ExtensionAbstract;

class Extension extends ExtensionAbstract
{
    protected function getBaseDir(): string
    {
        return dirname(__DIR__);
    }
    
    public function boot(): void
    {
        // 扩展启动逻辑
    }
}

控制器中使用Request

<?php
declare(strict_types=1);

namespace MyVendor\MyExtension\Controller\Api;

use SixShop\Core\Request;
use function SixShop\Core\success_response;
use function SixShop\Core\page_response;

class MyController
{
    public function index(Request $request)
    {
        // 获取请求参数
        $params = $request->param();
        
        // 获取分页参数
        [$page, $limit] = $request->pageAndLimit();
        
        // 处理业务逻辑
        $data = $this->getService()->getList($params, $page, $limit);
        
        // 返回分页数据
        return page_response($data);
    }
    
    public function create(Request $request)
    {
        // 获取POST数据
        $data = $request->post();
        
        // 处理业务逻辑
        $result = $this->getService()->create($data);
        
        // 返回成功响应
        return success_response('创建成功', $result);
    }
}