我正在尝试创建一个非常基本的路由类并通过示例学习PHP闭包。基本上,我想在Laravel中创建一个路由功能,但只能使用闭包。
function get($uri)
{
if($uri == '/account')
{
return true;
}
else
{
return false;
}
}
function Boo()
{
echo "Boo";
}
$route = new Route();
$route->get('/account', function() {
return $route->Boo();
});
我可以在没有闭包的情况下执行此操作,并将“Boo”视为输出。
如何使用闭包来做到这一点?我目前看到空白输出。
聚苯乙烯。功能正确。
答案 0 :(得分:3)
你需要实际接受闭包作为你的get方法的参数,然后调用它,这是一个例子
class Route
{
function get($uri, Closure $closure=null)
{
if($uri == '/account')
{
// if the closure exists, call it, passing it this instance as its parameter
if (null !== $closure) {
$closure($this);
}
return true;
}
else
{
return false;
}
}
function Boo()
{
echo "Boo";
}
}
$route = new Route();
// have the closure accept a route as it's parameter
$route->get('/account', function($route) {
return $route->Boo();
});