• PHP 闭包函数


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

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

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

    闭包内部函数使用了外部函数中定义的变量.在PHP新开放的闭包语法中, 我们就是用use来使用闭包外部定义的变量的。

    正常函数:

      function  cl($name){
           return sprintf('hello %s',$name);
      }

    打印:

    echo cl('world');

    结果:hello world

    匿名函数:

      $cl = function($name){
        return sprintf('hello %s',$name);
      };
      echo $cl('world');

    结果:hello world

    打印$cl 类型

    object(Closure)#1 (1) {
      ["parameter"]=>
      array(1) {
        ["$name"]=>
        string(10) ""
      }
    }

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

    echo preg_replace_callback('~-([a-z])~', function ($match) {
      return strtoupper($match[1]);
    }, 'hello-world');

    结果:helloWorld

    使用use

    $message = 'hello';
    $example = function() use ($message){
      var_dump($message);
    };
    echo $example();

    结果:string(5) "hello"

    带参数:

    $message = 'hello';
    $example = function ($data) use ($message){
      return "{$data},{$message}";
    };
    
    echo $example('world');

    结果:world,hello

    闭包不会改变外部变量

    $message = 'hello';
    $test = function () use ($message){
     var_dump($message);
     $message = 'Hi……';
    };
    $test();   
    
    $message = 'Ni Hao!';
    $test(); 

    结果:

    string(5) "hello"
    string(5) "hello"

    转载来自:http://www.phperz.com/article/16/0227/190900.html

  • 相关阅读:
    端午节
    使用MetaWeblog写博客
    Ajax 跨域操作
    MetaWeblogApi 开发, 离线写博客
    大三开学
    JVM003ConcurrentHashMap底层原理是什么
    JVM009JVM性能调优概述
    JVM006Java类加载器有哪些
    JVM004GC如何判断对象可以被回收
    JVM008JVM内存结构如何划分
  • 原文地址:https://www.cnblogs.com/dcb3688/p/4608030.html
Copyright © 2020-2023  润新知