我正在为一个大型大学园区的部门构建一个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个文件,其中许多是由用户修改的),所以很难推出在由未更新文件的帐户提供的页面上,更改(并且不会使更改导致错误[我不记得它们是否致命])。
答案 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,但至少它会起作用。