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 (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
}