这只是出于教育目的。 我正在尝试访问我的容器设置文件。
具有一个容器类,该容器类可获取请求的类的构造函数参数(目前)。
$ 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...
}
我想知道如何不执行此操作即可到达我的设置文件。我认为我这样做的方式非常错误。有实施想法吗?
任何帮助将不胜感激。还是谢谢。
答案 0 :(得分:0)
好吧,DI代表依赖注入,因此一种方法是将容器注入依赖它的类中。
class SomeClass
{
public function __construct($container)
{
...
}
}
另一种常见方法是使容器成为全局容器或使用辅助函数:
function container()
{
global $container;
return $container;
}
然后,您可以在应用程序中的任何位置使用辅助功能container()
访问容器。由于容器将只有一个实例,并且应该在整个应用程序范围内都可以访问,所以这是我发现接受全局变量的少数情况之一。
无论哪种情况,在实例化应用程序中的任何服务类之前,都应包括配置文件并定义容器。