В общих чертах верно. Но говорю же: разные цели - разные инструменты. У меня как правило все строится на выборках данных и все. А своя система процессоров позволяет менять логику централизованно. Если бы не было этой системы процессоров, то пришлось бы скорее всего использовать сами объекты, так как иногда нужна какая-то дополнительная логика, а она где-то должны храниться, чтобы всегда была на месте. Приведу пару небольших примеров.
Вот довольно не маленький класс элемента (galItem - картинка) в компоненте Gallery. Что в нем есть?
- Специфическая обработка метода get().
- Удаление физического файла картинки при вызове remove().
И куча еще всего.
Вот здесь или мы пишем все в сам класс, чтобы всегда можно было использовать, к примеру, $modx->getObject('galItem', $id)->get('relativeImage'), или пишем процессор, который будет получать чистые данные из БД и выполнять нужные действия. Для меня, к примеру, процессор предпочтительней. Он в 99.9% случаев будет работать быстрее. Но с объектами бывает удобнее работать. К тому же, если в объекте, к примеру, прописана специфическая обработка того же метода remove(), то откуда бы не вызвали удаление объекта, всегда этот метод будет отработан, даже если объект удаляется паровозом за связанными объектами.