laravel-state-machines
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseLaravel State Machines
Laravel 状态机
State machines with Spatie Model States for complex state transitions and validation.
基于Spatie Model States的状态机,用于实现复杂的状态转换与验证。
Core Concept
核心概念
state-management.md - State machine patterns:
- Spatie Model States setup
- State classes with behavior
- Transition classes with validation
- State-specific methods
- When to use state machines vs simple enums
- Testing state transitions
state-management.md - 状态机模式:
- Spatie Model States 配置
- 包含行为的状态类
- 带验证的转换类
- 状态专属方法
- 状态机与简单枚举的适用场景对比
- 状态转换测试
Pattern
模式示例
php
// 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);Use state machines for complex state with validation, side effects, or state-specific behavior. Use simple enums for basic status fields.
php
// 状态类
final class DraftOrderState extends OrderState
{
public function canBeSubmitted(): bool
{
return true;
}
}
final class PendingOrderState extends OrderState
{
public function canBeSubmitted(): bool
{
return false;
}
}
// 转换类
final class SubmitOrderTransition extends Transition
{
public function handle(): OrderState
{
// 验证与副作用处理
return new PendingOrderState($this->order);
}
}
// 使用示例
$order->status->transitionTo(PendingOrderState::class);在需要处理带验证、副作用或状态专属行为的复杂状态时,使用状态机;基础状态字段则使用简单枚举。