ActiveRecords и поля таблиц, где идеал? Имеется php класс для работы с БД, каждый класс имеет список полей текущей таблицы в таком видеprotected $_row = array( 'id' => true, 'name' =>true, 'surname'=>true ); Этот список полей применяется чтобы отсеять кривые данные при вызове функции ->save(); Также при использовании ничего не может быть проставлено лишнего, чего нету в переменной $_row Теперь ситуация когда этому классу нужно передать какой-то ключ через setter не входящий в золотой список row, или когда нужно сделать ->get('some LEFT JOIN field'), т.е. получить это поле нету возможности так как оно не входит в массив row. Проблема решена добавление дополнительного массива по типу// list of extended fields protected $_moreDataList = array( 'field' => true, 'field1' => true, 'field2' => true ); Тем самым если мы выбрали в этом классе с помощью LEFT JOIN какие-то дополнительные поля которых нету в переменной $_row то мы их все равно может получить через ->get так как они входят в дополнительную переменную. Почему дополнительная? потому что при save() нам все равной придется отсеять лишнее. Теперь вопрос. Нужно ли вообще фильтровать get и set наружу с класса? Или достаточно просто фильтровать тот же save() метод и не указывать дополнительные поля. Т.е. избавить себя от геморроя постоянного вписывания этих доп. полей когда делаешь какой-то JOIN не связанный с таблицей класса. А то сделал селект поля field2 через JOIN , смотришь в get('field2') а там пусто. Ааа.. точно, надо ж добавить его в "_moreDataList". Заранее спасибо за помощь.
Думаю, что фильтрация get и set наружу из класса не обязательна, если вам не требуется строгое ограничение доступа к определенным полям. Однако, если вы хотите обеспечить более строгую защиту данных и избежать возможных ошибок при сохранении данных, то фильтрация внешних get и set методов может быть полезной.
Если вы решите не фильтровать get и set методы, то можно ограничить фильтрацию только на уровне сохранения данных в базе (например, в методе save()). Таким образом, вы сможете избежать необходимости постоянно дополнять список полей в массиве $_moreDataList при использовании JOIN запросов.
В конечном итоге, выбор остается за вами и зависит от специфики вашего проекта и требований к безопасности и удобству работы с данными.
Думаю, что фильтрация get и set наружу из класса не обязательна, если вам не требуется строгое ограничение доступа к определенным полям. Однако, если вы хотите обеспечить более строгую защиту данных и избежать возможных ошибок при сохранении данных, то фильтрация внешних get и set методов может быть полезной.
Если вы решите не фильтровать get и set методы, то можно ограничить фильтрацию только на уровне сохранения данных в базе (например, в методе save()). Таким образом, вы сможете избежать необходимости постоянно дополнять список полей в массиве $_moreDataList при использовании JOIN запросов.
В конечном итоге, выбор остается за вами и зависит от специфики вашего проекта и требований к безопасности и удобству работы с данными.