只要抽象DatabaseConnection类扩展了PDO类,就可以调用pdo方法来了解当前的数据库驱动。
例如:
$conn = Database::getConnection();
print $conn->getAttribute($conn::ATTR_DRIVER_NAME); #returns mysql, pgsql...
还有第二种方法可以使用DatabaseConnection::driver():
print $conn->driver();
或DatabaseConnection::databaseType();
print $conn->databaseType();
请注意,DatabaseConnection::driver() 和 DatabaseConnection::databaseType() 是相似的函数,但不等于!
DatabaseConnection::driver() 方法的返回值取决于实现和其他因素。
在 Drupal 数据库 API 页面中:
database.inc 抽象公共 DatabaseConnection::driver()
这不一定与数据库本身的类型相同。例如,可能有两个 MySQL 驱动程序,mysql 和 mysql_mock。此函数将为每个返回不同的值,但两者都会为 databaseType() 返回“mysql”。
在大多数情况下,您只想使用
$conn->getAttribute($conn::ATTR_DRIVER_NAME)
或$conn->databaseType()
如果你想获得更具体的属性,你应该利用 PHP ReflectionClass 的特性:
$conn = Database::getConnection();
$ref = new ReflectionClass($conn);
#ref->getProperties, ref->getConstants $ref->isAbstract...
参考:
PDO::getAttribute
PDO::ATTR_DRIVER_NAME
Drupal Database API
Drupal Base Database API class