先贴代码,代码精简了。

$invoker_function($argus);}}?>

描述:

程序是在ThinkPHP开发,目的是把Cache的get方法接收的参数转发到指定的方法上,

最后一行:其中D方法是ThinkPHP自带的方法用的是单例模式。如果不加参数$argus是可以正常调用的。

问题:

现在想传递参数,比如get("name","age"),完整的传递到 D($invoker_class)->$invoker_function(“name”,"age")上,有什么办法。

call_user_func 看起来像是可以,不过看不出来怎么用。

求解。

回复讨论(解决方案)

call_user_func_array(array(D($invoker_class), $invoker_function), $argus);

call_user_func_array(array(D($invoker_class), $invoker_function), $argus);

哈哈,谢谢斑竹,发帖前测试一直不成功原来是因为call_user_func_array的第二个参数必须使用数组,如果不使用数组就会没有任何反映。。

最后完整的代码如下::代码烂,见谅。。

CacheModel.class.php Cache模型文件

caculate($argus);$base_str= md5($str);if($this->cache_arr[$invoker_class][$invoker_function]["key"] == $base_str){echo "命中cache 没有查询";//命中cachereturn $this->cache_arr[$invoker_class][$invoker_function]["value"];}$new_invoker_class= str_replace("Model","", $invoker_class);$new_invoker_function= $invoker_function."_setCache";$rs = call_user_func_array(array(D($new_invoker_class), $new_invoker_function), $argus);$this->cache_arr[$invoker_class][$invoker_function]["key"] = $base_str;$this->cache_arr[$invoker_class][$invoker_function]["value"] = $rs;return $rs;}/** * * 递归计算所有的参数,判定参数是否发生改变 */private function caculate(&$argus){$str = "";foreach ($argus as $key => $value){if(is_array($value)){$str .= $this->caculate($argus[$key]);}else{$str .= $value;}}return $str;}}?>

测试模型

TestModel.class.php

cache = D("Cache");}public function run($a,$b,$c){return $this->cache->get($a,$b,$c);}public function run_setCache($a,$b,$c){return "设定3参数预定值

";}public function run2(){return $this->cache->get();}public function run2_setCache(){return "设定空预定值

";}}?>

测试用例

TestAction.class.php

run("a","b","c");echo $test->run("a","b","c");echo $test->run("a","b","c");$test2 = D("Test");echo $test2->run("a","b","c");echo $test2->run2();echo $test2->run2();echo $test2->run2();}}?>

测试结果:

设定3参数预定值命中cache 没有查询设定3参数预定值命中cache 没有查询设定3参数预定值命中cache 没有查询设定3参数预定值设定空预定值命中cache 没有查询设定空预定值命中cache 没有查询设定空预定值

达到预定设想,,谢谢斑竹解答。

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

php 动态参数,php怎么实现动态传参数?相关推荐

  1. php判断参数_php检查函数必传参数是否存在的实例详解

    php检查函数必传参数是否存在的实例详解 在php实际编程中,接口经常会接收到前端传来的参数,其中有些参数不是必传的,有些参数是必传的,如何"检查函数必传参数是否存在"呢?为了解决 ...

  2. php http传参数,http - PHP的URL传参数(英文句号变成了下划线)的问题,求解释。...

    GET参数里面的.号(英文的句号)会变成_(英文的下划线). 我仔细分析了这个问题,发现确实是这样. 在线测试地址: http://moonlordapi.sinaapp.com/test.php?. ...

  3. jsx怎么往js里传参数_给js文件传参数(详解)

    一.利用全局变量 这是最简单的一种方式,比如Google Adsense: 缺点是引入了全局变量.其中引入文件的方式还有两个变体: // 变体1:用document.write输出 document. ...

  4. uploadify 3.2 后台动态传参数

    最近在弄一个上传的小功能,需要往后台传递一些动态参数,网上有一些传参数可能是因为版本不对也没成功.仔细看了官网的一些说明,搞定了. 3.2中传递参数用的的是'formData':{'somekey': ...

  5. .net前台ajax,asp.net利用Ajax和Jquery在前台向后台传参数并返回值

    1----------前台 首先需要 Jquer的包 下面是 $(function () { $('#txtUserName').blur(function () { var username = $ ...

  6. oracle存储过程传整数,oracle存储过程传参数

    场景:Oracle存储过程传参数有关问题 Oracle存储过程传参数问题 在存储过程当中传参数的时候可以使用 IF SDATE IS NOT NULL OR EDATE IS NOT NULL THE ...

  7. python中自定义函数如何传递动态参数_python 函数的动态参数

    1. 函数的动态参数 1. *args 位置参数动态传参 2. **kwargs 关键字参数动态传参 顺序:位置参数, *args, 默认值, **kwargs def func(*args, **k ...

  8. C语言通过函数参数不能带出动态内存的例子。

    实验结论:通过函数参数不能带出动态内存,函数参数虽然为指针,其实是在函数内部的临时变量,只是该指针的初始值是通过调用函数赋值的.C语言函数参数都是传值的. #include <stdio.h&g ...

  9. Jenkins 流水线 获取git 分支列表_使用Jenkins Git参数实现分支标签动态选择

    1.1 为什么要使用GIT参数? 我们为什么要使用 git参数呢? 每个项目代码库都会有不同的分支,(如果你没有用多分支流水线的情况下)对于普通的流水线项目我们可以 让一条流水线来支持多个分支的发布, ...

  10. oracle 执行带参数的sql语句_当用EXECUTE IMMEDIATE执行SQL语句中的参数个数也是动态的?用什么方法实现?...

    当用EXECUTE IMMEDIATE执行SQL语句中的参数个数也是动态的?用什么方法实现? 描述详细一点就是:在要执行的SQL语句中所用到(: parameter)这种参数的个数,因具体条件不同,而 ...

最新文章

  1. (cljs/run-at (JSVM. :all) Metadata就这样哦)
  2. windows 2012 r2 x64 安装IIS注意事项
  3. 谷歌大脑科学家亲解 LSTM:一个关于“遗忘”与“记忆”的故事 本文作者:奕欣 2017-01-14 09:46 导语:AI科技评论保证这是相对通俗易懂的一篇入门介绍了,看不懂的话欢迎关注「AI 科技
  4. 【新星计划】MATLAB绘制图形
  5. Flink 助力美团数仓增量生产
  6. 用多媒体库 Bass.dll 播放 mp3 [8] - 实时显示左右声道的峰值
  7. mysql对表中添加属性_菜鸟笔记—数据分析师MySQL篇(一)
  8. 设置axios默认访问前缀
  9. 便携本市场一片混乱 东芝也加入战斗
  10. 51Testing第五期电子杂志下载
  11. 真不好意思,关于小猪妹(妖精)的
  12. iOS底层探索之多线程(七)—GCD源码分析(死锁的原因)
  13. linux svn备份,SVN完全备份svnadmin hotcopy
  14. 瘦AP如何连接到无线控制器AC
  15. ifconfig command not found
  16. java.lang.IllegalArgumentException介绍
  17. 如何在智星云主机配置 conda 和 pip 源
  18. 基于Litepal数据库开发的记事软件
  19. CSR8670/CSR8675多国语言字库显示逻辑
  20. 给整个Scratch作品加密

热门文章

  1. Diango博客--11.Nginx + Gunicorn + Supervisor 方式部署
  2. python pip install指定国内源镜像
  3. JDBC笔记02-数据库连接池 Spring JDBC
  4. Django/Flask/Tornado三大web框架性能分析
  5. JSON(JavaScript Object Notation) 格式
  6. Linux基本操作【作业】
  7. pvrect r语言 聚类_R语言实现KEGG通路富集可视化
  8. postgis 导出 栅格_postgis常见的空间数据的导入导出
  9. java 将要死亡_人在即将死亡的时候,能意识到自己将要死亡了吗?科学家给出答案...
  10. Linux进程全解4——fork创建子进程