Искал добросовестно, но так и не нашел ответа на следующие вопросы.
1. Есть ли поддержка PHP MySQLi в Evo.
2. Есть ли поддержка PHP MySQLi в Revo.
Как-то не очень радует перспектива полного перехода при работе с БД на PDO (для Evo) и на xPDO (для Revo). В новых версиях PHP больше не будет поддержки MySQL, как известно, а я как-то к ней привык, много чего наработано на mysql_ функциях. На mysqli_ все это перевести наверное можно, но вот переводить все полностью на PDO как-то не вдохновляет.
Просветите, кто знает... какие могут быть выходы для такой ситуации.
-
☆ A M B ☆
- 428 Posts
Как-то не очень радует перспектива полного перехода при работе с БД на PDO (для Evo) и на xPDO (для Revo).
А чем вас не угодил xPDO? Может проблема в изучении?, так как в Рево с прямыми запросами вы далеко не уедете (если вы не фанат профи работы с БД)
Приведу маленький присер xPDO, а вы его для себы переведите в запрос MySQL
$q = $modx->newQuery('Hotels');
$q->select(array('Hotels.id',
'Hotels.prop_number',
'Hotels.personen',
'Hotels.room',
'Hotels.bedroom',
'Hotels.star_reting',
'Hotels.nights',
'Hotels.country',
'Hotels.region',
'Hotels.town',
'Hotels.name',
'Hotels.alias',
'Hotels.home_img',
'Hotels.uri',
'Hotels.furnishing',
'Hotels.price',
'Hotels.country'
'Region.title AS reg_title',
'Town.title AS town_title'
'Type.name AS type'
));
$q->leftJoin('HotelsRegion','Region');
$q->leftJoin('HotelsTown','Town');
$q->leftJoin('HotelsType','Type');
$q->sortby($sortby,$sortdir);
$q->limit($limit, $offset);
$q->prepare();
$q->stmt->execute();
$res = $q->stmt->fetchAll(PDO::FETCH_ASSOC);
Для меня куда ещё логичнее.
Искал добросовестно, но так и не нашел ответа
http://develop.modx.com/develop/revolution/requirements/
Ответ на ваш вопрос -
https://forums.modx.com/thread?thread=5373
Valentin Rasulov - Industrial design (Hobbies - Web Development)
Development not standard projects on CMF MODx Revolution.
Small sample of extensions
>...так как в Рево с прямыми запросами вы далеко не уедете (если вы не фанат профи работы с БД)
Нет проблемы - освоить хPDO. С PDO я нормально работаю.
Рево для малых сайтов тяжеловат, Ево - гораздо проще и легче, и требует меньше ресурсов.
На Ево можно свободно работать с PDO и с MySQLi - кому как нравится. Я, для проверки, один свой сниппет выборки данных из БД в Ево перевел на MySQLi - все работает. Да и Рево на MySQLi должен работать.
Вопрос не в том что лучше, что хуже - PDO, xPDO или MySQLi. В определенных случаях прямые SQL-запросы работают лучше и быстрее разных AR/ORM надстроек.
Просто хочется иметь возможность работать и с PDO, и с xPDO и с MySQLi - это все элементарно доступно как расширения PHP MySQL API.
Другой вопрос, что ядро Ево на MySQL (не все, там есть и PDO, но определенные скрипты). Вот эти-то скрипты ядра и надо бы переписать на MySQLi, чтобы Ево могла жить дальше, после того как PHP MySQL уйдет из новых версий PHP.
А переписывать ядро Ево на PDO гораздо труднее, чем на MySQLi.
PDO и xPDO - вещи очень хорошие для своих целей... плохо только, если они станут единственно возможным выбором, без альтернативы в виде MySQLi.
[ed. note: sadex13 last edited this post 14 years, 2 months ago.]
-
☆ A M B ☆
- 428 Posts
Ну, в Рево (я говорю за Рево, так как в Ево не работал, тем более через год потдержки Ево от MODX не будет), во первых начиная с версии 2.2 есть поддержка репликаций. В кратце
- Поддержка нескольких подключений с помощью xPDO
- Автоматическое переключение между подключенными базами
- Лёгкое редактирование конфиг файла MODx
т.е. для своих проектов вы можете с лёгкостью работать как с PDO так и с MySQLi, да и вообще есть в xPDO так-же "сырые запросы" в БД
Пример
$sql = "SELECT * FROM {$modx->getTableName('modResource')} WHERE `id` > 0 LIMIT 1000";
$q = new xPDOCriteria($modx, $sql);
$res = $modx->getCollection('modResource', $q);
или так
$sql = "SELECT * FROM {$modx->getTableName('modResource')} WHERE `id` > 0 LIMIT 1000";
$q = $modx->prepare($sql);
$q->execute();
$res = $q->fetchAll(PDO::FETCH_ASSOC);
т.е. через xPDO и PDO...
не думаю, что разработчики MODx об этом не подумают и не примут меры.
Valentin Rasulov - Industrial design (Hobbies - Web Development)
Development not standard projects on CMF MODx Revolution.
Small sample of extensions
>тем более через год потдержки Ево от MODX не будет...
Это они зря. Как минимум должно быть два варианта CMS - легкая и быстрая и мощная и полнофункциональная. Малых и средних сайтов в интернете процентов 90 от общего числа, их на мощной Рево делать, имхо, нерационально, и без Ево MODx сильно потеряет в популярности.
>т.е. для своих проектов вы можете с лёгкостью работать как с PDO так и с MySQLi,
Да, это ведь есть в PHP APIs MySQL, значит и в Revo это может быть доступно.
> да и вообще есть в xPDO так-же "сырые запросы" в БД
Код более-менее приятный, но как-то не верится что в xPDO модно напрямую работать с таблицами БД. Я не знаю xPDO, только бегло просматривал куски описания его работы. Насторожила одна вещь - схема БД, которая должна перестраиваться заново при изменении структуры БД. Может, это уже по другому.
Ни в коем случае не рассматриваю MySQLi для использования ВМЕСТО PDO и xPDO, но для совместного использования, в определенных случаях. В то же время рассматривать xPDO вместо всего остального во всех случаях жизни имхо, тоже неверно.
Насколько хорошо xPDO я оценить не могу сейчас, надеюсь, не хуже PDO, а PDO вешь весьма удобная.
[ed. note: sadex13 last edited this post 14 years, 2 months ago.]
>т.е. для своих проектов вы можете с лёгкостью работать (прим. в Рево) как с PDO так и с MySQLi.
Это означает, что многие старые хорошие модули, сниппеты, плагины и вообще любые старые хорошие php-скрипты со старыми процедурами mysql_* можно относительно легко перевести в mysqli_* (или в PDO, но здесь придется только вручную все делать) и использовать их в Рево.
Тем более, что есть штатный перекодировщик процедур mysql_* в mysqli_* в PHP-скриптах от разработчиков и поддержки СУБД MySQL.
Не сразу эта мысль пришла в голову.