1. 程式人生 > >PHP函數(五)-回調函數

PHP函數(五)-回調函數

函數 個數 sta 需要 chinese arr 相同 call english

回調函數是指調用函數的時候將另一個函數作為參數傳遞到調用的函數中,而不是傳遞一個普通的變量作為參數

使用回調函數是為了可以將一段自己定義的功能傳到函數內部使用

聲明回調函數的方法

變量函數聲明

<?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()函數

該函數需要兩個參數。

第一個參數是要調用的函數名,第二個參數是數組類型,為參數列表。

參數列表的參數個數要和要調用的函數的參數個數相同

<?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()函數

<?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(對象引用,"對象中方法名"))

執行結果

技術分享圖片


·

PHP函數(五)-回調函數