此功能是服务定位器/容器吗?

时间:2012-09-17 17:17:15

标签: php design-patterns

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();

我的问题是,究竟是什么?此功能是否充当服务定位器和/或服务容器?我试图记录我的代码,但我在解释此代码时遇到了问题。

2 个答案:

答案 0 :(得分:0)

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

来访问其值

答案 1 :(得分:0)

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

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