加入收藏 | 设为首页 | 会员中心 | 我要投稿 汽车网 (https://www.0577qiche.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php中的闭包的使用场景有哪些

发布时间:2023-10-13 10:26:36 所属栏目:PHP教程 来源:
导读:php中的闭包的使用场景有:在动态调用静态类时,在callback函数中使用,赋值给一个普通的变量,使用use从父域中继承以及传递参数时

闭包函数

匿名函数,也叫闭包函数(closures),允许 临时创建一个没有指定名
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(); 
 
    } 
 

 
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(); 
函数中的调用

<?php 
 
function call($callback){ 
 
            $callback(); 
 
    } 
 
call(function() { 
 
    var_dump('hell world'); 
 
}); 
 

(编辑:汽车网)

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

    推荐文章