2
在我的Zend Framework PHP項目中,我有許多mysql服務器和許多pdo_mysql適配器。 有一次我發現異常(Zend_Db_Statement_Exception)。 如何確定哪個適配器引發此異常?Zend_Db_Exception - 如何獲取適配器
在我的Zend Framework PHP項目中,我有許多mysql服務器和許多pdo_mysql適配器。 有一次我發現異常(Zend_Db_Statement_Exception)。 如何確定哪個適配器引發此異常?Zend_Db_Exception - 如何獲取適配器
Zend_Exceptions類中沒有任何東西可以獲取異常的來源,但是getTrace()
方法。你可以使用這個getTrace來獲取Zend_Db_Select對象對象,並且如果你的Zend Framework版本不是太舊,你可以使用getAdapter類(如果Zend_Db_Select上沒有getAdapter,那麼它不是一個很難編碼的方法,因爲$ this - > _ adapter是存在的)。因此,下面是一個代碼,可以在catch部分使用以獲取有關適配器配置的詳細信息:
} catch (Exception $e) {
foreach($e->getTrace() as $trace) {
if($trace['class']=='Zend_Db_Adapter_Abstract' || 'Zend_Db_Adapter_Pdo_Abstract'==$trace['class']) {
$zendDbSelect = $trace['args'][0];
$zendDbAdapter = $zendDbSelect->getAdapter();
$conn = $zendDbAdapter->getConfig();
//output adapter configuration, more useful things could be done
// with that if you want
Zend_Debug::dump($conn);
// stop the loop on traces
break;
}
}
// to something else with the exception if you want
}