亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PHP 執行函數作為函數的參數

PHP 執行函數作為函數的參數

PHP
UYOU 2022-06-11 09:49:45
在 PHP 中是否可以將執行的函數作為函數的參數傳遞,以便函數的結果將被移交而不是回調函數對象?無需觸及范圍功能(沒有 eval 或額外的魔法執行)。比方說,我要給函數的參數不清楚。因此,在賦予該功能之前必須對此做出決定。目前這總是看起來像這樣:$tmp = ($something == $bla)?42:7;myFunction($tmp);對于這么短的決定,它不是那么成問題。但有時有兩種以上的可能性。所以需要一個 if-elseif,或者一個 switch-case。但是像這樣放一些東西會更干凈:myFunction(function(){    if(...){ return 42; }    elseif(...){ return 7; }    elseif(...){ return 5; }    elseif(...){ return 12; }    else{ return 1; }});因此,無需先將其保存到變量中。只是為了更簡潔的代碼,更少$tmp或$trash變量。
查看完整描述

2 回答

?
HUWWW

TA貢獻1874條經驗 獲得超12個贊

匿名函數變量函數應該是您正在尋找的:

匿名函數,也稱為閉包,允許創建沒有指定名稱的函數。它們作為回調參數的值最有用,但它們還有許多其他用途。

匿名函數使用 Closure 類實現

還有一個代碼示例:

<?php

$greet = function($name)

{

    printf("Hello %s\r\n", $name);

};


$greet('World');

$greet('PHP');

?>

還有一個代碼示例,為了完整起見,關于如何將函數名作為參數傳遞,并在后面調用它:


<?php


function here() {

  print 'here';

}



function dynamo($name) {

 $name();

}


//Will work

dynamo('here');

//Will fail

dynamo('not_here');


查看完整回答
反對 回復 2022-06-11
?
海綿寶寶撒

TA貢獻1809條經驗 獲得超8個贊

所以隨著對匿名函數的理解(感謝Lucas Meine),我發現你可以直接執行一個函數,方法是用括號括起來,后面跟著參數括號,這取決于你是否想給低級函數一些主要上下文之外的變量。


在以下所有示例中,輸出var_dump為42。


沒有可變參數的例子

// the function that should later be called

function myFunction($test){

    var_dump($test);

}


// function call with a executed function as parameter

myFunction((function(){

    return 42;

})());

帶有可變參數的示例

$someVar = 42;


function myFunction($test){

    var_dump($test);

}


myFunction((function($tmp){

    return $tmp;

})($someVar));

或與use聲明


$someVar = 42;


function myFunction($test){

    var_dump($test);

}


myFunction((function() use ($someVar){

    return $someVar;

})());


查看完整回答
反對 回復 2022-06-11
  • 2 回答
  • 0 關注
  • 219 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號