0

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

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

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

所以,我想创建一个这样的解决方案:

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

//load register controller
$this->loadController->('register', $this->loadDependencies($registerDependencies));

它被称为 DI/DI 容器吗?这是比我目前的系统更好的方法吗?

4

1 回答 1

0

我可能会使用这种方法:

$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 使用依赖注入,您可以在其网站上找到有关该组件的文档

于 2013-03-16T17:20:56.143 回答