$actions */ class ActionGroup extends BaseActionGroup implements HasRecord, HasTable { use InteractsWithRecord; protected Table $table; public function table(Table $table): static { $this->table = $table; return $this; } public function getTable(): Table { if (isset($this->table)) { return $this->table; } $group = $this->getGroup(); if (! ($group instanceof HasTable)) { throw new Exception('This action does not belong to a table.'); } return $group->getTable(); } /** * @return array */ protected function resolveDefaultClosureDependencyForEvaluationByName(string $parameterName): array { return match ($parameterName) { 'record' => [$this->getRecord()], default => parent::resolveDefaultClosureDependencyForEvaluationByName($parameterName), }; } /** * @return array */ protected function resolveDefaultClosureDependencyForEvaluationByType(string $parameterType): array { $record = $this->getRecord(); if (! $record) { return parent::resolveDefaultClosureDependencyForEvaluationByType($parameterType); } return match ($parameterType) { Model::class, $record::class => [$record], default => parent::resolveDefaultClosureDependencyForEvaluationByType($parameterType), }; } }