php類別靜態函數和物件的方法回呼說明
#前面一些章節中都是透過全域函數( 沒有在任何物件或類別中定義的函數) 宣告和應用的回呼函數,但如果遇到回呼類別中的靜態方法,或是物件中的普通方法,則會有所不同。 物件導向技術將在本書後面的章節中做詳細介紹,所以對於本節介紹的這種應用方式,可以再後面的學習和應用中有需要時,在回過頭來查閱學習即可。回呼的方法,如果是一個類別的靜態方法或物件中的一個成員方法,那又要怎麼做呢?上一章我們介紹了php函數之回呼函數的call_user_func_array() 函數,可以再來回顧一下 call_user_func_array() 函數的應用。可以將第一個參數 函數名稱字串 改成 陣列類型的參數。
下面透過分別申明一個類,類別中在申明一個靜態成員方法。使用系統函數呼叫類別中的靜態成員方法和實例物件成員方法。
其程式碼如下:
<?php //声明一个类demo,类中声明一个静态成员方法fun() class demo{ static function fun($str1,$str2){ echo "str1 = ".$str1; echo "<br>"; echo "str2 = ".$str2; } } //声明一个类test,类中声明一个静态成员方法fun() class test{ function fun($str1,$str2){ echo "str1 = ".$str1; echo "<br>"; echo "str2 = ".$str2; } } //使用系统函数call_user_func_array(),调用demo类中的静态成员方法fun() call_user_func_array( array("demo","fun"), array("php.cn", "php中文网")); echo "<br>------------------------<br>"; //使用系统函数call_user_func_array(),调用test类中的实例对象成员方法fun() call_user_func_array( array(new test(),"fun"), array("thinkphp","php框架")) ?>
說明:所有使用 call_user_func_array() 函數實作的自訂回呼函數,或php系統中為我們提供的所有回呼函數,都可以像函數一樣,在第一個參數中使用數組類型值,而且數組中必須使用兩個元素:如果呼叫類別中的成員方法,就需要在這個數組參數中指定第一個元素為類別名稱字串,第二個元素則為該類別中的靜態方法名稱字串;如果呼叫物件中的成員方法名稱,則這個陣列中的第一個元素為物件的引用,第二個元素則是該物件中的成員名稱字串。 call_user_func_array() 函數的第二個參數使用量沒有改變。
回呼函數的說明格式總結如下所示,其中callback() 代表所有回呼函數:
1. 回呼全域函數的格式如下所示:
callback("函数名称字符串")
2. 回呼類別中的靜態成員方法的格式如下所示:
callback(array("类名称字符串","类中静态方法名称字符串"))
3. 回呼物件中的成員方法的格式如下所示:
callback(array(对象引用,"对象中方法名称字符串"))
系統為我們提供的回呼函數和我們自訂的回呼函數在調用方法上都是完全相同的。 至此,php函數之回呼函數部分就介紹完畢了。
【相關教學推薦】
3. php實戰影片教學
以上是php函數之回呼函數(三)類別靜態函數與物件的方法回調的詳細內容。更多資訊請關注PHP中文網其他相關文章!