有人知道一个不使用PDO的好的PHP ORM吗?

时间:2011-01-16 21:17:06

标签: php mysql web-applications orm pdo

我正在为一个大型大学园区的部门构建一个webapp,最终将在企业服务器上运行(我使用“企业”这个术语)。

问题是管理员拒绝编译并启用除SQLite之外的任何PDO扩展。他们确实启用了mysql和mysqli,所以这并不是完全失败。

那么这里的任何人都知道一个好的ORM for PHP不依赖于PDO作为它的主要引擎吗?

我已经看过Doctrine和Propel(两个优秀的框架),虽然无法弄清楚如何从内部撕掉PDO。

修改:以下是我从服务器上的管理员那里得到的回复:

  

肖恩,

     

我们已多次尝试使用PDO扩展程序构建PHP,但未成功。我们没有成功的原因很复杂,但基本上源于这样一个事实:web envoronment最初设置了一些静态编译的数据库驱动程序库,其他动态编译,混合导致PDO大声抱怨。事情是这样做的原因是由于早期版本的PHP 5.x中的错误已经不再是今天的问题(或者至少少于一个),但转换很困难,因为更改需要修改php。 ini文件,因为每个站点(包括[服务器编辑]上的站点)都有自己的php.ini(总共大约22,000个文件,其中许多是由用户修改的),所以很难推出在由未更新文件的帐户提供的页面上,更改(并且不会使更改导致错误[我不记得它们是否致命])。

1 个答案:

答案 0 :(得分:3)

我认为每个现代ORM都依赖于PDO,因为它是标准的数据库驱动程序。

如果您启用了MySQLi extension,那么您应该能够编写自己的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,但至少它会起作用。