日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > php >内容正文

php

函数 php_PHP回调函数及匿名函数概念与用法详解

發(fā)布時間:2025/3/19 php 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 函数 php_PHP回调函数及匿名函数概念与用法详解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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

以上就是對閉包的簡單應(yīng)用,通過閉包,可以看出在函數(shù)外面使用閉包,傳入閉包的參數(shù)內(nèi)容,實(shí)際上可以是上下文對象內(nèi)容,

也可以在閉包內(nèi)更改上下文對象值,但必須是引用傳遞

以上內(nèi)容希望幫助到大家,很多PHPer在進(jìn)階的時候總會遇到一些問題和瓶頸,業(yè)務(wù)代碼寫多了沒有方向感,不知道該從那里入手去提升,對此我整理了一些資料,包括但不限于:分布式架構(gòu)、高可擴(kuò)展、高性能、高并發(fā)、服務(wù)器性能調(diào)優(yōu)、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql優(yōu)化、shell腳本、Docker、微服務(wù)、Nginx等多個知識點(diǎn)高級進(jìn)階干貨需要的可以免費(fèi)分享給大家,需要戳這里PHP進(jìn)階架構(gòu)師>>>視頻、面試文檔免費(fèi)獲取

或 者關(guān)注我每天分享技術(shù)文章

進(jìn)階PHP架構(gòu)師?www.zhihu.com

總結(jié)

以上是生活随笔為你收集整理的函数 php_PHP回调函数及匿名函数概念与用法详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。