services[$name] = $callable; } /** * @template T * @param class-string $name * @return T */ public function get(string $name) { // Check if the service is already instantiated if (isset($this->instances[$name])) { return $this->instances[$name]; } // Check if the service is registered if (!isset($this->services[$name])) { throw new \Exception("Service not found: $name"); } $this->instances[$name] = $this->services[$name]($this); return $this->instances[$name]; } }