如何从某个地方访问我的DI容器配置文件?

时间:2018-08-31 15:09:43

标签: php

这只是出于教育目的。 我正在尝试访问我的容器设置文件。

具有一个容器类,该容器类可获取请求的类的构造函数参数(目前)。

$ container-> register($ className)函数将数据压入数组。

这是我的容器设置(conf.php)文件:

require_once("./app/central/layer/items.php");

$container = new App\Central\Layer\Items;

$container->register("BlaBla_1");
$container->register("BlaBla_2");

目的: 我想将此配置文件集成到每个班级都可以轻松到达的地方。

我不想每次尝试到达容器时都一次又一次地打电话。 我尝试过这样的事情。

$ containerLoader-> loadConfig();

但是结果是一个**empty**数组。(当我试图从另一个类的某个地方调用时)

它仅适用于:

class SomeClass
{
    public function __construct()
    {
        require_once("./conf.php");

        // I GET BLABLA_1'S CONSTRUCTOR PARAMATERS WITHOUT ANY PROBLEM
        $container->get("BlaBla_1");


    }

    //other methods...
}

我想知道如何不执行此操作即可到达我的设置文件。我认为我这样做的方式非常错误。有实施想法吗?

任何帮助将不胜感激。还是谢谢。

1 个答案:

答案 0 :(得分:0)

好吧,DI代表依赖注入,因此一种方法是将容器注入依赖它的类中。

class SomeClass
{
    public function __construct($container)
    {
        ...
    }
}

另一种常见方法是使容器成为全局容器或使用辅助函数:

function container()
{
    global $container;
    return $container;
}

然后,您可以在应用程序中的任何位置使用辅助功能container()访问容器。由于容器将只有一个实例,并且应该在整个应用程序范围内都可以访问,所以这是我发现接受全局变量的少数情况之一。

无论哪种情况,在实例化应用程序中的任何服务类之前,都应包括配置文件并定义容器。