Isi*_*ius 5 php oop dependency-injection
我最近了解了依赖注入的优点,但我想知道我是否应该在我的项目中使用它,因为我甚至不需要完整的mvc.现在我正在使用它,我意识到我写的每个页面都有额外的开销.例如...
require_once '../../include/session.class.php';
require_once '../../include/db.class.php';
require_once '../../include/account.class.php';
$objSession = new Session();
$objDb = new Db();
$objAccount = new Account( $objSession, $objDb );
Run Code Online (Sandbox Code Playgroud)
account.class.php
class Account {
...
public function __construct( Session $objSession, Db $objDb ) {
$this->session = $objSession;
$this->db = $objDb;
}
}
Run Code Online (Sandbox Code Playgroud)
... Account类总是需要Db和Session,我只会有一个类.所以我的问题是,如果我在这种情况下使用DI,或者我应该使用......
account.class.php
require_once '../../include/session.class.php';
require_once '../../include/db.class.php';
class Account {
...
public function __construct() {
$this->session = new Session();
$this->db = new Db();
}
}
Run Code Online (Sandbox Code Playgroud)
...?
依赖注入与MVC无关.它非常擅长使单元测试更容易编写,最终我发现它让我真正考虑了我正在使用的资源以及该实现是否应该使用该资源.
我个人没有看到创建注入对象的危害,所以你有几行你必须创建一个对象?它告诉用户更多关于发生了什么.与魔术相比,我宁愿清晰.
就个人而言,我认为代码中的大部分混乱都来自于require陈述.我会说自动加载器会解决一些问题.
我非常喜欢DI上的Google Clean Code Talk.它帮助我更好地掌握了这个概念及其好处.