2011-07-20 31 views
1

我正在寫一個自定義的域管理類,它使用各種外部服務,包裝類的種類,使他們一起工作。PHP類的結構,是否使用靜態方法?

在哪裏可以將連接邏輯放在這個類中?我不會一次需要所有的服務,所以把它放在構造函數中是沒有意義的,我實際上認爲一些方法會更好,因爲它們並不真正相互關聯,他們唯一的共同點就是潛在的聯繫。

我將不得不線沿線的方法:

  • registerDomain()(聯繫人Nominet的)
  • updateDomain(),
  • domainAvailable(),(聯繫人Nominet的)
  • REGISTERDNS (),(接觸亞馬遜& Nominet的)
  • updateDNS(),

我應該檢查每個調用中的連接屬性(並在不存在的情況下創建它)或連接到類構造函數中?

+0

的想法:你的方法的共同點可以在包裝類構造器中設置。對於其他方法,您可以擴展包裝類或構建單獨的類,並只傳遞它們需要的工作。 – hornetbzz

回答

2

我認爲這將是有意義的沿此線創造財產以後:

class DomainManager { 
    public function __construct($domainData) {} 
    public function registerDomain() { 
     //connect 
     //do stuff 
    } 
    public function updateDomain() { 
     //connect 
     //do stuff 
    } 
    public function isAvailable() { 
     //connect 
     //do stuff 
    } 
    public function registerDns() { 
     //connect 
     //do stuff 
    } 
    public function updateDns() { 
     //connect 
     //do stuff 
    } 
    private function connectToNominet() {} 
    private function connectToAmazon() {} 
} 

然後你有一個不錯的對象封裝可用於域的邏輯:

$domain1 = new DomainManager('example.com', $user, $foo); 
$domain->registerDomain(); 
$domain->registerDns(); 
+0

很酷,你會在需要時將連接存儲在屬性中嗎?'if(!$ this-> nominet){$ this-> connectToNominet()}'?或者應該connectToNominet返回連接? – Dunhamzzz

+0

取決於連接類型,如果它像無規律的ajax請求那樣無狀態,則不需要它。 然而,如果它是一個更永久的連接,就像你將要建立一個數據庫服務器一樣,它會使存儲連接。 您需要自己構思的問題是:我可以對連接進行多重請求而無需重新連接嗎? – NDM

+0

也許「DomainController」是一個比Manager更好的名字。 – hakre