首頁 後端開發 php教程 PHP闭包函数详解_PHP

PHP闭包函数详解_PHP

May 28, 2016 am 11:48 AM
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 Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何在PHP中使用匿名函數和閉包 如何在PHP中使用匿名函數和閉包 Jul 15, 2023 pm 02:12 PM

如何在PHP中使用匿名函數和閉包在PHP中,匿名函數和閉包是強大且常用的特性。它們可以在程式碼中靈活地定義和使用函數,特別是在處理回調函數、事件處理器和非同步程式設計時非常實用。本文將介紹如何在PHP中使用匿名函數和閉包,並提供一些範例程式碼來幫助讀者更好地理解。一、匿名函數的定義和使用匿名函數,顧名思義,即沒有名字的函數。它可以透過關鍵字"function"和一對小

如何在PHP中使用匿名函數 如何在PHP中使用匿名函數 May 18, 2023 pm 07:31 PM

在PHP語言中,匿名函數也被稱為閉包(Closure),是一種可以在執行時間定義、使用的函數,而無需事先命名。相較於普通函數,匿名函數可以直接作為一個變數使用並傳遞給其他函數,同時可以存取其所處環境的變數值。匿名函數的語法格式如下:$function_name=function($parameter){//...functioncode

深入理解PHP閉包、生成器和反射技術的底層原理 深入理解PHP閉包、生成器和反射技術的底層原理 Sep 13, 2023 pm 12:52 PM

深入理解PHP閉包、生成器和反射技術的底層原理,需要具體程式碼範例在PHP程式設計中,閉包、生成器和反射技術是非常重要且常用的特性。理解它們的底層原理能夠幫助我們更好地使用它們,並且在實際開發中更靈活地應用。一、閉包的底層原理閉包是指一個函數內部可以存取其外部作用域的變量,即使在函數外部呼叫這個函數,仍然可以存取到這些變數。底層原理:PHP實現閉包時,會創建一

如何利用PHP閉包、生成器和反射技術簡化程式碼複雜度 如何利用PHP閉包、生成器和反射技術簡化程式碼複雜度 Sep 13, 2023 am 11:04 AM

如何利用PHP閉包、生成器和反射技術來簡化程式碼複雜度導語:在日常的開發中,我們常常會遇到處理繁瑣邏輯、程式碼冗餘的問題。而PHP為我們提供了一些強大的特性,如閉包、生成器和反射技術,能夠幫助我們簡化程式碼複雜度,提高開發效率。本文將介紹如何利用這些技術來簡化程式碼,並透過具體的程式碼範例進行講解。利用閉包(Closure)簡化邏輯閉包是一個匿名函數,可以在函數之外的地

如何使用PHP的閉包、生成器和反射技術進行高效編程 如何使用PHP的閉包、生成器和反射技術進行高效編程 Sep 13, 2023 pm 03:06 PM

如何使用PHP的閉包、生成器和反射技術進行高效編程引言:PHP是一種廣泛應用於Web開發的腳本語言,而閉包、生成器和反射技術是PHP中強大且靈活的特性。透過熟練運用這些技術,開發者可以編寫更有效率且易於維護的程式碼。本文將詳細介紹閉包、生成器和反射技術的概念,並提供具體的程式碼範例,幫助讀者更好地理解和應用這些技術。一、閉包(Closure)閉包是指可以自包含(

掌握PHP閉包、生成器與反射技術的實戰方法 掌握PHP閉包、生成器與反射技術的實戰方法 Sep 13, 2023 pm 01:22 PM

掌握PHP閉包、生成器和反射技術的實戰方法,需要具體程式碼範例在PHP程式設計中,閉包、生成器和反射技術是三種非常重要且有用的技術。本文將介紹這三種技術的基本概念和用法,並提供具體的程式碼範例,幫助讀者更好地理解和運用。一、閉包閉包是一種特殊的函數,它有能力存取其創建時的上下文環境,即使該環境已經不存在了。閉包的定義使用關鍵字use。以下是一個簡單的範例,展示了閉包

PHP中的閉包函數及常見問題詳解 PHP中的閉包函數及常見問題詳解 Jun 09, 2023 am 09:46 AM

PHP中的閉包函數及常見問題詳解在PHP中,閉包函數是一種特殊的函數類型,它允許將函數作為參數傳遞和返回,並且可以在函數內部存取外部變數。在本文中,我們將詳細介紹PHP中的閉包函數及其常見問題。什麼是閉包函數?閉包函數是一個匿名函數,它可以存取其定義範圍內的變數。通常,函數定義的範圍限於函數本身,但閉包函數可以存取定義範圍內的變量,即使在函數執行完畢後,

如何使用PHP閉包、生成器和反射技術來提高程式碼的可維護性 如何使用PHP閉包、生成器和反射技術來提高程式碼的可維護性 Sep 13, 2023 am 11:51 AM

如何使用PHP閉包、生成器和反射技術來提高程式碼的可維護性引言:在軟體開發過程中,可維護性是一個非常重要的因素。可維護的程式碼能夠輕鬆地進行修改、擴展和調試,使得專案更加靈活和健壯。本文將介紹如何透過使用PHP中的閉包、生成器和反射技術來提高程式碼的可維護性,並透過具體的程式碼範例來說明。一、閉包的使用閉包是一個可以捕捉上下文變數的函數,它可以用來實現更靈活的程式碼結

See all articles