Василий, еще раз:
Давно изместно, что xPDO не нужен для выборки и вывода большого количества данных. Зачем его использовать, создавая кучу объектов, жрать процессор и память, если мы хотим просто выбрать 100 строк из БД и вывести их на экран?
У тебя изначально посыл на то, что если есть pdoTools, то xPDO не нужен. Но это совершенно не так, так как без xPDO у тебя не работает твой pdoTools.
Всё так. pdoTools действительно выбирает данные через PDO и выводит их массивами, а не объектами.
Василий, вот ты для кого сейчас эту жевачку публикуешь? Для меня или для масс? Мне ты хочешь объяснить что и как где работает? Давай сразу уточним, что xPDO сам выборки из БД тоже не делает, он использует для этого как раз PDO. Посмотри тот же метод xPDO::exec(). Используется $this->pdo.
А теперь посмотри свой же класс pdoFetch. Сколько раз там встречается вызов $this->modx->newQuery()? 4 раза. А что возвращает этот метод? xPDOQuery Object. И там же ты использует конструкции типа $q->fetch() (который чисто xPDO-ошный) и $q->stmt->fetch() (являющийся частью xPDO-объектов).
Я не буду в самые дебри лезть (типа xPDOObject::_loadRows() и т.п.), но я уверен, ты заглядывал туда, и знаешь, как много общего у твоего компонента с оригиналом.
И еще раз резюмирую: твой подход был изначально такой: «xPDO — плохое зло, и вот pdoTools всех нас спасает, всем можно отказываться от ненавистного xPDO, теперь всем есть счастье.» Уточняю: xPDO — это неотъемлемая часть MODX, и говоря, что xPDO зло и вот вам замена, ты говоришь, что MODX без твоего pdoTools отстой и ущербный. Я же говорил и говорю, что ты не прав в этом. xPDO был крут, крут и остался, и его ты в своем компоненте использует. И скорее всего правильней было назвать его xPDOTools, учитывая, насколько он тесно связан именно с xPDO. И никому не говорить, что xPDO плох. А еще у тебя есть параметр checkPermissions, и если он передан, то у тебя будет выполняться проверка на записи. А через что проверка будет идти? Так же через создание объектов. И посмотри сколько у тебя вызовов $this->modx->newObject() в pdotools.class.php.
И напоследок: я опросил несколько человек, не создавалось ли у них ощущения, что pdoTools преподносится именно как замена xPDO. Ответ был «ну да, есть такое дело». Потому перечитай внимательно свой топик и подрихтуй его так, чтобы он не наводил на такие мысли, а не убеждай через два с лишним года, что все не так, как говорилось об этом изначально. У меня достаточно знаний, чтобы здесь уловить технические тонкости.