PHP基礎(chǔ)之函數(shù)7——?jiǎng)討B(tài)調(diào)用函數(shù)
(PHP 4, PHP 5)
call_user_func?—?傳入一個(gè)參數(shù)來調(diào)用回調(diào)函數(shù)
說明mixed?call_user_func?(?callable?$callback?[,?mixed?$parameter?[,?mixed?$...?]] )Calls the?callback?given by the first parameter and passes the remaining parameters as arguments.
參數(shù)callbackThe?callable?to be called.parameterZero or more parameters to be passed to the callback.Note:
Note that the parameters for?call_user_func()?are not passed by reference.
Example #1?call_user_func()?example and references
<?phperror_reporting(E_ALL);function?increment(&$var){????$var++;}$a?=?0;call_user_func(’increment’,?$a);echo?$a.'n';call_user_func_array(’increment’,?array(&$a));?//?You?can?use?this?instead?before?PHP?5.3echo?$a.'n';?>以上例程會(huì)輸出:
01?返回值
Returns the return value of the callback, or?FALSE?on error.
?范例Example #2?call_user_func()?example
<?phpfunction?barber($type){????echo?'You?wanted?a?$type?haircut,?no?problemn';}call_user_func(’barber’,?'mushroom');call_user_func(’barber’,?'shave');?>以上例程會(huì)輸出:
You wanted a mushroom haircut, no problemYou wanted a shave haircut, no problem
Example #3?call_user_func()?using namespace name
<?phpnamespace?Foobar;class?Foo?{????static?public?function?test()?{????????print?'Hello?world!n';????}}call_user_func(__NAMESPACE__?.’Foo::test’);?//?As?of?PHP?5.3.0call_user_func(array(__NAMESPACE__?.’Foo’,?’test’));?//?As?of?PHP?5.3.0?>以上例程會(huì)輸出:
Hello world!Hello world!
Example #4 Using a class method with?call_user_func()
<?phpclass?myclass?{????static?function?say_hello()????{????????echo?'Hello!n';????}}$classname?=?'myclass';call_user_func(array($classname,?’say_hello’));call_user_func($classname?.’::say_hello’);?//?As?of?5.2.3$myobject?=?new?myclass();call_user_func(array($myobject,?’say_hello’));?>以上例程會(huì)輸出:
Hello!Hello!Hello!
Example #5 Using lambda function with?call_user_func()
<?phpcall_user_func(function($arg)?{?print?'[$arg]n';?},?’test’);?/*?As?of?PHP?5.3.0?*/?>以上例程會(huì)輸出:
[test]call_user_func_array
(PHP 4 >= 4.0.4, PHP 5)
call_user_func_array?— 傳入一個(gè)參數(shù)數(shù)組來調(diào)用回調(diào)函數(shù)
說明mixed?call_user_func_array?(?callable?$callback?,?array?$param_arr?)Calls the?callback?given by the first parameter with the parameters in?param_arr.
參數(shù)callbackThe?callable?to be called.param_arrThe parameters to be passed to the callback, as an indexed array.返回值Returns the return value of the callback, or?FALSE?on error.
范例Example #1?call_user_func_array()?example
<?phpfunction?foobar($arg,?$arg2)?{????echo?__FUNCTION__,?'?got?$arg?and?$arg2n';}class?foo?{????function?bar($arg,?$arg2)?{????????echo?__METHOD__,?'?got?$arg?and?$arg2n';????}}//?Call?the?foobar()?function?with?2?argumentscall_user_func_array('foobar',?array('one',?'two'));//?Call?the?$foo->bar()?method?with?2?arguments$foo?=?new?foo;call_user_func_array(array($foo,?'bar'),?array('three',?'four'));?>以上例程的輸出類似于:
foobar got one and twofoo::bar got three and four
Example #2?call_user_func_array()?using namespace name
<?phpnamespace?Foobar;class?Foo?{????static?public?function?test($name)?{????????print?'Hello?{$name}!n';????}}//?As?of?PHP?5.3.0call_user_func_array(__NAMESPACE__?.’Foo::test’,?array(’Hannes’));//?As?of?PHP?5.3.0call_user_func_array(array(__NAMESPACE__?.’Foo’,?’test’),?array(’Philip’));?>以上例程的輸出類似于:
Hello Hannes!Hello Philip!
Example #3 Using lambda function
<?php$func?=?function($arg1,?$arg2)?{????return?$arg1?*?$arg2;};var_dump(call_user_func_array($func,?array(2,?4)));?/*?As?of?PHP?5.3.0?*/?>以上例程會(huì)輸出:
int(8)
相關(guān)文章:
1. python實(shí)現(xiàn)讀取類別頻數(shù)數(shù)據(jù)畫水平條形圖案例2. 概述IE和SQL2k開發(fā)一個(gè)XML聊天程序3. 詳解JSP 內(nèi)置對象request常見用法4. 使用Spry輕松將XML數(shù)據(jù)顯示到HTML頁的方法5. chat.asp聊天程序的編寫方法6. 利用CSS3新特性創(chuàng)建透明邊框三角7. JSP的Cookie在登錄中的使用8. ASP實(shí)現(xiàn)加法驗(yàn)證碼9. CSS3實(shí)現(xiàn)動(dòng)態(tài)翻牌效果 仿百度貼吧3D翻牌一次動(dòng)畫特效10. asp批量添加修改刪除操作示例代碼
