Я хочу предоставить доступ к защищенным свойствам другому классу.Я пытался придумать умный способ сделать это.
У меня есть один класс
abstract class Form_Abstract {
protected $formAttributes = array();
protected $fields = array();
}
с методами установки для полей $ и $ formAttributes.чтобы сделать его еще более сложным, метод установки полей создает отдельный класс Field со своими собственными защищенными свойствами и добавляет его в список полей.Я хочу навязать использование сеттеров для регулирования данных, которые входят в этот класс.
НО, я хочу иметь возможность передавать этот класс множеству других классов, которые будут сканировать данные и использовать их.по-разному.Способы, которыми другие классы будут использовать данные, весьма различны, поэтому было бы сложно создать шаблон типа команды.
Что я рассмотрел:
Использование метода __get для доступа к защищеннымсвойства вне класса, таким образом, в основном делая класс только для чтения.Однако для доступа к переменным требуется примерно 350% больше времени.
Наличие метода, который выводит все переменные класса в многомерный массив.Хотя это, кажется, лучший способ скрыть внутреннее содержимое класса, это не очень эффективно для генерации этих массивов, возможно, несколько раз за экземпляр скрипта.
Выполнение некоторой уловки наследования, которая позволяетдоступ к классам, которые расширяют определенный базовый класс или что-то.Это кажется классным вариантом, но создает зависимости таким образом, которого я бы хотел избежать.Также требуются специальные методы для получения переменных.
Конечно, я могу сделать все свойства общедоступными, но это не позволяет мне контролировать входящие данные.
Любые идеи или мыслиоценили.