Реализация "модульности" процессоров

Jul 12, 2013

На сайте есть страница пользователя. На ней выводится его профиль, созданные им объявления, его последние заявки и пр. Это все отдельные объекты. Кроме того есть страницы со списками этих объектов «Мои объявления», «Мои заявки». Хотелось бы на любой из страниц делать поменьше запросов. Соответственно, нужны JOIN. Как я представляю реализацию таких выборок. Для страницы пользователя есть процессор xpectaProfileGetProcessor, в который передается id пользователя и он выбирает все его данные: <?php

class xpectaProfileGetProcessor extends modObjectGetListProcessor{ public $classKey = 'modUser';

public function getData() {
    $c = $this->modx->newQuery($this->classKey);
    $c->where(array('id' => $this->getProperty('id')));
    $c->select(array(
        "{$this->classKey}.*",
    ));
    $data = array();
    if($c->prepare() && $c->stmt->execute()){
        $data = $c->stmt->fetchAll(PDO::FETCH_ASSOC);
    }
    return $data;
}

}

return 'xpectaProfileGetProcessor'; В него я хочу передавать список «модулей», которые нужно запустить. Каждый из них будет выглядеть как-то так: $c->leftJoin('xpectaAd', 'xpectaAd');

$c->select(array( "xpectaAd.id as ad_id", 'xpectaAd.title as ad_title', //... ));

return $c; И отсюда вопрос, где эти методы лучше хранить? Создать отдельный класс с ними? Или в код класса того или иного объекта вставлять как метод — но тогда их из процессора просто так не вызовешь… А можно прямо в этом процессоре и хранить. Какой вариант предпочтительнее? Или, может это все совсем не так делается?