私はこのようなコードを見つけましたが、それが何をするのかわかりません
$callback = function ($pricePerItem) use ($tax, &$total) {
$total += $pricePerItem * ($tax + 1.0);
};
phpドキュメントは言うだけ
'use'キーワードは、クロージャー構造にも適用されます。
しかし、それが実際に何をするのか説明はありません。
スコープを制御します。この場合、変数$tax
と$total
は無名関数の外部で宣言されます。それらはuse-clauseにリストされているため、内部からアクセスできます。
アンパサンドにより、変数が完全に共有されます。たとえば、クロージャー内で行われた変更は、外部スコープに反映されます。の場合$tax
、変数はコピーであるため、クロージャー内から変更することはできません。
匿名関数をサポートする他のほとんどの言語は、デフォルトで字句スコープを持っていますが、PHPにはすでに他のスコープ規則があるため、これにより、あらゆる種類の奇妙な状況が発生し、下位互換性が失われます。リゾートとして、この-かなり厄介な-ソリューションが導入されました。
これを確認してください-http://php.net/manual/en/functions.anonymous.php、無名関数がローカル変数(コードの場合は$tax
と$total
)を使用する場合は、use
それらを参照するために使用する必要があります。