mcpField
L
laravel-template-method-and-plugins

laravel-template-method-and-plugins

github.com/noartem开发1370 次安装3 周前更新
代码仓库

关于 laravel-template-method-and-plugins

面向 Laravel 开发的编码技能,介绍如何保持核心流程稳定,并通过小型类扩展行为。内容涵盖 Template Method、策略接口、插件注册与独立测试。

主要功能

  1. 01Template Method 算法骨架
  2. 02通过子类钩子自定义
  3. 03策略接口与实现类
  4. 04按键或配置注册选择
  5. 05独立测试各项实现

适用场景

  1. 01构建步骤可替换的导入流程
  2. 02支持多种支付网关
  3. 03无需修改 switch 语句即可扩展行为

安装

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

$npx skills add https://github.com/noartem/skills --skill laravel-template-method-and-plugins

安装后在 Claude Code 中输入/laravel-template-method-and-plugins确认已加载。

详细介绍

模板方法与可插拔策略

保持核心流程稳定;通过小型类实现扩展。

模板方法

使用定义算法骨架的基类;子类重写钩子。

abstract class Importer {
    final public function handle(string $path): void {
        $rows = $this->load($path);
        $data = $this->normalize($rows);
        $this->validate($data);
        $this->save($data);
    }
    abstract protected function load(string $path): array;
    protected function normalize(array $rows): array { return $rows; }
    protected function validate(array $data): void {}
    abstract protected function save(array $data): void;
}

策略/插件

定义接口;注册实现;根据键/配置进行选择。

interface PaymentGateway { public function charge(int $cents, string $currency): string; }

final class StripeGateway implements PaymentGateway { /* ... */ }
final class BraintreeGateway implements PaymentGateway { /* ... */ }

final class PaymentsRegistry {
    /** @param array<string,PaymentGateway> $drivers */
    public function __construct(private array $drivers) {}
    public function for(string $key): PaymentGateway { return $this->drivers[$key]; }
}

优先新增类,而不是修改 switch 语句。单独测试各个实现。

评论

支持 Markdown