2014-04-10 55 views
1

我有兩個類在它們的構造函數中初始化兩個對象。見下面的例子兩個類的構造函數互相調用

class A 
{ 
function __construct() 
{ 
    $this->b=new B(); 
} 
} 

class B 
{ 
function __construct() 
{ 
$this->a=new A() 
} 

有,儘管這樣做並不是這方面的任何解決方案:)

+0

這些對象是否應該互相引用?即,應該'$ this-> b-> a === $ this'? – raina77ow

+0

是的。有一種方法。只是不要這樣做。這是無限遞歸。 '// hint':解釋一下你想要什麼 –

+0

你想要什麼? – Daan

回答

2

這很難回答,因爲這是非常抽象的,但如果我沒有理解好,我會傾向於做:

class A { 
    function __construct() { 
     $this->b = new B($this); 
    } 
} 

class B { 
    function __construct(A $a) { 
     $this->a = $a; 
    } 
} 

我想在這裏B是A的一個組成部分。如果不是這種情況,你可能有你的設計有問題。

2

遞歸循環3000 - >

class A 
{ 
    private $b; 

    function __construct() 
    { 
     $this->b=new B(); 
    } 
} 

class B 
{ 
    private $a; 

    function __construct() 
    { 
     $this->a=new A() 
    } 
} 

不知道你想什麼與此實現,雖然。

相關問題