回調函數是指調用函數的時候將另一個函數作為參數傳遞到調用的函數中,而不是傳遞一個普通的變量作為參數
使用回調函數是為了可以將一段自己定義的功能傳到函數內部使用
聲明回調函數的方法
變量函數聲明
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
<?php
function
Calculate(
$num
){
for
(
$i
=0;
$i
<=10;
$i
++){
if
(
$num
(
$i
)){
continue
;
}
echo
$i
.
"nbsp"
;
}
}
function
Number_1(
$a
){
return
$a
%2 == 0;
//打印不能被2整除的數
}
function
Number_2(
$b
){
return
$b
>=6;
//打印小於6的數
}
Calculate(
"Number_1"
);
echo
"<br>"
;
Calculate(
"Number_2"
);
?>
|
執行結果
call_user_func_array()函數
該函數需要兩個參數。
第一個參數是要調用的函數名,第二個參數是數組類型,為參數列表。
參數列表的參數個數要和要調用的函數的參數個數相同
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<?php
function
Speak(
$a
,
$b
){
echo
"He can speak "
.
$a
;
echo
"<br>"
;
echo
"She can speak "
.
$b
;
}
function
Speak_Test(){
return
call_user_func_array(
'Speak'
,
array
(
'Chinese'
,
'English'
));
}
Speak_Test()
?>
|
執行結果
類靜態函數和對象
該方法回調函數也需要用到call_user_func_array()函數
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
<?php
class
Speaking{
static
function
Speak(
$a
,
$b
){
echo
"He can speak "
.
$a
;
echo
"<br>"
;
echo
"She can speak "
.
$b
;
echo
"<br>"
;
}
}
class
Writting{
function
Write(
$a
,
$b
){
echo
"He can write "
.
$a
;
echo
"<br>"
;
echo
"She can write "
.
$b
;
}
}
call_user_func_array(
array
(
"Speaking"
,
"Speak"
),
array
(
"Chinese"
,
"English"
));
call_user_func_array(
array
(
new
Writting(),
'Write'
),
array
(
"German"
,
"Portuguese"
));
?>
|
類中的方法為靜態,回調方法為
call_user_func_array(array("類名","類中的靜態方法"))
類中的方法不為靜態,回調方法為
call_user_func_array(array(對象引用,"對象中方法名"))
執行結果