*/ protected array $dependencies = []; public function __construct(string $class, int $priority = 0) { $this->dependencies[$class] = $priority; } public function getDependencies(): array { return $this->dependencies; } public function merge(PriorityDefinition $factory): static { foreach ($factory->getDependencies() as $class => $priority) { if (isset($this->dependencies[$class]) && $priority <= $this->dependencies[$class]) { continue; } $this->dependencies[$class] = $priority; } return $this; } public function getDefinition(): string { $dependencies = array_flip($this->dependencies); ksort($dependencies); return array_pop($dependencies); } }