PHP依赖注入和松散耦合
|
我在这里思考一些不同的方法,非常感谢一些输入!我正在考虑以下两个选择.那里有两件事我有疑问. >是否首选将依赖项注入主“容器”类的构造函数中,或者在容器类中创建新实例? 确实没有必要在课堂上存储任何东西作为财产.我可以重新安排一切使用这种技术而不会有太多麻烦,我想我更喜欢它.这样我也可以将所有工作从构造函数中移出,然后通过方法简单地访问所有内容.我在这里走在正确的轨道上吗? class App
{
private $config;
private $router;
private $renderer;
public function __construct(IConfig $config,IRouter $router,IRenderer $renderer)
{
$this->config = $config;
$this->router = $router;
$this->renderer = $renderer;
$this->run();
}
public function run()
{
$data = $this->router->route(new Request,$config->routes);
$this->renderer->render($data);
}
}
class App
{
private $config;
private $router;
private $renderer;
public function __construct()
{
$this->config = new Config;
$this->run();
}
public function run()
{
$this->router = new Router(new Request,$config->routes);
$this->router->route();
$this->renderer = new Renderer($this->router->getData());
$this->renderer->render();
}
}
最好将依赖项注入构造函数中.
在构造函数中创建实例会在两个类之间创建紧密耦合.使用具有清晰签名的构造函数 public function __construct(IConfig $config,IRenderer $renderer) 我可以立即告诉这个组件需要做什么工作. 给定一个构造函数 public function __construct(); 不知道组件需要运行什么.它创建了与您的每个路由器,您的请求和渲染器的特定实现的强大耦合,在您深入了解您的类的内容之前,这些都不会显而易见. 总之,第一种方法有详细记录,可扩展和可测试.第二种方法是不透明,高度耦合,不易测试. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
