хе хе, просто в пхп нет дружественных классов
поэтому отдельные паблики на самом деле не должны быть пабликами
публичные конструкторы в сервисах нужны только для контейнера и для тестов, но никого не смущает это
а вот если публичное свойство - всё, диверсия
вот о дружественных тестах думал как раз. но если похожим образом приспичиввает, то предпочту с помощью “магии” читать приватное свойство или интеграционный тест написать, чем вводить геттер/иззер в формально публичный API объекта, пускай даже с internal аннотацией