Все зависит от того, каким образом реализован интерфейс SeekableIterator, конечно, если вы сделали обход объекта через него. Возможность узнать, является ли модификатор поля отличным от public можно через ReflectionProperty класс.
Задача у меня простая, есть около 1000 картинок в папке, есть 1000 (уже точно 1000) записей в xls. Вытаскиваю из xls title, и делаю из них объект класса Excel. У класса Excel есть метод parse() и метод create(). Метод parse() смотрит в папку с изображениями и получает оттуда массив с названиями изображений $img. Дальше он проходит циклом по получившемуся объекту Excel состоящий из title (которые мы получили из xls) и проверяет на совпадения с массивом названий изображений $img из папки. И если какое-то поле совпало, то у этого поля вызывается метод create, то есть мы пишем $this->create и оно записывается в базу. По моему это хороший подход. Нежели записывать совпрадения в отдельный массив и потом уже перебирая его в цикле заносить в базу методом create
_ umr: скажем так, данные динамического свойства, например поля из дб должны быть отделены от "переменных среды" объекта, например в массив $this->data пишем динамику, и там уже перебираем что надо. Отделять кароче надо мух от котлет. Метод $this->create не тупо все с объекта в базу же сует, берет определенные свойства.