来自:http://ziming.org/archives/6695.html
?
1. call_user_func
<span style="color: #000000; font-weight: bold;">function</span> a<span style="color: #009900;">(</span><span style="color: #000088;">$b</span><span style="color: #339933;">,</span><span style="color: #000088;">$c</span><span style="color: #009900;">)</span><span style="color: #009900;">{</span> <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$b</span><span style="color: #339933;">;</span> <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$c</span><span style="color: #339933;">;</span><span style="color: #009900;">}</span><span style="color: #990000;">call_user_func</span><span style="color: #009900;">(</span><span style="color: #0000ff;">'a'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">"111"</span><span style="color: #339933;">,</span><span style="color: #0000ff;">"222"</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><span style="color: #990000;">call_user_func</span><span style="color: #009900;">(</span><span style="color: #0000ff;">'a'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">"333"</span><span style="color: #339933;">,</span><span style="color: #0000ff;">"444"</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>?<span style="color: #666666; font-style: italic;">//显示 111 222 333 444</span><span style="color: #000000; font-weight: bold;">?></span>?<span style="color: #666666; font-style: italic;">//调用类内部的方法比较奇怪,居然用的是array,不知道开发者是如何考虑的,当然省去了new,也是满有新意的:</span><span style="color: #000000; font-weight: bold;">class</span> a <span style="color: #009900;">{</span> <span style="color: #000000; font-weight: bold;">function</span> b<span style="color: #009900;">(</span><span style="color: #000088;">$c</span><span style="color: #009900;">)</span><span style="color: #009900;">{</span> <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$c</span><span style="color: #339933;">;</span> <span style="color: #009900;">}</span><span style="color: #009900;">}</span><span style="color: #990000;">call_user_func</span><span style="color: #009900;">(</span><span style="color: #990000;">array</span><span style="color: #009900;">(</span><span style="color: #0000ff;">"a"</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">"b"</span><span style="color: #009900;">)</span><span style="color: #339933;">,</span><span style="color: #0000ff;">"111"</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>?<span style="color: #666666; font-style: italic;">//显示 111</span><span style="color: #000000; font-weight: bold;">?></span>
Copier après la connexion
2. call_user_func_array
call_user_func_array函数和call_user_func很相似,只不过是换了一种方式传递了参数,让参数的结构更清晰:
<span style="color: #000000; font-weight: bold;">function</span> a<span style="color: #009900;">(</span><span style="color: #000088;">$b</span><span style="color: #339933;">,</span> <span style="color: #000088;">$c</span><span style="color: #009900;">)</span><span style="color: #009900;">{</span> <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$b</span><span style="color: #339933;">;</span> <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$c</span><span style="color: #339933;">;</span><span style="color: #009900;">}</span><span style="color: #990000;">call_user_func_array</span><span style="color: #009900;">(</span><span style="color: #0000ff;">'a'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">(</span><span style="color: #0000ff;">"111"</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">"222"</span><span style="color: #009900;">)</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>?<span style="color: #666666; font-style: italic;">//显示 111 222</span><span style="color: #000000; font-weight: bold;">?></span>?<span style="color: #666666; font-style: italic;">//call_user_func_array函数也可以调用类内部的方法的</span>?<span style="color: #000000; font-weight: bold;">Class</span> ClassA<span style="color: #009900;">{</span> <span style="color: #000000; font-weight: bold;">function</span> bc<span style="color: #009900;">(</span><span style="color: #000088;">$b</span><span style="color: #339933;">,</span> <span style="color: #000088;">$c</span><span style="color: #009900;">)</span> <span style="color: #009900;">{</span> <span style="color: #000088;">$bc</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$b</span> <span style="color: #339933;">+</span> <span style="color: #000088;">$c</span><span style="color: #339933;">;</span> <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$bc</span><span style="color: #339933;">;</span> <span style="color: #009900;">}</span><span style="color: #009900;">}</span><span style="color: #990000;">call_user_func_array</span><span style="color: #009900;">(</span><span style="color: #990000;">array</span><span style="color: #009900;">(</span><span style="color: #0000ff;">'ClassA'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'bc'</span><span style="color: #009900;">)</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">(</span><span style="color: #0000ff;">"111"</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">"222"</span><span style="color: #009900;">)</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>?<span style="color: #666666; font-style: italic;">//显示 333</span><span style="color: #000000; font-weight: bold;">?></span>
Copier après la connexion
call_user_func函数和call_user_func_array函数都支持引用,这让他们和普通的函数调用更趋于功能一致:
<span style="color: #000000; font-weight: bold;">function</span> a<span style="color: #009900;">(</span><span style="color: #339933;">&</span><span style="color: #000088;">$b</span><span style="color: #009900;">)</span><span style="color: #009900;">{</span> <span style="color: #000088;">$b</span><span style="color: #339933;">++;</span><span style="color: #009900;">}</span><span style="color: #000088;">$c</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span><span style="color: #990000;">call_user_func</span><span style="color: #009900;">(</span><span style="color: #0000ff;">'a'</span><span style="color: #339933;">,</span> <span style="color: #339933;">&</span><span style="color: #000088;">$c</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><span style="color: #b1b100;">echo</span> <span style="color: #000088;">$c</span><span style="color: #339933;">;</span><span style="color: #666666; font-style: italic;">//显示 1</span><span style="color: #990000;">call_user_func_array</span><span style="color: #009900;">(</span><span style="color: #0000ff;">'a'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">(</span><span style="color: #339933;">&</span><span style="color: #000088;">$c</span><span style="color: #009900;">)</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><span style="color: #b1b100;">echo</span> <span style="color: #000088;">$c</span><span style="color: #339933;">;</span><span style="color: #666666; font-style: italic;">//显示 2</span>
Copier après la connexion
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
-
2024-10-22 09:46:29
-
2024-10-13 13:53:41
-
2024-10-12 12:15:51
-
2024-10-11 22:47:31
-
2024-10-11 19:36:51
-
2024-10-11 15:50:41
-
2024-10-11 15:07:41
-
2024-10-11 14:21:21
-
2024-10-11 12:59:11
-
2024-10-11 12:17:31
Derniers numéros
Rubriques connexes
Plus>