
我想知道如何改善我的调用存储过程的Zend代码.目前,我正在使用MySQL数据库,并且下面的控制器中的action函数有效,但似乎令人讨厌.
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);这可能甚至建议吗?最佳答案我希望使用模型进行数据访问.另外,我建议您在应用程序的配置文件中定义数据库适配器,以使其对应用程序代码透明,并使用PDO,这样您的应用程序就不必与特定的数据库管理器绑定,以防万一您需要指向数据库中的其他数据库.未来.
例如,除了将所有数据访问逻辑都包含在控制器的 *** 作中之外,还可以将其简化如下:
//within some controller action$model = MyUbberCoolSuperModel();$model->myUbberCoolMethod($params);//And in your model,which can extend Zend_Db_table_Abstractpublic 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}我认为这种方式更清楚,您的控制器仅负责调用模型上的方法,而模型则负责数据访问.因此,如果需要重构,更改或更改与数据访问相关的任何内容,则可以知道必须使用哪种模型,而不必更改任何可能影响其他因素的控制器 *** 作.
希望能帮助到你 总结
以上是内存溢出为你收集整理的php-改进我的Zend存储过程调用代码 全部内容,希望文章能够帮你解决php-改进我的Zend存储过程调用代码 所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)