男女疯狂一边摸一边做羞羞视频|啊好深好硬快点用力别停动态图|亚洲一区无码中文字幕|特级无码毛片免费视频播放▽|久久狠狠躁免费观看|国内精品久久久久久网站

Callback / Callable 類(lèi)型

回調可以通過(guò) callable 類(lèi)型聲明來(lái)表示。

一些函數如 call_user_func()usort() 可以接受用戶(hù)自定義的回調函數作為參數?;卣{函數不止可以是簡(jiǎn)單函數,還可以是對象的方法,包括靜態(tài)類(lèi)方法。

傳遞

PHP是將函數以string形式傳遞的。 可以使用任何內置或用戶(hù)自定義函數,但除了語(yǔ)言結構例如:array(),echo,empty(),eval(),exit(),isset(),list(),printunset()。

一個(gè)已實(shí)例化的 object 的方法被作為 array 傳遞,下標 0 包含該 object,下標 1 包含方法名。 在同一個(gè)類(lèi)里可以訪(fǎng)問(wèn) protected 和 private 方法。

靜態(tài)類(lèi)方法可以不實(shí)例化 object 傳遞,只需要在下標為 0 的位置傳遞類(lèi)名而不是 object ,或者傳遞 'ClassName::methodName'。

回調參數不僅可以使用普通的用戶(hù)自定義函數,也接受 匿名函數箭頭函數。

注意:

從 PHP 8.1.0 開(kāi)始,還可以使用 First-class 可調用語(yǔ)法 創(chuàng )建匿名函數。

通常情況下,任何實(shí)現了 __invoke() 的對象都可以傳入回調參數。

示例 #1 回調函數示例

<?php 

// 回調函數示范
function my_callback_function() {
    echo 
'hello world!';
}

// 回調方法示范
class MyClass {
    static function 
myCallbackMethod() {
        echo 
'Hello World!';
    }
}

// 類(lèi)型 1:簡(jiǎn)單的回調
call_user_func('my_callback_function'); 

// 類(lèi)型 2:靜態(tài)類(lèi)方法回調
call_user_func(array('MyClass''myCallbackMethod')); 

// 類(lèi)型 3:對象方法回調
$obj = new MyClass();
call_user_func(array($obj'myCallbackMethod'));

// 類(lèi)型 4:靜態(tài)類(lèi)方法回調
call_user_func('MyClass::myCallbackMethod');

// 類(lèi)型 5:父級靜態(tài)類(lèi)回調
class {
    public static function 
who() {
        echo 
"A\n";
    }
}

class 
extends {
    public static function 
who() {
        echo 
"B\n";
    }
}

call_user_func(array('B''parent::who')); // A

// 類(lèi)型 6:實(shí)現 __invoke 的對象用于回調
class {
    public function 
__invoke($name) {
        echo 
'Hello '$name"\n";
    }
}

$c = new C();
call_user_func($c'PHP!');
?>

示例 #2 使用 Closure 的示例

<?php
// 閉包
$double = function($a) {
    return 
$a 2;
};

// 這是數字范圍
$numbers range(15);

// 這里使用閉包作為回調,
// 將范圍內的每個(gè)元素數值翻倍
$new_numbers array_map($double$numbers);

print 
implode(' '$new_numbers);
?>

以上例程會(huì )輸出:

2 4 6 8 10

注意:

在函數中注冊有多個(gè)回調內容時(shí)(如使用 call_user_func()call_user_func_array()),如在前一個(gè)回調中有未捕獲的異常,其后的將不再被調用。

男女疯狂一边摸一边做羞羞视频|啊好深好硬快点用力别停动态图|亚洲一区无码中文字幕|特级无码毛片免费视频播放▽|久久狠狠躁免费观看|国内精品久久久久久网站