依赖注入与服务定位器之间传递DB对象

时间:2013-08-27 09:26:05

标签: php dependency-injection service-locator

哪一个更有意义?

这个可能更容易使用,因为你可以做$ article-> save();

 <?php

class Article
{
    private $author;

    public function __constructor(Author $author)
    {
        $this->author = $author;
    }

    public function save()
    {
        $database = ServiceLocator::getDatabase();
        //save article logic
    }
} 

在这里传递对象,从而在控制器中(或在您使用它的任何地方)控制。集中控制。

 <?php

class Article
{
    private $author;

    public function __constructor(Author $author)
    {
        $this->author = $author;
    }

    public function save(Database $database)
    {
        //Irgendwelche Logik um den Artikel zu speichern mittels $database
    }
} 

我更喜欢最后一个,但我并不确定。什么是艺术状态?

由于

1 个答案:

答案 0 :(得分:2)

文章不应该知道如何保存自己。该文章现在有too many responsibilities。提取将文章保存到其他类的逻辑:repository