1

我正在尝试制作一个非常基本的路由类并通过示例学习 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”视为输出。

我怎么能用闭包做到这一点?我目前看到一个空白输出。

附言。函数在正确的类中。

4

1 回答 1

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();
});
于 2013-03-30T14:35:01.907 回答