phalapi 支持sqlserver 数据库链接吗

已邀请:

dogstar - PhalApi创始人

赞同来自: lubot

PhalApi使用的是NotORM来进行数据库操作,而NotORM底层则是采用了PDO。

目前,NotORM支持: MySQL, SQLite, PostgreSQL, MS SQL, Oracle (Dibi support is obsolete)

Requirements: PHP 5.1+ with any database supported by PDO – tested with MySQL, SQLite, PostgreSQL, MS SQL, Oracle (Dibi support is obsolete)



PHP的PDO支持的驱动有:

CUBRID (PDO)
MS SQL Server (PDO)
Firebird (PDO)
IBM (PDO)
Informix (PDO)
MySQL (PDO)
MS SQL Server (PDO)
Oracle (PDO)
ODBC and DB2 (PDO)
PostgreSQL (PDO)
SQLite (PDO)
4D (PDO)


更多请查看:http://php.net/manual/en/pdo.drivers.php

但需要注意的是,PhalApi本身对NotORM进行了修改,需要调整一下代码才能更好地支持除MySQL外的数据库。
即使NotORM不支持的数据库,你也可以轻松通过添加扩展的方式来支持,或自定义实现(虽然有点成本)。

扩展的步骤(需要PhalApi 1.3.1 及以上版本):

1、首先,定制自己的数据库连接的PDO。
class Common_MyDB extends PhalApi_DB_NotORM {

protected function createPDOBy($dbCfg) {
/* Connect to an ODBC database using driver invocation */
$dsn = 'uri:file:///usr/local/dbconnect';
return new PDO($dsn, $dbCfg['user'], $dbCfg['password']);
}
}
2、随后,在初始化文件init.php中重新注册DI()->notorm即可,如:
//数据操作 - 基于NotORM,$_GET['__sql__']可自行改名
DI()->notorm = function() {
$debug = !empty($_GET['__sql__']) ? true : false;
return new Common_MyDB(DI()->config->get('dbs'), $debug);
};

lubot - PHP开发工程师

赞同来自:

回答很赞。

snssnow

赞同来自:

请标注一下每个文件的对应位置目录么?

要回复问题请先登录注册