Я работаю над новым проектом с большой кодовой базой PHP. Приложение использует довольно много PHP-констант (define('FOO', 'bar')
), особенно для таких вещей, как параметры подключения к базе данных. Эти константы определены в одном файле конфигурации, который require_once()
'd непосредственно по существу каждому классу приложения.
Несколько лет назад это имело бы смысл, но с тех пор я получил ошибку Unit Testing, и эта плотная связь между классами действительно беспокоит меня. Эти константы пахнут глобальными переменными, и они ссылаются непосредственно на код приложения.
Это еще хорошая идея? Было бы разумно скопировать эти значения в объект и использовать этот объект (т.е. Bean - там, я сказал), чтобы передать их через инъекцию зависимостей классам, которые взаимодействуют с базой данных? Могу ли я победить какие-либо преимущества PHP-констант (скажем, скорость или что-то еще), выполнив это?
Другим подходом, который я рассматриваю, было бы создание отдельной конфигурации PHP script для тестирования. Мне все равно нужно понять, как тестировать классы для использования конфигурации песочницы script вместо глобальной конфигурации script. Это все еще кажется хрупким, но для всего приложения может потребоваться менее полная модификация.