加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php什么时候运用闭包

发布时间:2022-02-24 22:53:37 所属栏目:PHP教程 来源:互联网
导读:php中的闭包的使用场景有:在动态调用静态类时,在callback函数中使用,赋值给一个普通的变量,使用use从父域中继承以及传递参数时 闭包函数 匿名函数,也叫闭包函数(closures),允许 临时创建一个没有指定名称的函数。最经常用作回调函数(callback)参
  php中的闭包的使用场景有:在动态调用静态类时,在callback函数中使用,赋值给一个普通的变量,使用use从父域中继承以及传递参数时
 
  闭包函数
 
  匿名函数,也叫闭包函数(closures),允许 临时创建一个没有指定名称的函数。最经常用作回调函数(callback)参数的值。当然也有其它应用的情况。
 
  使用场景
 
  动态调用静态类的时候
 
  <?php
  
  class test
  
  {
  
      public static function getinfo()
  
      {
  
          var_dump(func_get_args());
  
      }
  
  }
  
  call_user_func(array('test', 'getinfo'), 'hello world');
  在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
  
  ?>
  赋值给一个普通的变量
 
  <?php
  
  $greet = function($name)
  
  {
  
      printf("Hello %s/r/n", $name);
  
  };
  
  $greet('World');
  
  $greet('PHP');
  
  ?>
  使用use从父域中继承
 
  <?php
  
  $message = 'hello';
  
  // 继承 $message
  
  $example = function () use ($message) {
  
      var_dump($message);
  
  };
  
  echo $example();
  
  // Inherit by-reference
  
  $example = function () use (&$message) {
  
      var_dump($message);
  
  };
  //Cuoxin.com
  echo $example();
  
  // The changed value in the parent scope
  
  // is reflected inside the function call
  
  $message = 'world';
  
  echo $example();
  传递参数
 
  <?php
  
  $example = function ($arg) use ($message) {
  
      var_dump($arg . ' ' . $message);
  
  };
  
  $example("hello");
  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();
   }  
  
  $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();
  函数中的调用
 
  <?php
  
  function call($callback){
  
              $callback();
  
      }
  
  call(function() {
  
      var_dump('hell world');
  
  });
 

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读