zoukankan      html  css  js  c++  java
  • 闭包

    php5.3有一个非常赞的新特性,那就是支持匿名函数(闭包)。匿名函数可用于动态创建函数,并保存到一个变量中。

    function operate($operator){
        if($operator == "-"){
            return function($a,$b){
                return $a-$b;
            };
        }else{
            return function($a,$b){
                return $a+$b;
            };
        }
     }
    $subtraction = operate("-");
    echo $subtraction(4,3);//1
    $addition = operate("+");
    echo $addition(1,2);//3

    说明:通过operate函数,我们可以生成不同的函数作为结果返回,并将这个结果直接作为函数调用,上面的代码分别动态创建了减法运算和加法运算函数。

    $di = new Di();
    $di->set("zhangsan",function(){
        return new User('张三');
     });
    $di->set("lisi",function(){
       return new User("李四"); 
     });
    echo $di->get("zhangsan")->getUserName();
    echo $di->get("lisi")->getUserName();

    说明:在$di->get()的时候才执行了匿名函数并将对象返回,这就实现了按需实例化,不用则不实例化,提高效率。

    闭包特性:
    经常写js的同学应该知道js的闭包特性,简单的说就是在一个函数里可以定义子函数,父函数中的变量在子函数中可以直接使用,那么PHP的闭包怎么用呢?有一点区别。

    function func1($a){
        return function() use ($a){
            echo $a;
        };
     }
    $a = func1("a");
    $a();//输出a

    当你想将外层变量传进内层匿名函数时,使用use (变量)的方式。

    a

  • 相关阅读:
    用C#实现宽带重新拨号
    CALLBACK FUNCTION 回调函数
    编译程序 VS 解释程序
    《围城》读书笔记
    鼠标点击器
    工作与找工作的日子
    Windows 7下VS2003的查找无响应问题
    收藏几句关于程序的名言
    static知识小结
    如何定义和实现一个类的成员函数为回调函数(转)
  • 原文地址:https://www.cnblogs.com/thinksasa/p/4523166.html
Copyright © 2011-2022 走看看