mcpField
L
laravel:ports-and-adapters

laravel:ports-and-adapters

github.com/jpcaparas开发157120 次安装19 周前更新
代码仓库

关于 laravel:ports-and-adapters

用于在 Laravel 项目中采用端口与适配器模式的技能,帮助开发者将外部集成细节隔离在领域代码之外。它通过面向应用需求的接口和精简适配器组织提供商 SDK。

主要功能

  1. 01面向应用需求的 PHP 接口
  2. 02封装提供商 SDK 的适配器
  3. 03通过配置选择适配器
  4. 04将 SDK 数据转为自有类型
  5. 05精简且经过测试的适配器

适用场景

  1. 01隔离邮件提供商的 SDK
  2. 02通过配置切换集成
  3. 03避免供应商数据进入领域代码

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/jpcaparas/superpowers-laravel --skill laravel:ports-and-adapters

安装后在 Claude Code 中输入/laravel:ports-and-adapters确认已加载。

详细介绍

端口与适配器(六边形架构)

通过稳定的接口抽象集成。不要让供应商 SDK 进入领域代码。

结构

  • 端口:仅表达应用所需内容的 PHP 接口
  • 适配器:每个供应商对应一个,用于封装 SDK 的差异
  • 选择:通过配置、环境变量或服务提供者选择适配器

示例(电子邮件)

// Port
interface MailPort {
    public function send(string $to, string $subject, string $html): void;
}

// Adapter
final class SesMailAdapter implements MailPort {
    public function __construct(private \Aws\Ses\SesClient $ses) {}
    public function send(string $to, string $subject, string $html): void {
        // wrap SES specifics here
    }
}

// Composition (AppServiceProvider)
$this->app->singleton(MailPort::class, function () {
    return match (config('mail.driver')) {
        'ses' => new SesMailAdapter(app('aws.ses')),
        default => new SmtpMailAdapter(/* ... */),
    };
});

提示

  • 将 SDK 数据规范化为自有类型/DTO
  • 通过端口仅暴露可移植的功能
  • 让适配器保持轻量,并进行充分测试

评论

支持 Markdown