PHP 5.3でのプログラミング

PHP 5.3で私たちを待っている新機能について聞いたことがあるかもしれませんが、実際のプログラミングでそれらを使用できる場所を誰が知っていますか? 私はそれらを研究するために少し時間を費やし、いくつかの例を挙げることにしました。

ラムダ関数とクロージャー。



これらは、大きな違いがない匿名関数です。 これらの関数は、通常の関数よりも柔軟性があり、変数に書き込んだり、必要な場所で定義したりできます。5.3より前のPHPでも匿名関数を使用できます。 create_function()関数を使用して作成できます。 しかし、それはかさばり、く、信頼性がありません。 PHP 5.3では、これをより自然で美しい方法で行うことができます。

ラムダ関数

使用例:

<?php<br>$lamda = function() { print “Hello World!”; }<br><br>$lamda();<br><br>call_user_func($lamda);<br>call_user_func_array($lamda,array());<br>?><br><br><?php<br>$list = array(22,4,19,78);<br>usort(<br> $list,<br> function($a,$b){<br> if ($a==$b) return 0;<br> return ($a < $b)?-1:1;<br> }<br>);<br>print_r($list);<br><br>print_r(array_map(<br> function ($sn){ return ($n * $n * $n);},<br> array(1,2,3,4,5,6)<br>));<br>?><br> <br> * This source code was highlighted with Source Code Highlighter .



短絡

使用例:

<?php

$ string = “Hello World!”;

$closure = function() use ($ string ) {print $ string ; };

$closure();

?>

<?php

function getClosure(){

$ string = “Hello World!”;

return function() use ($ string ) {print $ string ; };

}

$closure = getClosure();

$closure();

?>




* This source code was highlighted with Source Code Highlighter .




use()とグローバルの使用の違い



use()の代わりに、グローバルを使用した方が良いことを提案できます。 はい、もちろん、単純なケースでは特定の手法の使用は同じですが、他のケースもあります。関数があり、その中にローカル変数があると想像してください。 そして、この変数をクロージャーで使用したいと思います。 この場合、use()演算子を使用する必要があります。 グローバルを使用した場合、クロージャーは$ globals配列を検索し、変数を見つけられません。 use()を使用すると、ローカル変数をクロージャーの本体で使用できます。

その他のユースケース

そして最後に



ご覧のとおり、クロージャーとラムダ関数は、使用方法を知っていれば非常に便利です。 もちろん、PHP 5.3までにもう少し待たなければならないのは残念です。 しかし、私たちは、切望されている技術革新に対してPHP開発者に敬意を表さなければなりません。



All Articles