Мне интересно, как я могу улучшить свой Zend-код, который вызывает хранимую процедуру. В данный момент я использую MySQL DB, и функция действия в моем контроллере ниже работает, но это кажется неприятным.
public function callSPAction()
{
$param = $this->_request->getParam('param', 0);
$bootstrap = $this->getInvokeArg('bootstrap');
$config = $bootstrap->getOptions();
$mysqli = new mysqli(
$config['resources']['db']['params']['host'],
$config['resources']['db']['params']['root']['username'],
$config['resources']['db']['params']['root']['password'],
$config['resources']['db']['params']['dbname']);
$rs = $mysqli->query(sprintf('CALL mystoredprocedure(%d)',$param));
if(mysqli_error($mysqli))
{
throw new exception(mysqli_error($mysqli), mysqli_errno($mysqli));
}
$this->_helper->redirector('index', 'index');
}
Я бы предпочел использовать классы Zend_DB для вызова хранимой процедуры, но я не уверен, как это можно сделать?
Поскольку я вызываю несколько хранимых процедур, я думаю, что было бы лучше создать вспомогательный класс, который обернет логику для подключения к БД. Это выставило бы методы, которые обернули бы основную хранимую процедуру. Мой код контроллера может тогда просто позвонить
StoredProcedureHelper::callMyStoredProdecure($this->_request->getParam('param', 0);
Это возможно или даже рекомендуется?