|
|
3 hónapja | |
|---|---|---|
| src | 3 hónapja | |
| .gitignore | 7 hónapja | |
| LICENSE | 7 hónapja | |
| README.md | 3 hónapja | |
| composer.json | 3 hónapja | |
| info.php | 7 hónapja |
这个扩展为后端应用提供了核心功能,是构建SixShop电商系统扩展的基础组件。
composer require six-shop/core
所有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(): 扩展启动时执行的逻辑扩展了ThinkPHP的请求类,提供了额外的属性和方法:
use SixShop\Core\Request;
public function myAction(Request $request)
{
// 获取管理员ID
$adminID = $request->adminID;
// 获取用户ID
$userID = $request->userID;
// 获取分页参数
[$page, $limit] = $request->pageAndLimit();
}
提供了一系列常用的辅助函数:
success_response(): 返回成功响应error_response(): 返回错误响应page_response(): 返回分页响应throw_logic_exception(): 抛出逻辑异常build_tree_options(): 构建树形结构选项secret_password(): 生成随机密码extension_path(): 获取扩展路径extension_name_list(): 获取扩展名称列表extension_composer_info(): 获取扩展Composer信息用于标记定时任务类或方法:
use SixShop\Core\Attribute\Cron;
#[Cron('0 */5 * * * *', 'my_task')]
class MyCronTask
{
public function execute()
{
// 定时任务逻辑
}
}
用于标记钩子处理方法:
use SixShop\Core\Attribute\Hook;
#[Hook(MyEvent::class)]
public function handleMyEvent(MyEvent $event)
{
// 钩子处理逻辑
}
所有实体类都应该继承 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
{
// 扩展启动逻辑
}
}
<?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);
}
}