匿名函数如何与作为参数传递的路由请求和响应对象一起使用

时间:2015-04-13 14:08:26

标签: php routing routes

我在路由系统中使用了匿名函数的路由系统和/或框架(Laravel,Silex和Klein等),我找到了一些数字。以下是我想要解释的明显语法:

$requestHandler->run(function($request,  $response) use ($requestHandler){
  if($request->isAllowed()){
    $resource = new Resource($request->getPost());

    $response->prepare($resource);
  }

  if($response->hasErrors())
    \Log\ErrorLog::write($response->getErrors());

  return $response->getOutput();
});

这个想法是处理我这样的所有CURL请求,但我不确定这个概念是如何工作的。在我可以使用它们之前,我应该创建$ request,$ response和$ requestHandler类的实例吗?

1 个答案:

答案 0 :(得分:0)

我已设法使用上述问题中概述的匿名函数。我简单地创建了我的调度程序类,如下所示:

namespace FileServer;

class Dispatcher
{

  public static function run($execution)
  {
    return $execution();
  }
}

在我的索引文件中,我只运行以下代码:

\FileServer\Dispatcher::run(function(){

   echo "Hello anonymous funtion.";
 });

这可以通过命令行和浏览器工作,这意味着我在正确的方向。但是,我仍然对参数传递的位置和方式感到困惑,因为从现有的框架中,它们只是将$ request和$ response作为参数传递,但它们并未在任何地方实例化。

如果有人可以告诉我这是如何运作的,因为我所遵循的php maual对我来说并不清楚。