Php 在启动控制器对象之前预定义要求。它叫DI容器吗?

Php 在启动控制器对象之前预定义要求。它叫DI容器吗?,php,Php,我已经使用注册表模式很长时间了。基本上,我使用一个主对象加载所有类(即使控制器本身不需要它们),控制器可以访问它们 它目前加载了20个类,我想改变我的方法 我想为我的控制器定义依赖项。例如,我的寄存器控制器只依赖于数据库类、recaptcha类和过滤器类 因此,我想创建一个如下的解决方案: //dependencies $registerDependencies = array(new Database(), new Recatpcha(), new Filter()); //load re

我已经使用注册表模式很长时间了。基本上,我使用一个主对象加载所有类(即使控制器本身不需要它们),控制器可以访问它们

它目前加载了20个类,我想改变我的方法

我想为我的控制器定义依赖项。例如,我的寄存器控制器只依赖于数据库类、recaptcha类和过滤器类

因此,我想创建一个如下的解决方案:

//dependencies 
$registerDependencies = array(new Database(), new Recatpcha(), new Filter());

//load register controller
$this->loadController->('register', $this->loadDependencies($registerDependencies));
它叫DI/DI容器吗?
这是一种比我目前的系统更好的方法吗?

我可能会使用这种方法:

$this->loadController->register('database.main', 'Database')
                     ->register('database.user', 'Database')
                     ->register('recaptcha', 'Racatpcha');
寄存器函数如下所示

public function register($serviceName, $serviceClass)
{
    // you can inject options to your class via a config array or a conf file
    $this->registry[$serviceName] = new $serviceClass();
}
如果为服务提供别名,则可以有多个共享同一类但参数不同的服务。 服务“database.main”可以连接到一个数据库,“database.user”可以连接到另一个数据库


Symfony2使用依赖注入,您可以找到。

这种方法称为什么?DI或DI容器,还是没有?