首页 开发编程 正文

php怎么写闭包 php如何写闭包

其中也会对php闭包应用场景进行解释,1、php如何序列化/存储闭包(Closure)2、PHP闭包函数传参及使用外部变量的方法3、php方法中如何获取闭包的值?4、如何实际使用PHP5.3闭包语法特性php如何序列化/存储闭包(Closure)实在需要序列化,/***获得Closure的函数体和use变量,PHP闭包函数传参及使用外...

今天给各位分享php怎么写闭包的知识,其中也会对php 闭包 应用场景进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录:

php如何序列化/存储闭包(Closure)

实在需要序列化,可以用反射(Reflection),并直接操作代码文件获得上下文信息:/*** 创建一个反射:*/$reflection = new ReflectionFunction($closure);/*** 参数可以直接得到了:*/$params = $reflection-getParameters();/*** 获得Closure的函数体和use变量,形如:* function($arg1, $arg2, ...) use ($val1, $val2, ...) {* // 要获得这个部分的代码!* }* 办法很多,你可以直接用正则、字符串查找或者Tokenizer,等等等等。* 比如可以先从reflection里得到函数的开始行和结束行:*/$startLine = $reflection-getStartLine();$endLine = $reflection-getEndLine();// 然后用str*这个,str*那个的函数来清理,细节不写了:

PHP闭包函数传参及使用外部变量的方法

本文实例讲述了PHP闭包函数传参及使用外部变量的方法。分享给大家供大家参考,具体如下:

在Laravel控制器写两个方法,一个是在内部创建一个闭包函数,一个是执行传过来的闭包函数,测试闭包的写法,use使用外部变量,及闭包函数的传参。如下:

//测试闭包传参及use使用外部变量

public

function

testClosure($t1,

$t2)

{

$closure

=

function

($param1,

$param2)

use

($t1,

$t2)

{

echo

$param1.$param2.$t1.$t2;

};

$this-execClosure('test.closure',

$closure);

}

//执行闭包函数

protected

function

execClosure($name,

Closure

$closure)

{

echo

'Closure

func

name:'.$name;

echo

'br';

$closure('p1',

'p2');

}

在routes.php添加路由:

复制代码

代码如下:Route::get('/test/closure/{t1}/{t2}',['uses'='TestController@testClosure']);

访问

浏览器输出结果:

Closure

func

name:test.closure

p1p2hehe1hehe2

转自:小谈博客

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php操作office文档技巧总结(包括word,excel,access,ppt)》、《php日期与时间用法总结》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

php方法中如何获取闭包的值?

亲,你好,很高兴为你解答该问题

首先,你的这个写法是有问题的哦!~

class A {                          

    public function aa() {         

         // 函数体为空,所以外面不会有任何输出,即使设置变量来接受该方法,也不会有任何返回

         // 所以你肯定拿不到123                                                                                  

    }                              

}                                  

$a = new A;                        

$a-aa(function () {  // aa方法是不接受任何参数的,这个传了闭包进去

    return 123;                    

});

要想拿到闭包中的123,你需要这样写才可以呦~~

class A {                          

    public function aa($closure) {  // aa方法接受一个闭包函数进来

        return $closure(123);       // 调用闭包函数,传入相应参数,并将闭包返回的值再次返回出去

    }                              

}                                  

                                   

$a = new A;                        

$b = $a-aa(function ($param) {   // 给aa传入一个带一个参数的闭包

    return $param;                       // 闭包方法返回传入的参数

});                                

var_dump($b);

希望可以帮到你,给我个采纳呦!~~

如何实际使用PHP5.3闭包语法特性

PHP 5.3闭包语法就是一个匿名函数,可以为开发者带来很多不同的体验。与JavaScript的闭包相比稍微有点不同,可以这样使用PHP 5.3闭包语法

$closure = function($param) { echo $param; };

//This one takes value of someVar and "stores" it in the closure's scope even if

//we later change the value of someVar outside it. We assume that $somerVar is defined before this

$closure2 = function($param) use ($someVar) { echo $param . ' ' . $someVar; };

比如PHP 5.3闭包语法在输出HTML中闭包很有用:

function item_list(array $items, $formatter = null) {

//create the default formatter

if($formatter == null) {

$formatter = function($row) {

return 'p' . $row . '/p';

};

}

$html = 'h2Listing:/h2';

foreach($items as $item) {

$html .= $formatter($item);

}

return $html;

}

以上就是介绍的两种不同的PHP 5.3闭包语法的使用

关于php怎么写闭包和php 闭包 应用场景的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

本文转载自互联网,如有侵权,联系删除