【问题标题】:DI in Zend Framework 2. How to make cyclic dependancy?Zend Framework 2 中的 DI。如何实现循环依赖?
【发布时间】:2012-03-10 02:05:39
【问题描述】:

如何实现:

<?php
class MyClass1
{
     public function __construct(MyClass2 $objClass2)
     {
          $this->objClass2 = $objClass2;
      }
}

class MyClass2
{
     public function setClass1(MyClass1 $objClass1)
    {
          $this->objClass1 = $objClass1;
     }
}
?>

我的意思是我需要创建一个MyClass2 对象,将其放入MyClass1 构造函数中,然后我需要将MyClass1 对象放入之前通过setClass1 方法创建的MyClass2 对象中。 ZendFramework 的 DI config 可以做吗?

【问题讨论】:

  • 这听起来很恐怖。问题应该是,如何避免循环依赖。
  • @markus 例如,有Mother 和Child 类。孩子认识他/她的母亲,母亲也认识她的孩子。这种情况下如何避免循环依赖?
  • 现实世界的类比不是反模式的论据。告诉我一个真正的编程必要性,我会告诉你如何更好地解决它。
  • @markus-tharkun 例如,论坛脚本。我有带有方法getPost 的PostsRepository 类和带有方法getUserProfileInfo 的UsersRepository 类。这些方法应该返回包含所有必要数据的对象:帖子应该有作者(用户对象),而 ProfileInfo 应该有帖子数。所以,PostRepository 和 UsersRepository 应该有相互链接。

标签: php zend-framework frameworks dependency-injection zend-framework2


【解决方案1】:

你不想要这个!如果您将 Class2 注入 Class1 您已经可以通过使用$class1-&gt;class2-&gt;somethingSomething(); 访问它,或者您可以通过$class-&gt;getClass2(); 等来检索它...我不知道您的实际情况是什么,但是当您有循环依赖,出了点问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-29
    • 1970-01-01
    • 2011-04-08
    相关资源
    最近更新 更多