[解決済み] PHPでは、クロージャとは何ですか?なぜ "use "識別子を使用するのですか?
2022-03-20 05:39:05
質問
を調べているところです。
PHP 5.3.0
の機能で、サイト上でかなり面白そうなコードに遭遇しました。
public function getTotal($tax)
{
$total = 0.00;
$callback =
/* This line here: */
function ($quantity, $product) use ($tax, &$total)
{
$pricePerItem = constant(__CLASS__ . "::PRICE_" .
strtoupper($product));
$total += ($pricePerItem * $quantity) * ($tax + 1.0);
};
array_walk($this->products, $callback);
return round($total, 2);
}
の例のように 匿名関数 .
どなたかご存知ですか?何か文書がありますか?そして、それは邪悪に見えますが、それは今まで使用されるべきですか?
解決方法は?
これは、PHPが クロージャ . これは決して邪道ではなく、むしろ非常に強力で便利なものです。
基本的にこれが意味するところは、匿名関数がローカル変数を "capt"することを許可していることです(この場合。
$tax
への参照と
$total
の場合),そのスコープ外でその値を保持します.
$total
への参照は
$total
それ自身)を、匿名関数自体の状態として扱います。
関連
-
[解決済み】予期せぬ例外。SQLSTATE[HY000] [1045] Access denied for user ****@'localhost' (using password: YES)
-
[解決済み] php5パッケージのインストール候補がない (Ubuntu 16.04)
-
[解決済み] PHPでHTML/XMLをパースして処理する方法とは?
-
[解決済み] PHPのstartWith()関数とendsWith()関数
-
[解決済み] PHPでパスワードをハッシュ化するためにbcryptを使用するにはどうすればよいですか?
-
[解決済み] PHPのstdClassとは何ですか?
-
[解決済み] PHPを使って現在の年を取得するにはどうすればよいですか?
-
[解決済み] クロージャ」と「ラムダ」の違いは何ですか?
-
[解決済み】PHPの'foreach'は実際どのように動作するのですか?
-
[解決済み] リファレンス - このシンボルはPHPで何を意味するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Weird PHP error: 'Can't use function return value in write context'.
-
[解決済み】PHP 7.2 - Warning: count(): パラメータは配列かCountableを実装したオブジェクトでなければならない [解決済み]
-
[解決済み] php5パッケージのインストール候補がない (Ubuntu 16.04)
-
[解決済み】Phpのincludeが機能しない? 関数がincludeされない
-
[解決済み】警告:mysql_fetch_array()はパラメータ1がリソースであることを期待、ブール値は[重複]で与えられる]
-
[解決済み】PHPの予期しないT_VARIABLEとは何ですか?
-
[解決済み】既に開始されているPHPセッション【重複あり
-
[解決済み】Wordpressの子テーマのstyle.cssが効かない。
-
[解決済み】phpのシンタックスエラー、予期しないT_IFエラーを修正する方法は?[クローズド]。
-
[解決済み] 致命的なエラーです。mysqli_result 型のオブジェクトを使用できません [終了] 。