即時學習php 即時通訊我試圖添加一個帶有註釋的日誌到我的函數輸出。 現在它看起來是這樣的:如何以其他函數作爲參數調用函數
//the function
function add1($x){
if($GLOBALS['logging'] === 'on'){ $log[] = 'Adding 1 to '.$x;};
$a = $x + 1;
if($GLOBALS['logging'] === 'on'){
$return[] = $a;
$return[] = $log;
return $return;
}else{ return $a; };
};
//calling the function
if($GLOBALS['logging'] === 'on'){
$return = add1($x);
$number = $return[0];
$log = $return[1];
}else{ $number = add1($x); };
林有點的事實,我需要的if語句重新鍵入此惱火。 所以我做了一個單獨的函數返回函數 看起來像這樣:
//function
function log_return($data = 'x', $log = 'x'){
if($GLOBALS['logging'] === 'on'){
if($data !== 'x') $return[] = $data;
if($log !== 'x') $return[] = $log;
return $return;
} return $data;
};//function end
而且隨着其返回:
return $return = isset($log) ? log_return($data, $log) : log_return($data);
現在我quastion是:有沒有一種方法來調用一個函數功能.. 像:
call_function(add1($x));
,所以我可以用任何日誌或不回吧..
可能的重複:https://stackoverflow.com/questions/2700433/accept-function-as-parameter-in-php – ChickenFeet
不要使用$ GLOBALS。將你需要的參數傳遞給你的函數。這是更安全的自我記錄,並且可以捕獲錯誤,特別是如果您使用現在可在PHP中使用的類型提示。 – gview
這就是許多框架圍繞依賴注入模式構建的原因。我強烈建議:http://fabien.potencier.org/what-is-dependency-injection.html – gview