Реализация "модульности" процессоров
На сайте есть страница пользователя. На ней выводится его профиль, созданные им объявления, его последние заявки и пр. Это все отдельные объекты. Кроме того есть страницы со списками этих объектов «Мои объявления», «Мои заявки». Хотелось бы на любой из страниц делать поменьше запросов. Соответственно, нужны 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; И отсюда вопрос, где эти методы лучше хранить? Создать отдельный класс с ними? Или в код класса того или иного объекта вставлять как метод — но тогда их из процессора просто так не вызовешь… А можно прямо в этом процессоре и хранить. Какой вариант предпочтительнее? Или, может это все совсем не так делается?