MODX. xPDO, сравнение с PDO и PHP

Основные различия

XPDO — это расширенная версия языка PDO. Зачастую он съедает в 2 раза больше ресурсов сервера, но, за счет того что подходит сразу для нескольких типов баз данных. Для лучшего понимания:

Метод PHP

mysql_connect('localhost','root','rootpassword');
mysql_select_db('modx');

$sql = "SELECT * FROM `modx_site_content` WHERE id > 0 LIMIT 100";
$res = mysql_query($sql);
$arr = array();
while ($row = mysql_fetch_assoc($res)) {
    $arr[] = $row;
}
getStatus('Выборка '.count($arr).' ресурсов стандартными функциями Mysql');

Достоинства: самый быстрый способ общения с базой.

Недостатки: при использовании таких запросов к базе можно пропустить необходимые методы защиты, и конструкцию будет проще взломать.

Метод PDO

$sql = "SELECT * FROM {$modx->getTableName('modResource')} WHERE id > ? LIMIT 100";
$q = $modx->prepare($sql);
$q->execute(array(0));
$arr = $q->fetchAll(PDO::FETCH_ASSOC);
getStatus('Выборка '.count($arr).' ресурсов через PDO');

Достоинства: код простой, удобный, многие уязвимости ликвидированы;

Недостатки: код написанный для MySQL может не работать для MsSQL, из-за разницы в деталях;

Метод xPDO

$q = $modx->newQuery('modResource');
$q->where(array('id:>' => 0));
$q->limit('100');
if ($q->prepare() && $q->stmt->execute()) {
    $arr = $q->stmt->fetchAll(PDO::FETCH_ASSOC);
}
getStatus('Выборка '.count($arr).' ресурсов через xPDO');

Достоинства: поддерживается несколько типов баз данных; в некоторых случаях количество кода значительно меньше.

Недостатки: предварительно нужно загрузить модель данных; запрос обрабатывается дольше, иногда намного дольше.

Муки выбора, итог

В MODX можно использовать все 3 варианта, но, когда и что лучше выбрать?

PHP — вариант для мазохистов заточенных под максимальное ускорение базы.

PDO — удобен в случае если надо делать небольшие выборки, или если данные просто отображаются на сайте, без каких-либо действий над объектами. Естественно в небольших проектах, где все будет устроено на одном типе баз данных.

xPDO — удобен при необходимости внесения каких-либо изменений в базу данных, и при возможной работе с различными типами баз данных.  

 

Пожалуйста, активируйте JavaScript.
Please enable JavaScript.
return; 1