我一直在使用注册表模式很长一段时间。基本上,我使用主对象加载所有类(即使控制器本身不需要它们),控制器也可以访问它们。
目前它加载了20个类,我想改变我的方法。
我想为我的控制器定义依赖项。例如,我的寄存器控制器只依赖于数据库类,重访类和过滤器类。
所以,我想创建一个这样的解决方案:
//dependencies
$registerDependencies = array(new Database(), new Recatpcha(), new Filter());
//load register controller
$this->loadController->('register', $this->loadDependencies($registerDependencies));
是否称为DI / DI容器? 这比我现在的系统更好吗?
答案 0 :(得分: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'可以连接到DB,'database.user'可以连接到另一个DB。
Symfony2使用依赖注入,您可以找到documentation about the component on their website。