0

阅读了很多关于依赖注入的内容,现在我正在尝试做一些事情。我想到了一个简单的表单提交。基本上是一个带有input标题字段和textarea正文字段的表单。

然后我有一个容器,像这样:

class IoC
{
  protected $db;

  public static function newPost()
  {
     $post = new Post(); // Instantiate post class so we can use the methods in there
     $input = $post->getInput(); // Method that gets the POST values
     $post->insertInput($input, $db); // Method that adds the post values to a database
  }
}
//Call IoC::newPost(); on the page the form submits to

这是Post课程:

class Post
{
  protected $db;

  public function __construct($db)
  {
    $this->db = $db;
  }

  public function getInput()
  {
    // Should I get the post input here? Like $_POST['title'] etc. and put it 
    // into an array and then return it?
    return $input;
  }

  public function insertIntoDB($db, $input)
  {
    // Should I hardcode the connection and query here?
  }
}

如您所见,我对连接的来源感到困惑。考虑一下,我想有一个单独的、可重用的Database类来创建连接并在容器中调用该类是明智的吗?

我真的不知道,请随时告诉我你会怎么做,如果你有例子,可以举个例子。

4

1 回答 1

1

依赖注入背后的想法是您实际上注入了任何依赖项。假设您有 Post 课程。这个类 - 在你的情况下 - 取决于数据库,所以你在构造函数中注入你的 Database 对象(或者如果你愿意的话,请参见 symfony2 获取更多信息)。反过来,您的 Database 类需要参数来建立连接,您可以通过注入配置(提供者)对象来做到这一点(是的!)。

您的容器只不过是一个管理对象并可能初始化它们的容器。容器的任务是初始化 Database 对象,以便将其插入 Post 对象。

我不知道您的 IoC 是做什么的,但如果它是您的容器,我不建议您私下这样做。您可以让您的容器被传递到您要求发布对象的控制器。

http://symfony.com/doc/current/book/service_container.html

于 2013-04-24T11:25:32.097 回答