Является ли доступ к env параметрам минуя конфиг плохой практикой?
Пишу автоматизацию прокликивания страниц в браузере на symfony 5.0. Страницы вынесены в условные PageObject классы. Ряду страниц нужны настройки, которые я пробрасываю через .env => config/services.yaml => конструкторы класса. Итог - когда я создаю сценарий работы со страницей в методе другого класса, то мне нужно пробрасывать все параметры через конструктор класса-сценария. Читала про setter injection, но он работает только с аргументами-классами, а не обычными аргументами-строками.
Могу ли я доступаться к этим параметрам напрямую через $_ENV внутри методов PageObject, тем самым избавляясь от прокидывания параметров по цепочке классов, или этот вариант плохой и есть более грамотный?
Daria Motorina, но тестовый фреймворк содержит ВСЕ инструменты для парсинга, тк это единственный способ понять, что собственно пришло к нам :)
Обычно же их и используют для этого
Максим Федоров, да, Вы правы, можно было использовать codeception как лучше настроенный инструмент для работы с браузером, но ответ на первоначальный вопрос без привязки к парсингу мне тоже интересен)
Я бы, пожалуй, не советовал так делать, т.к это, по сути, мало отличается от использования глобальных переменных. Почему бы не внедрять ваш класс-сценарий работы в другой класс через конструктор точно так же? Я думаю, что это оптимальное решение, тем более что для внедрения вашего класса-сценария вам уже не придется ничего прописывать в кофиги.
Вы капельку не так интерпретировали) Не класс-сценарий в другой класс, а создание/передача нескольких PageObject в класс-сценарий. Варианты конструктора класса-сценария __construct($param1,...,$param10) с созданием pageObject'ов внутри с этими параметрами и __construct($pageObject1,...,$pageObject5) выглядят одинаково плохо для меня. В тестировании создают PageFactory для этого, но и туда придется пробрасывать букет параметров для всех объектов, которые она может создать.