2012-05-24 65 views
1

我正在開發一個需要大量單獨對象(類)一起工作的項目。我已經想出瞭解決問題的方案,但我只是想聽聽其他觀點,因爲我覺得我錯過了一些東西。所以基本上,我有一個訪問者和一個位置類,每個都被初始化並存儲在一個變量中,比如$ visitor和$ location;兩者都具有唯一的訪問者數據和頁面調用引用的位置。結合兩個PHP對象(類)

我想要/需要做的事實質上是做一個'橋',所以我可以調用一個方法,將影響這兩個對象。例如,我希望能夠調用$ bridge-> favorite();並且除了增加位置所具有的收藏夾的數量之外,它還將該最喜歡的參考添加到訪問者的簡檔中。

我已經把現在做本質上是由一個橋樑:

$bridge = new Bridge($locationclass, $visitorclass); 
$bridge->favorite(); 

所以它本質上調用另一個類我有,「橋」,與法的最愛,那麼將使用已經設置了兩個班。我認爲這是一個好的解決方案,但我覺得我錯過了一個更好的解決方案。

所有的輸入將是非常有益的,謝謝你的時間!

回答

3

如果您需要這樣做,這意味着您的應用程序設計不好。

要回答您的示例,您只需將位置添加到訪問者最喜歡的地方即可。
如果您想要統計一次添加到收藏夾的次數,請參閱次數有多少訪問者將它加入收藏夾。不要存儲兩次相同的信息。

+0

嗨,薩米,謝謝你的迴應。感謝您的反饋! – Jonathan

1
class Bridge{ 

private $classes; 

function construct($classes) 
{ 
$this->classes = $classes; 
} 

function _call($name,$params) 
{ 
    foreach($classes as $class) 
    { 
    if(method_exists($class,$name)){ 
    return call_user_method_array($name,$class,$params); 
    } 
    }else{ 
    ... 
    } 
} 
+0

這只是一種解決方法,如果您沒有其他人想解決問題,請使用它。 – Pethical

+0

嘿Pethical,謝謝你的回覆。這與我目前的情況非常相似,您認爲這是解決問題的最佳解決方案嗎? – Jonathan

+0

如果你沒有其他人,那麼我的回答是肯定的。但是,如果可以的話,您需要重新設計您的應用程序,因爲這不是最佳做法。 – Pethical