首頁 後端開發 php教程 php中的回呼函數

php中的回呼函數

Jun 28, 2018 pm 02:49 PM

 * 二、2個執行回呼的函數

 * 提示:什麼是回呼?

 * 我們呼叫php系統提供的函數叫直接呼叫,也叫: 直調

 * php系統呼叫使用者自訂的函數,必須透過一個代理函數來呼叫,叫間接呼叫,也叫回呼

 * 我們今天學習的call_user_func()和call_user_func_array()就是這樣的代理函數

 * 可以取代系統來呼叫我們自訂的函數

 * 1.call_user_func_array($callback, $array):使用陣列參數執行回呼函數

* 2.call_user_func($callback, $array):第一個參數作為回呼函數呼叫

 * 注意: 1.回呼中通常不需要寫參數,而是透過其它函數來取得;2.參數不允許使用引用傳遞

//1.參數逐一傳入使用:call_user_func()

//單一參數

echo call_user_func(function(){
    //如果匿名回调没写参数,可以通过func_get_args()获取
    return '欢迎来到'.func_get_arg(0);
},'php中文网');
echo &#39;<hr>&#39;;
echo call_user_func(function($site){
    return &#39;欢迎来到&#39;.$site;
},&#39;php中文网&#39;);
echo &#39;<hr>&#39;;
登入後複製

//多個參數,實參數量與回呼參數數量必須一致,多餘會被忽略

echo call_user_func(function($site,$course){
    return &#39;欢迎来到&#39;.$site.&#39;学习&#39;.$course.&#39;课程&#39;;
},&#39;php中文网&#39;,&#39;php&#39;);
echo &#39;<hr>&#39;;
//支持调用类中的方法做为回调
class Demo1
{
    //普通方法
    public function sum($a, $b)
    {
        return $a+$b;
    }
}
class Demo2
{
    //静态方法
    public static function multi($a,$b)
    {
        return $a*$b;
    }
}
登入後複製

//呼叫普通方法:回呼必須以陣列方式傳入: [物件,'方法名稱']

$obj = new Demo1;
echo call_user_func([$obj,&#39;sum&#39;],10,15);
登入後複製

//php5 .4 以上,可以簡寫:

echo call_user_func([(new Demo1()),&#39;sum&#39;],10,15);
echo &#39;<hr>&#39;;
登入後複製

//呼叫靜態方法:有字串和陣列二種方式

//字串: '類別名稱::方法名稱'

echo call_user_func(&#39;Demo2::multi&#39;,10,15);
登入後複製

//陣列: [類別名稱,'方法名稱']

echo &#39;<hr>&#39;;
echo call_user_func([&#39;Demo2&#39;,&#39;multi&#39;],20,5);
登入後複製

//如果有命名空間,只要在類別名稱前加上命名空間字串就可以了,或者用常數__NAMESPACE__

//理解了call_user_func()那麼call_user_func_array()就非常簡單了,僅僅是參數不同

 * 2.call_user_func_array(callback, array)

 * 只接受二個參數:回呼,索引數組,傳給回呼的參數全部打包到索引數組中

 * 與call_user_func(array,arg1...)不同之處僅傳遞參數方式不同

 * 回呼同樣支援:字串函數名稱,類別名稱,陣列,匿名函數

echo &#39;<hr>&#39;;
echo call_user_func_array(function(){
    //查看传递给回调的参数
//    return print_r(func_get_args(),true);
    
    $msg = &#39;前端开发的基础知识包括:&#39;;
    //遍历参数数组
    foreach (func_get_args() as $value) {
        $msg .= $value.&#39;,&#39;;
    }
    //去掉未尾逗号,并替换成感叹号
    return rtrim($msg,&#39;,&#39;).&#39;!&#39;;
    
}, [&#39;html&#39;,&#39;css&#39;,&#39;javascript&#39;]);
echo &#39;<hr>&#39;;
class Demo3
{
    public function func1()
    {
        return __METHOD__.&#39;<pre class="brush:php;toolbar:false">&#39;.print_r(func_get_args(),true).&#39;
'; } } class Demo4 { public static function func2() { return __METHOD__.'
&#39;.print_r(func_get_args(),true).&#39;
'; } }
登入後複製

//回呼類別中的方法

echo call_user_func_array([(new Demo3),&#39;func1&#39;], [&#39;php&#39;,&#39;java&#39;,&#39;c&#39;]);
登入後複製

//呼叫靜態方法的回呼:

//1.使用陣列參數方式

echo call_user_func_array([&#39;Demo4&#39;,&#39;func2&#39;], [&#39;html&#39;,&#39;css&#39;,&#39;jQuery&#39;]);
登入後複製

//2.使用字串參數方式

echo call_user_func_array(&#39;Demo4::func2&#39;, [&#39;html&#39;,&#39;css&#39;,&#39;jQuery&#39;]);
登入後複製

//如果有命名空間,只需要在類別名稱前加上命名空間或__NAMESPACE__即可

以上是php中的回呼函數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1321
25
PHP教程
1269
29
C# 教程
1249
24
java回呼函數怎麼寫 java回呼函數怎麼寫 Jan 09, 2024 pm 02:24 PM

java回調函數的寫法有:1、接口回調,定義一個接口,其中包含一個回調方法,在需要觸發回調的地方,使用該接口作為參數,並在合適的時機調用回調方法;2、匿名內部類回調,可以使用匿名內部類別來實現回調函數,避免創建額外的實作類別;3、Lambda表達式回調,在Java 8以上版本中,可以使用Lambda表達式來簡化回調函數的寫法等。

如何透過php函數優化圖片懶加載效果? 如何透過php函數優化圖片懶加載效果? Oct 05, 2023 pm 12:13 PM

如何透過PHP函數優化圖片懶載入效果?隨著網路的發展,網頁中的圖片數量越來越多,這給頁面載入速度帶來了壓力。為了提高使用者體驗,減少載入時間,我們可以採用圖片懶載入技術。圖片懶加載可以延遲圖片的加載,只有當用戶滾動到可視區域時才加載圖片,這樣可以減少頁面的加載時間,提升用戶體驗。在編寫PHP網頁時,我們可以透過寫一些函數來優化圖片懶載入效果。下面詳

如何透過php函數來減少記憶體的使用? 如何透過php函數來減少記憶體的使用? Oct 05, 2023 pm 01:45 PM

如何透過PHP函數來減少記憶體的使用在開發中,記憶體的使用是一個很重要的考量。如果在程式中使用大量的內存,可能會導致運行速度變慢甚至程式崩潰。因此,合理地管理和減少記憶體的使用是每個PHP開發者都應該關注的問題。本文將介紹一些透過PHP函數來減少記憶體使用的方法,並提供具體的程式碼範例供讀者參考。使用unset()函數釋放變數在PHP中,當一個變數不再需要時,使用

Java中回呼函數的基本語法與應用 Java中回呼函數的基本語法與應用 Jan 30, 2024 am 08:12 AM

Java回呼函數的基本寫法和使用方法引言:在Java程式設計中,回呼函數是一種常見的程式模式,透過回呼函數,可以將某個方法作為參數傳遞給另一個方法,從而實現方法的間接呼叫。回調函數的使用,在事件驅動、非同步程式設計和介面實作等場景中非常常見。本文將介紹Java回呼函數的基本寫法和使用方法,並提供具體的程式碼範例。一、回呼函數的定義回呼函數是一種特殊的函數,它可以作為參數

PHP影像處理函數實現圖片編輯和處理功能的方法總結 PHP影像處理函數實現圖片編輯和處理功能的方法總結 Nov 20, 2023 pm 12:31 PM

PHP影像處理函數是一組專門用於處理和編輯影像的函數,它們為開發人員提供了豐富的影像處理功能。透過這些函數,開發人員可以實現圖片的裁剪、縮放、旋轉、浮水印添加等操作,從而滿足不同的圖片處理需求。首先,我將介紹如何使用PHP影像處理函數來實現圖片的裁切功能。 PHP提供了imagecrop()函數,可以用來裁切影像。透過傳遞裁剪區域的座標和大小,我們可以實現圖片的裁

分析常見的Python回呼函數應用場景 分析常見的Python回呼函數應用場景 Feb 02, 2024 pm 09:34 PM

Python中常見的回呼函數應用場景分析,需要具體程式碼範例回呼函數是指在程式設計中,將一個函數作為參數傳遞給另一個函數,並在某個特定的事件發生時執行這個參數函數。回呼函數廣泛應用於非同步程式設計、事件處理、GUI程式設計等領域。本文將分析Python中常見的回呼函數應用場景,並給出相關的具體程式碼範例。非同步程式設計在非同步程式設計中,回呼函數常用於處理非同步任務的結果。當需要執行一個耗

PHP函數介紹:strtr()函數 PHP函數介紹:strtr()函數 Nov 03, 2023 pm 12:15 PM

PHP函數介紹:strtr()函數在PHP程式設計中,strtr()函數是一個非常有用的字串替換函數。它用於將字串中的指定字元或字串替換為其他字元或字串。本文將介紹strtr()函數的用法,並給出一些具體的程式碼範例。 strtr()函數的基本語法如下:strtr(string$str,array$replace)其中,$str是要進行替換運算的原始字

PHP函數的效能如何? PHP函數的效能如何? Apr 18, 2024 pm 06:45 PM

不同PHP函數的效能對應用程式效率至關重要。效能較好的函數包括echo、print,而str_replace、array_merge、file_get_contents等函數效能較慢。例如,str_replace函數用於替換字串,性能中等,而sprintf函數用於格式化字串。效能分析表明,執行一個範例僅需0.05毫秒,證明了函數效能良好。因此,明智地使用函數可以建立更快、更有效率的應用程式。

See all articles