Я думаю, что это в конечном итоге то, что я пойду с. Спасибо за всю помощь, ребята.

даю веб-приложение для отдела в большом кампусе колледжа, которое в конечном итоге будет работать на корпоративных серверах (я свободно использую термин «предприятие»).

Проблема в том, что администраторы отказались компилировать и включать любое расширение PDO, кроме SQLite. У них действительно включены mysql и mysqli, так что это не полная потеря.

Так кто-нибудь здесь знает о хорошем ORM для PHP, который НЕ полагается на PDO в качестве основного движка?

Я уже смотрел на Doctrine и Propel (оба отличные фреймворки), хотя не мог понять, как вырвать PDO из них.

редактироватьВот ответ, который я получил от администраторов на сервере:

Шон,

Мы несколько раз безуспешно пытались собрать PHP с включенным расширением PDO. Причина, по которой мы не добились успеха, сложна, но в основном проистекает из того факта, что веб-среда изначально была настроена с некоторыми библиотеками драйверов баз данных, скомпилированными статически, а другие динамически скомпилированными, что вызвало громкую жалобу PDO. Причина, по которой все было сделано таким образом, произошла из-за ошибки в ранних версиях PHP 5.x, которая больше не является проблемой сегодня (или, по крайней мере, одной из них), но переключение затруднительно, потому что изменение потребует внесения изменений в php. INI-файлы и, так как каждый сайт (включая сайты на [сервер отредактирован]) имеет свой собственный файл php.ini (всего около 22 000 файлов, многие из которых изменены пользователями), очень трудно вытолкнуть это изменение (а не внесение этого изменения приводит к ошибкам [я не помню, являются ли они фатальными или not] на страницах, обслуживаемых аккаунтами с необновленными файлами).

 Sean Madden16 янв. 2011 г., 22:57
Я люблю PDO! Сервер, на котором это будет развернуто, не поддерживает PDO, и администраторы отказались включить его. Я застрял.
 mario16 янв. 2011 г., 22:26
Существует эмуляция PDO для PHP4, которая также обеспечивает альтернативную привязку для PHP5. Ссылка внизу справа наxpdo.org - Хотя для его использования все равно потребуется переписать. И, очевидно, это тоже некачественный вариант.
 prodigitalson16 янв. 2011 г., 22:24
Хорошо, если вы используете Propel 1.0 (я думаю, что PDO появился в 1.2), он использует креольский язык как абстракцию вместо PDO (я думаю, что креольский язык использует mysqli для подключения mysql под капотом). С точки зрения Doctrine вам нужно будет реализовать свои собственные драйверы, которые, я уверен, будут немалым подвигом, учитывая их сложность.
 Alfred16 янв. 2011 г., 22:18
Почему бы вам не использовать PDO? Это то, как вы (будущее) должны подключиться к вашей базе данных!
 sethvargo16 янв. 2011 г., 22:47
Почему вы никогда не хотите PDO?

Ответы на вопрос(1)

Решение Вопроса

что каждый современный ORM опирается на PDO, поскольку это стандартный драйвер базы данных.

Если у вас естьРасширение MySQLi Если вы активируете, вы сможете написать свой собственный PDO (IIRC MySQLi поддерживает все, что делает PDO).

if (extension_loaded('pdo_mysql') == false) {
    class PDO {
        protected $connection;

        public function __construct($dsn, $username = null, $password = null, array $driver_options = array()) {
            $this->connection = new MySQLi(...);
        }
    }

    class PDOStatement { ... }
    class PDOException extends RuntimeException { ... }
}

Вам придется реализовать весь PDO API, но, по крайней мере, он будет работать.

 Sean Madden17 янв. 2011 г., 20:11
Я думаю, что это в конечном итоге то, что я пойду с. Спасибо за всю помощь, ребята.
 inquam16 янв. 2011 г., 23:34
Теперь я не уверен, насколько похожи интерфейсы mysqli и PDO. Но если некоторые функции имеют одинаковые имена и принимают одинаковые аргументы, вы можете использовать описанный выше подход вместе с магическим методом __call для передачи вызовов индексу mysqli. Тогда вам не придется реализовывать весь интерфейс PDO, а только функции, которые отличаются по имени и / или аргументам.

Ваш ответ на вопрос