$effects نوعِ اثر => مقدار ترکیب‌شده * @param list> $appliedPolicies * @param list $forbidReasons پیام‌های انسانیِ ممنوعیت */ public function __construct( public array $effects = [], public array $appliedPolicies = [], public array $forbidReasons = [], ) {} public function isForbidden(): bool { return $this->forbidReasons !== []; } public function effect(string $type, mixed $default = null): mixed { return $this->effects[$type] ?? $default; } public function toArray(): array { return [ 'effects' => (object) $this->effects, 'applied_policies' => $this->appliedPolicies, 'forbidden' => $this->isForbidden(), 'forbid_reasons' => $this->forbidReasons, ]; } }