【发布时间】:2021-12-08 06:09:20
【问题描述】:
给定代码
$connectionParams = array(
'dbname' => $this->dbname,
'user' => $this->dbuser,
'password' => $this->dbpass,
'host' => $this->dbhost,
'driver' => 'mysqli',
);
$conn = \Doctrine\DBAL\DriverManager::getConnection($connectionParams);
var_dump($conn);
我怎样才能从 $conn(它是一个 Doctrine\DBAL\Connection)获取底层的 mysqli 句柄?
我找到了*一种方法* 来访问它,但它显然不是它应该完成的方式,所以我愿意提供建议:
$conn = \Doctrine\DBAL\DriverManager::getConnection($connectionParams);
foreach((array)$conn->getWrappedConnection() as $mysqli){
// TODO: find official way of getting the handle.
// here we are casting it to (array) to access its PRIVATE PROPERTIES
// it's a fugly hack.
break;
}
var_dump($mysqli);
【问题讨论】:
-
$conn->getWrappedConnection()返回什么? -
@Dharman 它返回
Doctrine\DBAL\Driver\Mysqli\Connection,不管是什么 -
对,那它的属性是什么?不是有一个叫
mysqli或conn吗? -
@Dharman 它有一个名为
conn的 private 属性,其中包含 mysqli 句柄,它有 0 个公共属性 :( 它有 8 个公共方法,但没有一个返回据我所知,任何相关的内容(beingTransaction、commit、exec、lastInsertId、prepare、query、quote 和 rollBack)