搜索
首页后端开发php教程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
如何在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 am 11:04 AM

如何利用PHP闭包、生成器和反射技术简化代码复杂度导语:在日常的开发中,我们常常会遇到处理繁琐逻辑、代码冗余的问题。而PHP为我们提供了一些强大的特性,如闭包、生成器和反射技术,能够帮助我们简化代码复杂度,提高开发效率。本文将介绍如何利用这些技术来简化代码,并通过具体的代码示例进行讲解。利用闭包(Closure)简化逻辑闭包是一个匿名函数,可以在函数之外的地

掌握PHP闭包、生成器和反射技术的实战方法掌握PHP闭包、生成器和反射技术的实战方法Sep 13, 2023 pm 01:22 PM

掌握PHP闭包、生成器和反射技术的实战方法,需要具体代码示例在PHP编程中,闭包、生成器和反射技术是三种非常重要且有用的技术。本文将介绍这三种技术的基本概念和用法,并提供具体的代码示例,帮助读者更好地理解和运用。一、闭包闭包是一种特殊的函数,它有能力访问其创建时的上下文环境,即使该环境已经不存在了。闭包的定义使用关键字use。以下是一个简单的示例,展示了闭包

如何使用PHP的闭包、生成器和反射技术进行高效编程如何使用PHP的闭包、生成器和反射技术进行高效编程Sep 13, 2023 pm 03:06 PM

如何使用PHP的闭包、生成器和反射技术进行高效编程引言:PHP是一种广泛应用于Web开发的脚本语言,而闭包、生成器和反射技术是PHP中强大且灵活的特性。通过熟练运用这些技术,开发者可以编写更加高效且易于维护的代码。本文将详细介绍闭包、生成器和反射技术的概念,并提供具体的代码示例,帮助读者更好地理解和应用这些技术。一、闭包(Closure)闭包是指可以自包含(

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

深入理解PHP闭包、生成器和反射技术的底层原理,需要具体代码示例在PHP编程中,闭包、生成器和反射技术是非常重要且常用的特性。理解它们的底层原理能够帮助我们更好地使用它们,并且在实际开发中更加灵活地应用。一、闭包的底层原理闭包是指一个函数内部可以访问其外部作用域的变量,即使在函数外部调用这个函数,仍然可以访问到这些变量。底层原理:PHP在实现闭包时,会创建一

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

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前By尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!