className; if (!class_exists($className, true)) { throw new \InvalidArgumentException("Class {$className} does not exist"); } $reflector = new \ReflectionClass($className); if (!$reflector->isInstantiable()) { throw new \InvalidArgumentException("Class {$className} cannot be instantiated"); } $initializer = static function () use ($className, $args) { return new $className(...$args); }; return $reflector->newLazyProxy($initializer); } }