3

如何實現這一點:Zend框架中的DI 2.如何使循環依賴?

<?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配置中可以做什麼?

+4

這聽起來像一個恐怖的場景。問題應該是,如何避免循環依賴。 – markus 2012-02-19 12:38:14

+0

@markus例如,有母親和孩子的課程。一個孩子認識他/她的母親,一個母親認識她的孩子。在這種情況下如何避免循環依賴? – varan 2012-02-19 19:25:19

+0

真實世界的比喻不是反模式的論據。告訴我一個真正的編程必要性,我會試着告訴你如何更好地解決它。 – markus 2012-02-19 20:22:02

回答

3

你不想要這個!如果您將Class2注入到Class1中,則您可以通過使用$class1->class2->somethingSomething();訪問它,或者可以通過$class->getClass2();等取回它......我不知道您的實際場景是什麼,但是當您有循環依賴關係時,某些內容已經消失出差錯。