|
call_user_func函數(shù)是當(dāng)需要?jiǎng)討B(tài)調(diào)用函數(shù)時(shí),才使用的,這個(gè)函數(shù)有兩種用法:
第一種是調(diào)用孤獨(dú)的函數(shù):
復(fù)制代碼 代碼如下:<?php
function funa($b,$c)
{
echo $b;
echo $c;
}
call_user_func('funa', "111","222");
call_user_func('funa', "333","444");
//顯示 111 222 333 444
//大家有沒有發(fā)現(xiàn),這個(gè)用法有點(diǎn)像Javascript中的call方法,嘿嘿
?>
第二種是調(diào)用類內(nèi)部的函數(shù):
復(fù)制代碼 代碼如下:<?php
class a {
function b()
{
$args = func_get_args();
$num = func_num_args();
print_r($args);
echo $num;
}
}
call_user_func(array("a", "b"),"111","222");
?>
上面這個(gè)例子,自己運(yùn)行一下看看結(jié)果是什么吧~嘿嘿~提示一下func_get_args()函數(shù)是獲取傳入到函數(shù)中的參數(shù),返回一個(gè)數(shù)組,func_num_args()函數(shù)獲取傳入函數(shù)中的參數(shù)的個(gè)數(shù)。
下面再來看看call_user_func_array函數(shù)
這個(gè)函數(shù)也是當(dāng)需要?jiǎng)討B(tài)調(diào)用函數(shù)時(shí)用到的,它的用法和call_user_func函數(shù)比較像,只是參數(shù)傳入的是數(shù)組。
復(fù)制代碼 代碼如下:<?php
function a($b, $c)
{
echo $b;
echo $c;
}
call_user_func_array('a', array("111", "222"));
//顯示 111 222
?>
call_user_func_array函數(shù)也可以調(diào)用類內(nèi)部的方法的
復(fù)制代碼 代碼如下:<?php
Class ClassA
{
function bc($b, $c) {
$bc = $b + $c;
echo $bc;
}
}
call_user_func_array(array(‘ClassA','bc'), array(“111″, “222″));
//顯示 333
?>
下面再看一個(gè)動(dòng)態(tài)調(diào)用函數(shù)的例子:
復(fù)制代碼 代碼如下:<?php
function otest1 ($a)
{
echo( '一個(gè)參數(shù)' );
}
function otest2 ( $a, $b)
{
echo( '二個(gè)參數(shù)' );
}
function otest3 ( $a ,$b,$c)
{
echo( '三個(gè)啦' );
}
function otest (){
$args = func_get_args();
$num = func_num_args();
call_user_func_array( 'otest'.$num, $args );
}
otest("11");
otest("11","22");
otest("11","22","33");
?>
php技術(shù):PHP 函數(shù)call_user_func和call_user_func_array用法詳解,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。