extensions[$map])) { $this->extensions[$map][] = $callback; } $this->extensions[$map] = [$callback]; } public function getMap(string $class, array $dependencies = []): Base { return app($class, $dependencies); } public function withExtensions(string $class, array $dependencies = []): Base { $map = $this->getMap($class, $dependencies); foreach ($this->extensions as $name => $extensions) { if (is_a($map, $name)) { foreach ($extensions as $extension) { $map->extend($extension); } } } return $map; } }