Имеется 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".
Заранее спасибо за помощь.