ホームページ >バックエンド開発 >PHPチュートリアル >PHPでの匿名関数とクロージャの使用法

PHPでの匿名関数とクロージャの使用法

墨辰丷
墨辰丷オリジナル
2018-05-15 14:25:211424ブラウズ

この記事では主にphpにおける匿名関数とクロージャの使い方を紹介します。興味のある方はぜひ参考にしてください。

1: 匿名関数 (php5.3.0以降でのみ使用可能)

phpの匿名関数(匿名関数)は、クロージャ関数(クロージャ)とも呼ばれ、関数を指定せずに関数を指定できます。名前 。最も一般的に使用されるのは、コールバック関数のパラメーター値です。 (http://php.net/manual/zh/functions.anonymous.php)

匿名関数の定義:

$closureFunc = function(){

    ....

 };

例: 匿名関数を変数に割り当て、変数を通じて呼び出します


出力: hello world!



 $closureFunc = function($str){

   echo $str;

  };  $closureFunc("hello world!");

2.2のクロージャは、匿名関数


function closureFunc1(){    $func = function(){        echo "hello";
    };    $func();
}
closureFunc1();//输出: hello
を参照します。


上記関数実行後、このような匿名関数ではローカル変数を使用できないことを示す通知エラーが報告されます。コードは次のとおりです。



function closureFunc2(){    $num = 1;    $func = function() use($num){        echo $num;
    };    $func();
}
closureFunc2();//输出: 1


 2.3  返回匿名函数



function closureFunc3(){    $num = 1;    $func = function() use($num){        echo $num;
    };    return $func;
}$func = closureFunc3(); //函数返回匿名函数$func(); //然后我们在用$func() 调用//输出: 1


2.4 当我们在返回匿名函数时候怎么给匿名函数传参呢? 其实跟普通函数传参数一样



function closureFunc4(){    $num = 1;    $func = function($str) use($num){        echo $num;        echo "\n";        echo $str;
    };    return $func;
}$func = closureFunc4();$func("hello, closure4");//输出:
//1
//hello, closure4


2.5 怎么用闭包来改变上下文引用的变量值?



function closureFunc5(){    $num = 1;    $func = function() use($num) {        echo "\n";        $num++;        echo $num;
    };    echo "\n";    echo $num;    return $func;
}$func = closureFunc5();$func();$func();$func();//输出:
// 1
// 2
// 2
// 2

PHPでの匿名関数とクロージャの使用法

看上面的输入结果,显然没有达到目的, 其实只要加一个 & 引用符号就可以了



function closureFunc5(){    $num = 2;    $func = function() use(&$num) {        echo "\n";        $num++;        echo $num;
    };    echo "\n";    echo $num;    return $func;
}$func = closureFunc5();$func();$func();$func();//输出:
// 2
// 3
// 4
// 5


2.6 把匿名函数当作参数传递



function callFunc($func){    $func("argv");
}

callFunc(function($str){    echo $str;
})//输出:
// argv

相关推荐:

关于JavaScript 闭包的相关知识的了解和使用

js闭包使用详解

关于Python闭包机制的深入理解

以上がPHPでの匿名関数とクロージャの使用法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。