What is Closure in Laravel?(Laravel 中的闭包是什么?)
问题描述
我在中间看到了一个 Laravel 函数:
I saw one Laravel function in middlewere:
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->check())
{
return redirect('/home');
}
return $next($request);
}
什么是Closure,它有什么作用?
What is Closure and what does it do?
推荐答案
A 关闭 是一个匿名函数.闭包通常用作回调方法,并且可以用作函数中的参数.
A Closure is an anonymous function. Closures are often used as callback methods and can be used as a parameter in a function.
如果你看下面的例子:
function handle(Closure $closure) {
$closure();
}
handle(function(){
echo 'Hello!';
});
我们首先在 handle 函数中添加一个 Closure 参数.这将提示我们 handle 函数接受一个 Closure.
We start by adding a Closure parameter the handle function. This will type hint us that the handle function takes a Closure.
然后我们调用 handle 函数并传递一个函数作为第一个参数.
We then call the handle function and pass a function as the first parameter.
通过在 handle 函数中使用 $closure(); 我们告诉 PHP 执行给定的 Closure 然后 echo'你好!'
By using $closure(); in the handle function we tell PHP to execute the given Closure which will then echo 'Hello!'
也可以将参数传递到 Closure.我们可以通过更改 handle 函数中的 Closure 调用来传递参数来实现.在这个例子中,我将只传递一个字符串,但这可以是任何变量.
It is also possible to pass parameters into a Closure. We can do so by changing the Closure call in the handle function to pass on a parameter. In this example i'll just pass a string but this can be any variable.
handle 函数现在看起来像
The handle function now looks like
function handle(Closure $closure) {
$closure('Hello World!');
}
我们现在还需要修改 Closure 本身以获取参数.我们通过简单地向函数添加一个参数来实现.然后我们将该变量传递给 echo.
We now also need to modify the Closure itself to take the parameter. We do so by simply adding a parameter to the function. And then we pass that variable to the echo.
函数现在看起来像
handle(function($value){
echo $value;
});
哪个将回显 Hello World!
有关更多信息,您可以查看以下链接:
For more information you can check out these links:
http://php.net/manual/en/functions.anonymous.php
http://php.net/manual/en/class.closure.php
这篇关于Laravel 中的闭包是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Laravel 中的闭包是什么?
- 如何从数据库中获取数据以在 laravel 中查看页面? 2022-01-01
- 如何使用 Google API 在团队云端硬盘中创建文件夹? 2022-01-01
- PHP - if 语句中的倒序 2021-01-01
- Laravel 5:Model.php 中的 MassAssignmentException 2021-01-01
- PHP foreach() 与数组中的数组? 2022-01-01
- 如何在 Symfony2 中正确使用 webSockets 2021-01-01
- Oracle 即时客户端 DYLD_LIBRARY_PATH 错误 2022-01-01
- 覆盖 Magento 社区模块控制器的问题 2022-01-01
- openssl_digest vs hash vs hash_hmac?盐与盐的区别HMAC? 2022-01-01
- 使用 GD 和 libjpeg 支持编译 PHP 2022-01-01
