php擴展動態回調函數的實現(php回調函數怎麼寫)

本文目錄一覽:

php回調函數是什麼樣子的?靠什麼原理運行?

回調函數就是那些自己寫的,但是不是自己來調,而是給別人來掉的函數。

就像下面的odd()和even()函數一樣。

?php

function odd($var)

{

return($var % 2 == 1);

}

function even($var)

{

return($var % 2 == 0);

}

$array1 = array(“a”=1, “b”=2, “c”=3, “d”=4, “e”=5);

$array2 = array(6, 7, 8, 9, 10, 11, 12);

echo “Odd :\n”;

print_r(array_filter($array1, “odd”));//這裡把array1的值依次傳入到odd這個函數裏面,這種方式就稱為回調

echo “Even:\n”;

print_r(array_filter($array2, “even”));

?

下面這個例子實現函數的回調

?

function fnCallBack($msg1, $msg2)

{

echo ‘msg1:’.$msg1;

echo ‘br/’;

echo ‘msg2:’.$msg2;

}

$fnName = ‘fnCallBack’;//函數名

$params = array(‘hello’, ‘world’);//將要傳入到函數裏面的參數

call_user_func_array($fnName, $params);

?

PHP中的回調函數是怎麼實現的?

第一種, 常規的php全局函數

function test($echo)

{

echo $echo, “\n”;

}

$param = array(“”);

call_user_func_array(test, $param);

call_user_func_array(“test”, $param);

輸出:

兩種調用方式都可以成功調用, 說明call_user_func_array調用常規php局函數時的第一個參數可以為函數本身,也可以為表示函數名的字符串。

第二種, 類的靜態方法

class TestC

{

static function test($echo)

{

echo $echo, “\n”;

}

}

$param = array(“”);

call_user_func_array(array(TestC, “test”), $param);

call_user_func_array(array(“TestC”, “test”), $param);

輸出:

這時傳第一個參數的時候傳了一個數據。數組的第一個元素可以為類本身,也可以為類名的一個字符串。第二個元素則是一個表示方法名的字符串。

第三種,對象的方法

class TestC

{

protected $_a = “hello word”;

function test($echo)

{

$this-_a = $echo;

}

function show()

{

echo $this-_a, “\n”;

}

}

$param = array(“”);

$obj = new TestC();

call_user_func_array(array($obj, “test”), $param);

$obj-show();

$obj-test(“WEB應用開發”);

$obj-show();

輸出:

WEB應用開發

這裡是調用一個對象的方法。從test方法中設置對象的_a成員,然後通過show方法將它顯示出來,以驗證call_user_func_array調用方法時可以正確等到$this指針。這裡輸出的結果表明已經上面的方法是奏效的。其實回調對象的方法還有一種更加簡單的方法,直接$obj-{$method}()就可以調用,只要{$method}是存在的。

PHP回調函數及匿名函數概念與用法詳解

PHP的回調函數其實和C,Java等語言的回調函數的作用是一模一樣的,都是在主線程執行的過程中,突然跳去執行設置的回調函數;

回調函數執行完畢之後,再回到主線程處理接下來的流程;

而在PHP調用回調函數,不像C以及Java那樣直接使用函數名作為函數參數,而是在PHP中使用函數對應的字符串名稱執行。

// call_user_func — 把第一個參數作為回調函數調用

// 第一個參數 callback 是被調用的回調函數,其餘參數是回調函數的參數。

// PHP中的匿名函數,也叫閉包函數,允許指定一個沒有名稱的函數。最常用的就是回調函數的參數值。

//檢測一個函數變量是否是一個閉包

// 傳入參數,引用局部變量

PHP中的回調函數是怎麼實現的?

第一種,

常規的php全局函數

function

test($echo)

{

echo

$echo,

“\n”;

}

$param

=

array(“”);

call_user_func_array(test,

$param);

call_user_func_array(“test”,

$param);

輸出:

兩種調用方式都可以成功調用,

說明call_user_func_array調用常規php局函數時的第一個參數可以為函數本身,也可以為表示函數名的字符串。

第二種,

類的靜態方法

class

TestC

{

static

function

test($echo)

{

echo

$echo,

“\n”;

}

}

$param

=

array(“”);

call_user_func_array(array(TestC,

“test”),

$param);

call_user_func_array(array(“TestC”,

“test”),

$param);

輸出:

這時傳第一個參數的時候傳了一個數據。數組的第一個元素可以為類本身,也可以為類名的一個字符串。第二個元素則是一個表示方法名的字符串。

第三種,對象的方法

class

TestC

{

protected

$_a

=

“hello

word”;

function

test($echo)

{

$this-_a

=

$echo;

}

function

show()

{

echo

$this-_a,

“\n”;

}

}

$param

=

array(“”);

$obj

=

new

TestC();

call_user_func_array(array($obj,

“test”),

$param);

$obj-show();

$obj-test(“WEB應用開發”);

$obj-show();

輸出:

WEB應用開發

這裡是調用一個對象的方法。從test方法中設置對象的_a成員,然後通過show方法將它顯示出來,以驗證call_user_func_array調用方法時可以正確等到$this指針。這裡輸出的結果表明已經上面的方法是奏效的。其實回調對象的方法還有一種更加簡單的方法,直接$obj-{$method}()就可以調用,只要{$method}是存在的。

原創文章,作者:GZPN5,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/128386.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
GZPN5的頭像GZPN5
上一篇 2024-10-03 23:25
下一篇 2024-10-03 23:25

相關推薦

  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • Python中capitalize函數的使用

    在Python的字符串操作中,capitalize函數常常被用到,這個函數可以使字符串中的第一個單詞首字母大寫,其餘字母小寫。在本文中,我們將從以下幾個方面對capitalize函…

    編程 2025-04-29
  • QML 動態加載實踐

    探討 QML 框架下動態加載實現的方法和技巧。 一、實現動態加載的方法 QML 支持從 JavaScript 中動態指定需要加載的 QML 組件,並放置到運行時指定的位置。這種技術…

    編程 2025-04-29
  • Python中set函數的作用

    Python中set函數是一個有用的數據類型,可以被用於許多編程場景中。在這篇文章中,我們將學習Python中set函數的多個方面,從而深入了解這個函數在Python中的用途。 一…

    編程 2025-04-29
  • 三角函數用英語怎麼說

    三角函數,即三角比函數,是指在一個銳角三角形中某一角的對邊、鄰邊之比。在數學中,三角函數包括正弦、餘弦、正切等,它們在數學、物理、工程和計算機等領域都得到了廣泛的應用。 一、正弦函…

    編程 2025-04-29
  • 單片機打印函數

    單片機打印是指通過串口或並口將一些數據打印到終端設備上。在單片機應用中,打印非常重要。正確的打印數據可以讓我們知道單片機運行的狀態,方便我們進行調試;錯誤的打印數據可以幫助我們快速…

    編程 2025-04-29
  • Python3定義函數參數類型

    Python是一門動態類型語言,不需要在定義變量時顯示的指定變量類型,但是Python3中提供了函數參數類型的聲明功能,在函數定義時明確定義參數類型。在函數的形參後面加上冒號(:)…

    編程 2025-04-29
  • Python實現計算階乘的函數

    本文將介紹如何使用Python定義函數fact(n),計算n的階乘。 一、什麼是階乘 階乘指從1乘到指定數之間所有整數的乘積。如:5! = 5 * 4 * 3 * 2 * 1 = …

    編程 2025-04-29
  • Python定義函數判斷奇偶數

    本文將從多個方面詳細闡述Python定義函數判斷奇偶數的方法,並提供完整的代碼示例。 一、初步了解Python函數 在介紹Python如何定義函數判斷奇偶數之前,我們先來了解一下P…

    編程 2025-04-29

發表回復

登錄後才能評論