1
function app($key = null, $value = null)
{
    if (null !== $key && null !== $value) {
        $GLOBALS['__app'][$key] = $value;
    }

    return (object) $GLOBALS['__app'];
}

所以,我通常有一个这样的函数,我存储诸如 Request 和 Session 对象之类的东西,以便在我的应用程序的任何地方使用它们。例如:

app('req', new Request);

然后我像这样使用它:

app()->req->getMethod();

我的问题是,这到底是什么?此功能是否充当服务定位器和/或服务容器?我正在尝试记录我的代码,但无法解释此代码。

4

2 回答 2

0

它只是一个创建全局(应用程序)变量的哈希映射。它被转换为一个对象,因此您可以使用app()->req而不是访问它的值$map = app(); $value = $map['req']

于 2012-09-17T17:19:40.687 回答
0

它是一个服务容器,您可以在此处找到更多信息:

它比单例更好,因为你可以注入模拟对象,所以它更易于单元测试

于 2012-09-17T17:22:26.520 回答