首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >改进Zend存储过程调用代码

改进Zend存储过程调用代码
EN

Stack Overflow用户
提问于 2010-04-29 20:15:07
回答 1查看 1.2K关注 0票数 3

我想知道如何改进调用存储过程的Zend代码。目前,我使用的是MySQL DB,下面我的控制器中的操作函数可以工作,但看起来很糟糕。

代码语言:javascript
复制
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类来调用存储过程,但我不确定如何做到这一点?

由于我要调用许多存储过程,因此我认为最好创建一个帮助器类来包装用于连接到数据库的逻辑。它将公开包装底层存储过程的方法。然后,我的控制器代码可以直接调用

代码语言:javascript
复制
StoredProcedureHelper::callMyStoredProdecure($this->_request->getParam('param', 0);

这是可能的,甚至是推荐的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-04-30 03:31:00

我倾向于使用模型进行数据访问。此外,我建议您在应用程序的配置文件中定义db适配器,以便它对您的应用程序代码是透明的,并使用PDO,这样您的应用程序就不会绑定到特定的DB管理器,以防将来需要指向不同的数据库。

例如,不必在控制器的操作中包含所有的数据访问逻辑,可以将其简化为:

代码语言:javascript
复制
//within some controller action
$model = MyUbberCoolSuperModel();
$model->myUbberCoolMethod($params);

//And in your model, which can extend Zend_Db_Table_Abstract
public function myUbberCoolMethod($params)
{
   $pdo = $this->getAdapter()->prepare("CALL myProcedure(:param)");
   $pdo->bindParam(':param', $param, PDO::PARAM_STR); 
   $pdo->execute();
   // Any additional logic you might want to do
}

我认为这种方式更清晰,你的控制器只负责调用模型上的方法,而模型处理数据访问。因此,如果与数据访问相关的任何内容需要重构、更改或其他任何东西,您都知道必须使用哪个模型,而不是更改任何可能会影响任何其他内容的控制器操作。

希望它能有所帮助;)

干杯。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2737156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档