PHP闭包函数详解_php技巧

May 16, 2016 pm 07:58 PM
PHPクロージャー PHPクロージャ関数

匿名函数也叫闭包函数(closures允许创建一个没有指定没成的函数,最经常用作回调函数参数的值。

闭包函数没有函数名称,直接在function()传入变量即可 使用时将定义的变量当作函数来处理

  $cl = function($name){
    return sprintf('hello %s',name);
  }
  echo $cli('fuck')`
ログイン後にコピー

直接通过定义为匿名函数的变量名称来调用

echo preg_replace_callback('~-([a-z])~', function ($match) {
  return strtoupper($match[1]);
}, 'hello-world');`
ログイン後にコピー

使用use

$message = 'hello';
$example = function() use ($message){
  var_dump($message);
};
echo $example();
//输出hello
$message = 'world';
//输出hello 因为继承变量的值的时候是函数定义的时候而不是 函数被调用的时候
echo $example();
//重置为hello
$message = 'hello';
//此处传引用
$example = function() use(&$message){
 var_dump($message);
};
echo $example();
//输出hello
$message = 'world';
echo $example();
//此处输出world
//闭包函数也用于正常的传值
$message = 'hello';
$example = function ($data) use ($message){
  return "{$data},{$message}";
};

echo $example('world');

ログイン後にコピー

example

class Cart{
  //在类里面定义常量用 const 关键字,而不是通常的 define() 函数。
  const PRICE_BUTTER = 1.00;
  const PRICE_MILK  = 3.00;
  const PRICE_EGGS  = 6.95;

  protected $products = [];
  public function add($product,$quantity){
    $this->products[$product] = $quantity;
  }
  public function getQuantity($product){
    //是否定义了
    return isset($this->products[$product])?$this->products[$product]:FALSE;
  }
  public function getTotal($tax){
    $total = 0.0;
    $callback = function($quantity,$product) use ($tax , &$total){
      //constant 返回常量的值
      //__class__返回类名
      $price = constant(__CLASS__."::PRICE_".strtoupper($product));

      $total += ($price * $quantity)*($tax+1.0);
    };
    //array_walk() 函数对数组中的每个元素应用用户自定义函数。在函数中,数组的键名和键值是参数
    array_walk($this->products,$callback);
    //回调匿名函数
    return round($total,2);

  }
}


$my_cart = new Cart();
$my_cart->add('butter',1);
$my_cart->add('milk',3);
$my_cart->add('eggs',6);


print($my_cart->getTotal(0.05));
ログイン後にコピー

以上就是关于PHP闭包函数的相关内容,希望对大家的学习有所帮助。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHP で匿名関数とクロージャを使用する方法 PHP で匿名関数とクロージャを使用する方法 Jul 15, 2023 pm 02:12 PM

PHP で匿名関数とクロージャを使用する方法 匿名関数とクロージャは、PHP でよく使用される強力な機能です。これにより、コード内で関数を柔軟に定義して使用できるようになり、コールバック関数、イベント ハンドラー、非同期プログラミングを処理する場合に特に役立ちます。この記事では、PHP で匿名関数とクロージャを使用する方法を紹介し、読者の理解を深めるためにいくつかのサンプル コードを提供します。 1. 匿名関数の定義と使用法 匿名関数は、名前が示すように、名前のない関数です。キーワード「関数」と小さなペアのペアを介してアクセスできます。

PHP で匿名関数を使用する方法 PHP で匿名関数を使用する方法 May 18, 2023 pm 07:31 PM

PHP言語では匿名関数はクロージャ(Closure)とも呼ばれ、事前に名前を付けずに実行時に定義して利用できる関数です。通常の関数と比較して、匿名関数は変数として直接使用して他の関数に渡すことができると同時に、自分の環境の変数値にアクセスすることができます。匿名関数の構文形式は次のとおりです: $function_name=function($parameter){//...functioncode

PHP クロージャ、ジェネレータ、リフレクション テクノロジを使用してコードの複雑さを簡素化する方法 PHP クロージャ、ジェネレータ、リフレクション テクノロジを使用してコードの複雑さを簡素化する方法 Sep 13, 2023 am 11:04 AM

PHP クロージャ、ジェネレーター、およびリフレクション テクノロジを使用してコードの複雑さを簡素化する方法 はじめに: 日々の開発では、煩雑なロジックや冗長なコードを処理するという問題に遭遇することがよくあります。 PHP は、クロージャ、ジェネレータ、リフレクション テクノロジなど、コードの複雑さを簡素化し、開発効率を向上させる強力な機能を提供します。この記事では、これらのテクニックを使用してコードを簡素化する方法を紹介し、具体的なコード例を通して説明します。クロージャを使用してロジックを簡素化する クロージャは、関数の外部で使用できる匿名関数です。

PHP クロージャ、ジェネレータ、リフレクション手法の実践的な方法をマスターする PHP クロージャ、ジェネレータ、リフレクション手法の実践的な方法をマスターする Sep 13, 2023 pm 01:22 PM

PHP のクロージャ、ジェネレータ、およびリフレクション テクノロジを習得するための実践的な方法には、特定のコード サンプルが必要です。PHP プログラミングにおいて、クロージャ、ジェネレータ、およびリフレクション テクノロジは 3 つの非常に重要で有用なテクノロジです。この記事では、これら 3 つのテクノロジの基本概念と使用法を紹介し、読者がそれらをよりよく理解して適用できるように具体的なコード例を示します。 1. クロージャ クロージャは、コンテキストがもう存在しない場合でも、作成時にコンテキストにアクセスできる特別な関数です。クロージャはキーワード use を使用して定義されます。これはクロージャを示す簡単な例です

PHP のクロージャ、ジェネレータ、リフレクション手法を使用して効率的なプログラミングを行う方法 PHP のクロージャ、ジェネレータ、リフレクション手法を使用して効率的なプログラミングを行う方法 Sep 13, 2023 pm 03:06 PM

効率的なプログラミングのための PHP のクロージャ、ジェネレータ、およびリフレクション テクノロジの使用方法 はじめに: PHP は Web 開発で広く使用されているスクリプト言語であり、クロージャ、ジェネレータ、およびリフレクション テクノロジは PHP の強力で柔軟な機能です。これらのテクニックを巧みに適用することで、開発者はより効率的で保守が容易なコードを作成できます。この記事では、クロージャ、ジェネレータ、リフレクション手法の概念を詳しく紹介し、読者がこれらの手法をよりよく理解して適用できるように、具体的なコード例を示します。 1. クロージャ クロージャとは、自己完結型 (

PHP クロージャー、ジェネレーター、リフレクション テクノロジーの基礎となる原理を深く理解する PHP クロージャー、ジェネレーター、リフレクション テクノロジーの基礎となる原理を深く理解する Sep 13, 2023 pm 12:52 PM

PHP クロージャ、ジェネレータ、およびリフレクション テクノロジの基礎となる原理を深く理解するには、特定のコード例が必要です。PHP プログラミングでは、クロージャ、ジェネレータ、およびリフレクション テクノロジは非常に重要であり、一般的に使用される機能です。それらの基礎となる原則を理解することは、それらをより適切に使用し、実際の開発でより柔軟に適用するのに役立ちます。 1. クロージャの基本原理 クロージャとは、関数の外部スコープにある変数に関数内でアクセスできることを意味し、関数を関数外で呼び出した場合でも、これらの変数にアクセスできます。基礎となる原則: PHP がクロージャを実装すると、クロージャが作成されます。

PHPのクロージャ関数とよくある問題の詳細な説明 PHPのクロージャ関数とよくある問題の詳細な説明 Jun 09, 2023 am 09:46 AM

PHP におけるクロージャ関数と一般的な問題の詳細な説明 PHP では、クロージャ関数は、関数をパラメータとして渡したり返したりできる特殊な関数タイプであり、関数内で外部変数にアクセスできます。この記事では、PHP のクロージャー関数とその一般的な問題について詳しく見ていきます。クロージャ関数とは何ですか?クロージャー関数は、その定義の範囲内の変数にアクセスできる匿名関数です。通常、関数定義のスコープは関数自体に制限されますが、クロージャー関数は、関数の実行が終了した後でも、定義のスコープ内の変数にアクセスできます。

PHP クロージャー、ジェネレーター、およびリフレクション手法を使用してコードの保守性を向上させる方法 PHP クロージャー、ジェネレーター、およびリフレクション手法を使用してコードの保守性を向上させる方法 Sep 13, 2023 am 11:51 AM

コードの保守性を向上させるために PHP クロージャ、ジェネレーター、およびリフレクション手法を使用する方法 はじめに: 保守性はソフトウェア開発プロセスにおいて非常に重要な要素です。保守可能なコードは簡単に変更、拡張、デバッグできるため、プロジェクトがより柔軟で堅牢になります。この記事では、PHP でクロージャ、ジェネレーター、リフレクション手法を使用してコードの保守性を向上させる方法を紹介し、具体的なコード例を通して説明します。 1. クロージャの使用 クロージャはコンテキスト変数を取得できる関数であり、より柔軟なコード構造を実現するために使用できます。

See all articles