isInstantiable()) { throw new InvalidArgumentException("Class {$className} cannot be instantiated"); } $constructor = $reflector->getConstructor(); // If the class has a constructor with required parameters if ($constructor && $constructor->getNumberOfRequiredParameters() > 0) { $initializer = static function (mixed $i) use ($className) { return new $className($i); }; return $reflector->newLazyProxy(fn() => $initializer($c)); } else { $initializer = static function () use ($className) { return new $className(); }; return $reflector->newLazyProxy($initializer); } } }