在 JavaScript 有所謂的匿名函式,但在 php 是否也有呢?
看到一段滿特別的程式碼
關於call_user_func 與 switch (true) 的使用,將用法稍做整理,程式碼如下:
$rs = call_user_func(function()
{
switch(true)
{
case ( ($_GET['a'] == 1) && ($_GET['b'] == 2) ):
case "其它相同的處理條件1":
case "其它相同的處理條件2":
$rtn = 1;
break;
case ( ($_GET['a'] == 1) && ($_GET['b'] == 3) ):
case "其它相同的處理條件3":
case "其它相同的處理條件4":
$rtn = 2;
break;
default:
$rtn = -1;
break;
}
return $rtn;
}
);
//補充 : endforeach 的寫法,沒有使用括孤
foreach($array as $element):
#do something
endforeach;
如果該函式使用了很多變數名稱或宣告了很多變數資源
是否使用這種匿名函式的方式,可以在結束時,也一起釋放了所使用的資源呢?
個人覺得....應該會~~~~吧(未證實,就參考看看囉)
至於 switch (true) 的寫法
在我個人的使用心得,(以不去計較是否和 elseif 效能上是否有 微微微微微秒的差異 )
我想,某程度上,在程式碼的"閱讀"及"維護"上,應該是有加分的!!
在Javascript或是PHP,都可以用匿名函數做出Closure,不過在PHP中,使用到的變數需要用use來宣告,這樣比Javascript囉嗦,但是比較不會有意外。