【发布时间】:2015-01-29 17:17:24
【问题描述】:
我正在尝试研究 Slim 框架的代码。在 Slim 类的构造函数中,将 $c 传递给闭包(例如,在容器中存储/设置请求/响应对象时):
public function __construct(array $userSettings = array())
{
// Setup IoC container
$this->container = new \Slim\Helper\Set();
$this->container['settings'] = array_merge(static::getDefaultSettings(), $userSettings);
// Default request
$this->container->singleton('request', function ($c) {
return new \Slim\Http\Request($c['environment']);
});
// Default response
$this->container->singleton('response', function ($c) {
return new \Slim\Http\Response();
});
但是 $c 在此语句之前的任何地方都没有定义/声明,那么它是如何工作的呢?我从一开始就开始跟踪所有内容,并且在以这种方式使用它之前在任何地方都找不到 $c。
【问题讨论】: