Если вы говорите об объектах Request и Response , об этом говорилось в списке рассылки разработчиков Symfony несколько дней назад.Я приглашаю вас взглянуть на это здесь .
Почему не добытчики?Не уверен, что на этот вопрос есть однозначный ответ, но я думаю, что это решение, основанное главным образом на личных вкусах.
Это нарушает инкапсуляцию?Не совсем по моему мнению для этого конкретного случая.Мое рассуждение состоит в том, что на данный момент никакой специальной логики не выполняется для различных объектов, которые сейчас являются публичными.Таким образом, в конце концов, вы должны получить объект через геттер и прочитать или изменить его напрямую.Нет большой разницы с извлечением объекта с использованием открытого свойства.
// With Getters
$parameterBag = $request->getQuery();
$parameterBag->get('key');
// With Public Properties
$parameterBag = $request->query;
$parameterBag->get('key');
Инкапсуляция должна выполняться, когда необходимо убедиться, что свойство имеет определенное значение или формат.Например, скажем, у вас есть класс со свойством cost, и это свойство никогда не должно быть отрицательным.Поэтому, если свойство cost было общедоступным, можно установить отрицательное значение, выполнив что-то вроде $receipt->cost = -1;
.Однако, если вы сделаете его закрытым, а пользователь класса сможет установить его только через установщик, то вы можете убедиться, что стоимость никогда не будет ниже 0, выполнив некоторую специальную проверку в коде установщика.
В нашем случае речь идет об объекте коллекции, точнее, объекте ParameterBag.Я не думаю, что есть особые требования к этому объекту, но я могу ошибаться.Поэтому для меня было бы правильно иметь доступ к этим свойствам через публичные свойства.
Основной аргумент, который я мог видеть в пользу геттеров, заключается в том, что он будет более совместим с другими частями фреймворка, где используются геттеры.используются.Однако геттеры могут сосуществовать с открытыми свойствами.
В заключение, я думаю, что это безопасно для данного конкретного случая.Публичные свойства следует использовать только в особых случаях, когда это представляется полезным и когда это правильно.