从此不求人:自主研发一套PHP前端开发框架(18)
2016-04-11 15:17
519 查看
实现执行多条sql语句
myClass.php代码如下:<?php /** * 虚拟注入类实现 */ class myClass { var $xmlContent=""; var $funcList = array(); function myClass($xmlname) { $xmlurl = LKPHP_PATH.'Libary/Class/'.$xmlname.'.xml'; $this->xmlContent = file_get_contents($xmlurl); $this->loadXml(); } function loadXml(){ $conf = (array)simplexml_load_string($this->xmlContent); foreach ($conf['func'] as $func) { $this->funcList[strval($func->name)] = array( 'sql'=>strval($func->sql), 'description'=>strval($func->description), 'resultType'=>strval($func->resultType) ); } } function getSqlByParams($sql,$funcParams){ if(!$funcParams || count($funcParams) === 0) return $sql; $index = 0; foreach ($funcParams as $p) { $sql = str_replace('#{'.$index.'}',$p,$sql); $index++; } return $sql; } function __call($funcName,$funcParams){ //echo '执行了'.$funcName.'但是这个方法没有定义,因此本函数来接管'; if(array_key_exists($funcName,$this->funcList)){ $db = load_db(); $sql = $this->funcList[$funcName]['sql']; if(explode(';',$sql)>1){ $sqls = explode(';',$sql); $sqlList = array(); foreach ($sqls as $s) { $s = $this->getSqlByParams($s,$funcParams);//过滤参数 $s = str_replace(array('\n',PHP_EOL,'\t'),'',$s); $sqlList[] = $s; } //这里要直接使用事务进行执行 return $db->execForTrac($sqlList,$this->funcList[$funcName]['resultType']); } $sql = $this->getSqlByParams($sql,$funcParams); switch ($this->funcList[$funcName]['resultType']) { case 'array': return $db->execForArray($sql); break; case 'int': return intval($db->execForOne($sql)); case 'string': return strval($db->execForOne($sql)); default: //默认使用返回数组的方式 return $db->execForArray($sql); break; } } } } ?>
相关文章推荐
- web 按钮Loading...的实现 with Bootstrap
- jquery和js的区别汇总
- js处理iframe中子页面与父页面
- protocolBuffer使用
- Javascript异步编程的4种方法
- 【剑指offer系列】 n个骰子的点数___43
- JavaScript 闭包
- JSP自定义标签
- 前端常用框架
- 从此不求人:自主研发一套PHP前端开发框架(17)
- 【js】:利用javascript打开网页
- JS焦点图 上下翻动 支持IE6
- 剑指offer系列之9:二进制中1的个数
- js复制到剪贴板,兼容ie
- 如何判断Javascript对象是否存在
- input 中某些属性的使用
- POI Excel导出样式设置
- 【js】:点击控件从而显示不同的字
- angular-translate国际化中变量替换
- Javascript 严格模式详解