laravel-state-machines について
laravel-state-machinesは、Spatie Model Statesを使ってLaravelの複雑な状態遷移を扱うスキルです。状態クラスや遷移の検証、状態固有の振る舞い、テスト、単純な列挙型との使い分けを説明します。
主な機能
- 01Spatie Model Statesのセットアップ
- 02振る舞いを持つ状態クラス
- 03検証付きの遷移クラス
- 04状態固有のメソッド
- 05遷移テストと列挙型の指針
活用シーン
- 01検証付きの注文ステータス変更のモデル化
- 02特定の状態に応じた振る舞いの追加
- 03ステートマシンと列挙型の選択
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ leeovery/ agentic-skills --skill laravel-state-machinesインストール後、Claude Code で/laravel-state-machinesを入力して読み込まれたか確認します。
同梱ファイルreferences/state-management.md
詳細
Laravel State Machines
複雑な状態遷移とバリデーションに対応する、Spatie Model States による状態マシンです。
Core Concept
state-management.md - 状態マシンのパターン:
- Spatie Model States のセットアップ
- 動作を備えた状態クラス
- バリデーションを備えた遷移クラス
- 状態固有のメソッド
- 状態マシンとシンプルな enum の使い分け
- 状態遷移のテスト
Pattern
// State classes
final class DraftOrderState extends OrderState
{
public function canBeSubmitted(): bool
{
return true;
}
}
final class PendingOrderState extends OrderState
{
public function canBeSubmitted(): bool
{
return false;
}
}
// Transition class
final class SubmitOrderTransition extends Transition
{
public function handle(): OrderState
{
// Validation and side effects
return new PendingOrderState($this->order);
}
}
// Usage
$order->status->transitionTo(PendingOrderState::class);
バリデーション、副作用、または状態固有の動作を伴う複雑な状態には、状態マシンを使用します。基本的なステータスフィールドには、シンプルな enum を使用します。
コメント
Markdown 対応