教学之友,学习之友。

站长教学网

当前位置: 站长教学网 > 网站编程 > PHP教程 >

php自带函数call_user_func/call_user_func_array调用用户自定义函数

时间:2012-12-08 20:23来源:未知 作者:ken 点击:

看UCenter的时候有一个函数call_user_func,百思不得其解,因为我以为是自己定义的函数,结果到处都找不到,后来百度了一下才知道call_user_func是内置函数,该函数允许用户调用直接写的函数并传入一定的参数,不可谓不强大,总结一下,写到这篇日志里面吧。

 先放上来别人的例子吧:

  1.  call_user_func函数类似于一种特别的调用函数的方法,使用方法如下:     
  2.  
  3. function a($b,$c)     
  4.  
  5. {     
  6.  
  7. echo $b;     
  8.  
  9. echo $c;     
  10.  
  11. }     
  12.  
  13. call_user_func('a'"111","222");     
  14.  
  15. call_user_func('a'"333","444");     
  16.  
  17. //显示 111 222 333 444     
  18.  
  19. ?>     
  20.  
  21.     
  22.  
  23. 调用类内部的方法比较奇怪,居然用的是array,不知道开发者是如何考虑的,当然省去了new,也是满有新意的:     
  24.  
  25. class a {     
  26.  
  27. function b($c)     
  28.  
  29. {     
  30.  
  31. echo $c;     
  32.  
  33. }     
  34.  
  35. }     
  36.  
  37. call_user_func(array("a""b"),"111");     
  38.  
  39. //显示 111     
  40.  
  41. ?>     
  42.  
  43.     
  44.  
  45. call_user_func_array函数和call_user_func很相似,只不过是换了一种方式传递了参数,让参数的结构更清晰:     
  46.  
  47. function a($b$c)     
  48.  
  49. {     
  50.  
  51. echo $b;     
  52.  
  53. echo $c;     
  54.  
  55.     
  56.  
  57. }     
  58.  
  59. call_user_func_array('a'array("111""222"));     
  60.  
  61. //显示 111 222     
  62.  
  63. ?>     
  64.  
  65.     
  66.  
  67. call_user_func_array函数也可以调用类内部的方法的     
  68.  
  69.     
  70.  
  71. Class ClassA     
  72.  
  73. {     
  74.  
  75.     
  76.  
  77. function bc($b$c) {     
  78.  
  79.      $bc = $b + $c;     
  80.  
  81. echo $bc;     
  82.  
  83. }     
  84.  
  85. }     
  86.  
  87. call_user_func_array(array('ClassA','bc'), array("111""222"));     
  88.  
  89.     
  90.  
  91. //显示 333     
  92.  
  93. ?>     
  94.  
  95.     
  96.  
  97. call_user_func函数和call_user_func_array函数都支持引用,这让他们和普通的函数调用更趋于功能一致:     
  98.  
  99. function a($b)     
  100.  
  101. {     
  102.  
  103. $b++;     
  104.  
  105. }     
  106.  
  107. $c = 0;     
  108.  
  109. call_user_func('a'$c);     
  110.  
  111. echo $c;//显示 1     
  112.  
  113. call_user_func_array('a'array($c));     
  114.  
  115. echo $c;//显示 2    
  116.  

另:call_user_func函数和call_user_func_array函数都支持引用。站长教学网 eduyo.com

<?php
function increment(&$var)
{
    $var++;
}

$a = 0;
call_user_func('increment', $a);
echo $a; // 0

call_user_func_array('increment', array(&$a)); // You can use this instead
echo $a; // 1
?>

(责任编辑:ken)
TAG标签: php,函数 call_user_fu call_user_fu
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
注册登录:不允许匿名留言,登录后留言无需输入验证码。
栏目列表
最新内容