开发者社区> 问答> 正文

请教关于PHP的匿名函数和闭包的问题

问题title可能起的有点大,我想请教大家的具体问题是

$value = Session::get('key', 'default_value');
$value = Session::get('key', function () { return 'default_value';});

上面代码的意思就是根据session的key取得相应的值,
当该key相应的值不存在时,返回默认值(default_value)。

请问这两种写法有什么区别,
第一种很自然能理解,
第二种用匿名函数来返回的写法,有什么特定的使用场合吗?
请不吝赐教!
多谢!

展开
收起
落地花开啦 2016-06-12 14:32:00 2102 0
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人

    session中保存的值可能是字符串、数组、类等各种数据类型,就算是单一数据类型,它表示的意义也存在多种可能,如一本书信息,一个用户信息,一个销量排行等,除此之外,返回一个默认值还有可能要处理一些逻辑、事务等等,在这种情况下,将处理逻辑作为参数传入方法,可以方便的解决这类问题。

    class Session
    {
      public static function get(String $key, Closure $func)
      {
        // 取key的value,如果为空则调用匿名函数
        return $func(); // 只专注于自己的业务(k-v),其它业务委托匿名函数处理。
      }
    }

    匿名函数是不需要定义函数名的,可以作为参数传递给其他函数, 通常用于回调函数。

    2019-07-17 19:34:01
    赞同 展开评论 打赏
问答分类:
PHP
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
阿里云栖开发者沙龙PHP技术专场-深入浅出网络编程与swoole内核-吴镇宇 立即下载
PHP安全开发:从白帽角度做安全 立即下载
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载