PHP中回調(diào)函數(shù)及匿名函數(shù)的示例分析-創(chuàng)新互聯(lián)

這篇文章給大家分享的是有關(guān)PHP中回調(diào)函數(shù)及匿名函數(shù)的示例分析的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

嘉善網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),嘉善網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為嘉善1000+提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)公司要多少錢,請找那個售后服務(wù)好的嘉善做網(wǎng)站的公司定做!

本文實(shí)例講述了PHP回調(diào)函數(shù)及匿名函數(shù)概念與用法。分享給大家供大家參考,具體如下:

1、回調(diào)函數(shù)

PHP的回調(diào)函數(shù)其實(shí)和C、Java等語言的回調(diào)函數(shù)的作用是一模一樣的,都是在主線程執(zhí)行的過程中,突然跳去執(zhí)行設(shè)置的回調(diào)函數(shù);

回調(diào)函數(shù)執(zhí)行完畢之后,再回到主線程處理接下來的流程

而在php調(diào)用回調(diào)函數(shù),不想c以及java那樣直接使用函數(shù)名作為函數(shù)參數(shù),而是在php中使用函數(shù)對應(yīng)的字符串名稱執(zhí)行

1.1、無參數(shù)回調(diào)

<?php
//無參數(shù)回調(diào)
function callback(){
  echo 'execute no parameters callback.<br/>';
}
function main($callback){
  echo 'execute main start.<br/>';
  $callback();
  echo 'execute main end.<br/>';
}
main('callback');
//結(jié)果
ecute main start.
execute no parameters callback.
execute main end.

1.2、全局回調(diào)函數(shù)

<?php
//全局函數(shù)回調(diào)
function callback($a,$b){
  echo "$a<====>$b.<br/>";
}
$func = 'callback';
call_user_func($func, 1,2);
call_user_func_array($func, array(1,2));
//結(jié)果
1<====>2.
1<====>2.

1.3、類方法及靜態(tài)方法回調(diào)

<?php
class Test{
  //成員函數(shù)
  function callback($a,$b){
    echo "callback $a<====>$b.<br/>";
  }
  public static function staticCallback($a,$b){
    echo "staticCallback $a<====>$b.<br/>";
  }
}
//非靜態(tài)方法調(diào)用方式一
$test = new Test();
call_user_func(array($test, 'callback'), 1,2);
call_user_func_array(array($test, 'callback'), array(1,2));
//非靜態(tài)方法調(diào)用方式二
$func = 'callback';
$test->$func(7,9);
//靜態(tài)方法調(diào)用方式
call_user_func(array('Test', 'staticCallback'), 4,6);
call_user_func_array(array('Test', 'staticCallback'), array(4,6));
call_user_func_array("Test::staticCallback", array(4,6));
//結(jié)果
callback 1<====>2.
callback 1<====>2.
callback 7<====>9.
staticCallback 4<====>6.
staticCallback 4<====>6.
staticCallback 4<====>6.

2、匿名函數(shù)

2.1、 php中的匿名函數(shù)(Anonymous functions), 也叫閉包函數(shù)(closures), 允許指定一個沒有名稱的函數(shù)。最常用的就是回調(diào)函數(shù)的參數(shù)值

<?php
$closureFunc = function($str){
  echo $str.'<br/>';
};
$closureFunc("hello world!");
//結(jié)果
hello world!

2.2、閉包

2.2.1、傳入?yún)?shù),引用局部變量

<?php
$closureFunc = function($name){
  $sex = '男';
  $func = function($age)use ($name,$sex){
    echo "$name--$sex--$age<br/>";
  };
  $func(23);
};
$func = $closureFunc("lvfk");
//結(jié)果
lvfk--男--23

2.2.2、返回閉包函數(shù)

<?php
$closureFunc = function($name){
  echo 'closureFunc ';
  $sex = '男';
  echo "$name+++$sex<br/>";
  $func = function()use ($name,$sex){
    echo "$name--$sex<br/>";
  };
  return $func;
};
$func = $closureFunc("lvfk");
$func();
$func();
//結(jié)果
closureFunc lvfk+++男
lvfk--男
lvfk--男

2.2.3、閉包改變上下文的值,需要引用傳遞

<?php
$closureFunc = function($name){
  $age = 1;
  echo "$name+++$age<br/>";
  $func = function()use ($name,&$age){
    $age++;
    echo "$name--$age<br/>";
  };
  return $func;
};
$func = $closureFunc("lvfk");
$func();
$func();
$func();
//結(jié)果
lvfk+++1
lvfk--2
lvfk--3
lvfk--4

感謝各位的閱讀!關(guān)于“PHP中回調(diào)函數(shù)及匿名函數(shù)的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

新聞標(biāo)題:PHP中回調(diào)函數(shù)及匿名函數(shù)的示例分析-創(chuàng)新互聯(lián)
文章分享:http://bm7419.com/article2/dseoic.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)企業(yè)網(wǎng)站制作、App設(shè)計(jì)、微信小程序、域名注冊App開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化