【PHP】闭包的使用

简介: 【PHP】闭包的使用

一、介绍


匿名函数(Anonymous functions),也叫闭包函数(closures),允许 临时创建一个没有指定名称的函数。最经常用作回调函数(callback)参数的值。当然,也有其它应用的情况。


二、使用场景


1、动态调用静态类的时候



<?php

class test

{

   public static function getinfo()

   {

       var_dump(func_get_args());

   }

}

call_user_func(array('test', 'getinfo'), 'hello world');

2、在callback函数中使用



<?php

//eg array_walk array_map preg_replace_callback etc

echo preg_replace_callback('~-([a-z])~', function ($match) {

   return strtoupper($match[1]);

}, 'hello-world');

// 输出 helloWorld

?>

3、赋值给一个普通的变量



<?php

$greet = function($name)

{

   printf("Hello %s\r\n", $name);

};

$greet('World');

$greet('PHP');

?>

4、使用use从父域中继承



<?php

$message = 'hello';

// 继承 $message

$example = function () use ($message) {

   var_dump($message);

};

echo $example();

// Inherit by-reference

$example = function () use (&$message) {

   var_dump($message);

};

echo $example();

// The changed value in the parent scope

// is reflected inside the function call

$message = 'world';

echo $example();

5、传递参数



<?php

$example = function ($arg) use ($message) {

   var_dump($arg . ' ' . $message);

};

$example("hello");

6、OO中的使用



<?php

class factory{

   private $_factory;

   public function set($id,$value){

       $this->_factory[$id] = $value;

   }

 

   public function get($id){

       $value = $this->_factory[$id];

       return $value();

   }

}

class User{

   private $_username;

   function __construct($username="") {

       $this->_username = $username;

   }

   function getUserName(){

       return $this->_username;

   }

}

$factory = new factory();

$factory->set("zhangsan",function(){

   return new User('张三');

});

$factory->set("lisi",function(){

  return new User("李四");

});

echo $factory->get("zhangsan")->getUserName();

echo $factory->get("lisi")->getUserName();

7、函数中的调用



<?php

function call($callback){

           $callback();

   }

call(function() {

   var_dump('hell world');

});


相关文章
|
机器学习/深度学习 PHP 开发者
深入探讨PHP中的闭包与匿名函数
在现代PHP开发中,闭包与匿名函数已经成为日常编程的利器。本文将通过详细解说和实例演示,帮助开发者深入理解并有效应用这些功能,从而提升代码的灵活性和可维护性。
244 27
|
设计模式 数据处理 PHP
探索PHP中的匿名函数与闭包
【8月更文挑战第3天】本文将深入探讨PHP中匿名函数的概念、用法及其在实际应用中的便捷性。通过代码示例,我们将了解如何声明和运用匿名函数,以及闭包如何在其上下文中捕获变量。文章旨在为读者提供一种灵活的编程工具,以简化代码并增强其可读性和可维护性。
|
PHP 开发者
探索PHP中的匿名函数和闭包
【8月更文挑战第31天】在PHP的世界中,匿名函数和闭包就像是神秘的魔法,它们让代码变得更加简洁和强大。本文将带你揭开它们的面纱,通过实际代码示例,展示如何在PHP中灵活运用这些功能,以及如何优化你的代码结构。
|
PHP 开发者
探索PHP中的匿名函数和闭包
【8月更文挑战第31天】 本文通过浅显易懂的语言和直观的代码实例,带你了解PHP中匿名函数的概念、使用场景以及闭包的强大功能。我们不仅会探讨它们如何简化日常编码,还将深入理解它们的工作原理和在复杂应用中的实际应用价值。无论你是PHP新手还是资深开发者,这篇文章都将为你打开一扇通往更高阶编程思维的门。
|
设计模式 PHP 开发者
探索PHP中的匿名函数与闭包
【8月更文挑战第31天】本文将带你了解PHP的匿名函数——一种简洁、高效的代码编写方式,并深入探讨其背后的闭包概念。我们将通过实际示例,展示如何利用这些特性来优化你的PHP代码,同时也会解释它们在实际应用中的重要性和潜在价值。准备好让你的PHP代码变得更加灵活和强大了吗?让我们开始吧!
|
中间件 PHP
深入理解PHP中的闭包和匿名函数
【6月更文挑战第8天】本文将深入探讨PHP中的闭包和匿名函数,通过实例演示它们的用法和优势。我们将了解闭包的概念、匿名函数的定义以及它们在PHP中的应用。同时,我们还将讨论闭包和匿名函数在实际开发中的一些常见用途。
|
缓存 中间件 PHP
探索PHP中的闭包和匿名函数
【5月更文挑战第31天】在PHP的世界中,闭包和匿名函数是两个强大而灵活的特性,它们为开发者提供了一种独特的方式去处理数据、封装逻辑以及实现复杂的功能。本文将深入探讨这两个概念的定义、用法以及在实际开发中的应用示例,帮助读者更好地理解和运用这些高级特性。
|
JavaScript 前端开发 PHP
PHP闭包(Closure)初探
PHP闭包(Closure)初探
194 0
|
存储 PHP
php序列化闭包函数,php反序列化闭包函数,php如何序列化/存储闭包(Closure)
php序列化闭包函数,php反序列化闭包函数,php如何序列化/存储闭包(Closure)
449 0