Are there any best practices for handling dynamic class instantiation in PHP to avoid unnecessary code duplication?

When dealing with dynamic class instantiation in PHP, it's important to use a factory method or a dependency injection container to avoid unnecessary code duplication. By centralizing the logic for creating instances of classes, you can easily update and maintain your code without repeating instantiation logic throughout your application.

class ClassFactory {
    public static function createInstance($className) {
        if (class_exists($className)) {
            return new $className();
        } else {
            throw new Exception("Class $className does not exist.");
        }
    }
}

// Example usage
$className = 'SomeClass';
$instance = ClassFactory::createInstance($className);