今天给各位分享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 闭包 应用场景的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。