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. 04SDK データを独自型に変換
  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 インターフェース
  • アダプター:プロバイダーごとに 1 つ用意し、SDK の癖を吸収します
  • 選択:config/env/service provider を使ってアダプターを選択します

例(メール)

// 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 に正規化します
  • ポートを通じて公開するのは、移植可能な機能のみにします
  • アダプターは薄く保ち、十分にテストします

コメント