Таким образом, настоящий ответ здесь заключается в том, что вы допустили ошибку проектирования. Слишком большой для рефакторинга (хотя в действительности это может быть не так уж и плохо). Таким образом, чтобы обойти вашу ошибку в дизайне, вам нужно взломать все вместе, как вы сейчас.
Существует чрезвычайно веская причина, по которой существует разница между классом и объектом. Объекты позволяют создавать подклассы, и все эти причудливые функции ООП привязаны к создаваемым классам. Я думаю, что вы выбрали эстетику за полезность.
Возможно, вы можете сделать проблему не такой большой, если будете рассматривать Config :: более или менее как прокси для вашей реальной конфигурации. Я все еще хотел бы предложить переписать этот бит вашей кодовой базы для правильного использования ООП, а затем, возможно, использовать существующий Config :: для обратной совместимости. Если ваше приложение должно жить долго, вы можете почувствовать, что введение новой концепции (и сохранение старой) может быть целесообразным в долгосрочной перспективе. Иначе вам, возможно, придется долго и долго жить с этим плохим решением.
Наконец, сделайте рефакторинг. Я обнаружил, что даже с массивными кодовыми базами это может быть скучной работой ... но ничего, что займет не более нескольких часов.
Если бы у вас были юнит-тесты, было бы также очень легко убедиться, что это изменение правильно реализовано везде.