如何从Doctrine\DBAL\Connection获取原生mysqli连接句柄
正确实现方式
Doctrine DBAL的MySQLi驱动连接类提供了公开的原生连接获取方法,不需要操作私有属性,直接调用官方暴露的API即可:
$conn = \Doctrine\DBAL\DriverManager::getConnection($connectionParams); /** @var \Doctrine\DBAL\Driver\Mysqli\Connection $driverConnection */ $driverConnection = $conn->getWrappedConnection(); // 调用官方公开方法获取原生mysqli句柄 $mysqli = $driverConnection->getNativeConnection(); var_dump($mysqli);
补充说明
- 该方法是Doctrine官方对外暴露的公开API,兼容性有保障,不会因为DBAL版本迭代出现不可用的问题
- 为了代码健壮性可以增加类型判断,避免因为驱动切换导致的错误:
$driverConnection = $conn->getWrappedConnection(); if ($driverConnection instanceof \Doctrine\DBAL\Driver\Mysqli\Connection) { $mysqli = $driverConnection->getNativeConnection(); // 后续业务逻辑 }
内容的提问来源于stack exchange,提问作者hanshenrik
相关产品推荐
相关产品推荐

