很多站长朋友们都不太清楚phpuse闭包,今天小编就来给大家整理phpuse闭包,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 PHP闭包函数传参及使用外部变量的方法 2、 Laravel 中的闭包参数是如何传入的 3、 php如何序列化/存储闭包(Closure) 4、 php 匿名函数,也叫闭包函数? 5、 如何实际使用PHP5.3闭包语法特性 6、 php闭包函数用use传参有什么意义? 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程序设计有所帮助。
Laravel 中的闭包参数是如何传入的亲,你好,PHP中闭包参数的传入是通过use关键字进行传入的。Laravel 是PHP的一个框架,所以在里面使用的闭包函数中传入参数依然是使用use关键字的。
例如:
下面的PHP脚本程序运行结果如下:
Array
(
[0] =>
[1] => Array
(
[name] => xiaohong
[age] => 14
)
)
希望对你有帮助!~~
<?php
$users = [
['name' => 'xiaoming', 'age' => 15],
['name' => 'xiaohong', 'age' => 14],
];
$age = 15;
// 遍历用户信息,拿到年龄小于15的用户信息
$ageLt15 = array_map(function ($user) use ($age) {
if ($user['age'] < $age) {
return $user;
}
}, $users);
print_r($ageLt15);
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 中 使用了 use 语句的匿名函数才是闭包函数。php 的变量默认是局部的,没有 use 语句,匿名函数使用不了定义作用域里的变量。只有使用了定义作用域内变量的才能叫闭包函数。
如何实际使用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 = '<strong>Listing:</strong>';
foreach($items as $item) {
$html .= $formatter($item);
}
return $html;
}
以上就是介绍的两种不同的PHP 5.3闭包语法的使用
php闭包函数用use传参有什么意义?所谓闭包,就是定义一段代码,同时对当时的运行上下文做一个快照,并捆绑在一起,用于在将来的某个时候让这段代码在当初的这个上下文中运行。 如你所写,当这个函数被当作函数返回值时,在别的地方调用时,还还可以使用$d,$e,$f的值。
function print_log($person,$word) {
echo($person.'say:'.$word."\n");
}
function print_log_by($person){
return function($log) use($person) {
print_log($person,$log);
};
}
$my_print_log = print_log_by('student1');
$my_print_log("hello");
$your_print_log = print_log_by('student2');
$your_print_log('hello');
关于phpuse闭包的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于phpuse闭包 php close的详细内容...