2017-08-30 44 views
0

讓我們想象一下,我們有一個名爲Register的類,該類僅註冊用戶,並在驗證未通過時顯示消息。PHP中的類方法和SOLID原理

class Register { 

     function register_user() { 

      // Do Validation, Get message and Show it if faild 
      ... 
      $message = $this->get_message($error_code); 
      ... 


      // Register User Codes 
      ... 

     } 


     // Some other related methods 
     ... 


     function get_message($error_code) { 

      // Returns **different messages** based on error code. 

     } 

    } 

我的問題是:應該得到的消息是註冊類的一部分,還是應該有自己的處理進行註冊,登錄,ForgotPassword消息類...?

哪一個更實用友好?

+0

但是,這裏有另一個問題:你爲什麼只有一個類來註冊?讓你的課更像用戶服務,註冊,登錄,忘記密碼,......方法是否更有意義? – Mikey

+0

@Mikey將所有這些方法放在一個類中顯然不是SOLID(單個責任原則失敗) – metalzade

回答

2

在一個良好的OOP實現中,您將創建一個帶有諸如註冊,登錄,註銷,顯示用戶,修改用戶等功能(方法)的用戶類。你的對象是用戶。有一個只有register_user函數的類,只有一個login_user函數的另一個類會使你的代碼無理由複雜化,並且違背了基本的OOP。我對SOLID並不瞭解,但通過使用諸如private,protected,final等修飾符,您當然可以使各個函數安全可靠。

+0

Stephane擁有一大堆方法的巨大類是錯誤的,因爲它在如此多層次上失敗。緊耦合,不可測試性和維護惡夢只是一些例子。 這可能適用於小型應用程序或模塊,但是當處理其他開發人員也參與的大型項目時,應用程序始終在不斷增長併發生變化,這會失敗。 SOLID原則也確保我們能夠避免常見的陷阱和代碼異味,並且易於維護和擴展代碼。 – metalzade

+0

是的,我當然同意你的觀點,即巨型類並不是很好的軟件設計實踐,但是每個類都有一個類似於問題的方法,既不像過程編程那樣,也不是SOLID的目標。 –

0

堅實的原則是改善您的應用程序的體系結構。因此,這些原則與定義類,Inhertence,類耦合,管理依賴關係等有關。我是具有超過5年經驗的編碼人員,因爲根據我的經驗,它的一點點難以遵循應用程序中的所有原則,但您應始終保持這些原則在你的腦海中,應該儘可能多地跟隨。 有一個博客解釋了所有5個原則與現實生活中的例子,你應該看看http://tekina.info/solid-principles/