2014-10-06 86 views
1

我有兩個PHP類,ResultCounterResultDetail,第一個依賴於第二個,但第二個不依賴於第一個。我感到這些類應該正式鏈接,但我不知道該怎麼做。鏈接相關類但不能擴展

我曾考慮過創建第一個子類,但這不起作用,因爲第一個有許多(但有限數量)的第二個實例。

下面是這兩個類的基礎知識,讓您知道我在說什麼。

class ResultCounter { 
    private $W; 
    private $L; 
    private $D; 
    private $T; 
    private $A; 
    private $X; 
    private $B1; 
    private $B2; 

    function __construct() { 
     $this->W = new ResultDetail; 
     $this->L = new ResultDetail; 
     $this->D = new ResultDetail; 
     $this->T = new ResultDetail; 
     $this->A = new ResultDetail; 
     $this->X = new ResultDetail; 
     $this->B1 = new ResultDetail; 
     $this->B2 = new ResultDetail; 
    } 

    // some other functions 
} 

class ResultDetail { 
    public $count = 0; 
    public $batfirst; 
    public $batsecond; 

    // some functions but don't ever reference ResultCounter 
} 

在項目中有時還需要單獨的ResultDetail實例。

有沒有辦法鏈接這些類,以便ResultCounter明確依賴於ResultDetail?是否足夠在構造函數中定義實例,或者我應該不擔心這個問題?

+0

緊耦合(您已經擁有)通常被認爲是不好的做法。爲什麼你想添加更多的「鏈接」?我會換另一種方式,並考慮讓ResultCounter類在構造函數中使用一個IResultDetailFactory – Steve 2014-10-06 21:13:07

回答

2

我不會爲此擔心。在任何應用程序類中將依賴於其他類。如果它們保存在同一個源代碼樹中,那麼通常會認爲它們可能是依賴的。在任何情況下,如果ResultDetail由於任何原因失蹤,當有人試圖構建一個ResultCounter,那麼PHP會給他們一個錯誤,說它找不到ResultDetail