# SixShop Core扩展 这个扩展为后端应用提供了核心功能,是构建SixShop电商系统扩展的基础组件。 ## 功能特性 - 扩展生命周期管理(安装、卸载、启动) - 统一的请求处理类 - 常用辅助函数 - 属性注解支持(定时任务、钩子) - 实体基类 - 核心服务提供者 ## 安装 ```shell composer require six-shop/core ``` ## 核心组件 ### 1. 扩展抽象类 (ExtensionAbstract) 所有SixShop扩展都需要继承 `SixShop\Core\ExtensionAbstract` 类并实现其抽象方法: ```php 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的请求类,提供了额外的属性和方法: ```php 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) 用于标记定时任务类或方法: ```php use SixShop\Core\Attribute\Cron; #[Cron('0 */5 * * * *', 'my_task')] class MyCronTask { public function execute() { // 定时任务逻辑 } } ``` #### 钩子注解 (Hook) 用于标记钩子处理方法: ```php use SixShop\Core\Attribute\Hook; #[Hook(MyEvent::class)] public function handleMyEvent(MyEvent $event) { // 钩子处理逻辑 } ``` ### 5. 实体基类 (BaseEntity) 所有实体类都应该继承 `SixShop\Core\Entity\BaseEntity`: ```php use SixShop\Core\Entity\BaseEntity; /** * @mixin \app\Model\MyModel */ class MyEntity extends BaseEntity { // 实体逻辑 } ``` ## 使用示例 ### 创建扩展 ```php 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); } } ```