2014-09-13 58 views
1

我正在研究驗證不同的東西,如空,長度等的表單驗證的PHP類。在php類中有很多方法是否正常?

這裏有幾個我在那裏的方法。正如標題所說,在課堂上有一堆方法是正常的嗎? 只是回答是或否就足夠了。

//Checks if is username empty 
     function validate_empty_username(){ 
      if($this->empty_username){ 
       echo "<li>Please fill username field</li>"; 
       return false; 
      } 
     } 

     //Checks if is password empty 
     function validate_empty_password(){ 
      if($this->empty_password){ 
       echo "<li>Please fill password field</li>"; 
       return false; 
      } 
     } 

     //Checks if is email empty 
     function validate_empty_email(){ 
      if($this->empty_email){ 
       echo "<li>Please fill email field</li>"; 
       return false; 
      } 
     } 

     //Check username length is short 
     function validate_username_length_min(){ 
      if($this->get_username_length < 3){ 
       echo "<li>Username provided's too short!</li>"; 
       return false; 
      } 
     } 

     //Check password length if short 
     function validate_password_length_min(){ 
      if($this->get_password_length < 5){ 
       echo "<li>Password provided's too short!</li>"; 
       return false; 
      } 
     } 

     //Check email length if short 
     function validate_email_length_min(){ 
      if($this->get_email_length < 5){ 
       echo "<li>Email provided's too short!</li>"; 
       return false; 
      } 
     } 
+0

當然,只要方法與班級有關。 – 2014-09-13 13:47:54

+0

在這裏你的很多方法似乎都非常相關,我可能會在「檢查郵件」調用下將所有這些方法都彈出來 - 但是說了這樣的話,沒有什麼問題可以加載類的東西。 – Fluffeh 2014-09-13 13:47:58

+0

謝謝@ S.pols – 1to1k 2014-09-13 13:56:28

回答

2

這不是lots ......只要是有意義的,並且不違反原則的,你沒事。只需遵循編程規則和OOP。

你已經證明這些方法顯然是有點相關,如果你把它們放到一類是沒有問題的。如果這個邏輯遍佈在你的源代碼中,我認爲它會更糟糕。

+0

不能投票,@walther 15代表需要。 但感謝的答案:) – 1to1k 2014-09-13 13:57:35

+0

@ 1to1k,沒問題,你可以稍後再回來投票;)順便說一下,如果你需要幫助優化代碼,我們有一個很好的站點:http://codereview.stackexchange。 com/ – walther 2014-09-13 14:07:08

0

我假設你將使用所有這些功能的驗證一次,所以我會建議把它們放在一起。

但通常只要你想,你可以有多種功能於一類,但最終你會得到一個點,你有,而不是使代碼更簡單,你只是做一個很大的混亂如此多的功能。

我只把不相關的代碼放在單獨的函數中。因爲當你有類似的代碼部分時,通常在單一函數中編寫代碼更容易。

+0

我想我會做3個更多的功能,並把所有類似的功能放在裏面。像check_email將有幾個功能讓說check_length check_length等。 因爲ATM我打電話的方法逐一..我會藏漢要做的就是調用一個主要的方法,如check_email然後打電話給別人(check_length .. check_empty )方法從裏面。 這聽起來像一個好主意,還是我在這裏錯過了一些東西? @ zoran404我如何刪除我的問題..人們開始 - 任何我..需要刪除它之前,我失去了發佈更多問題的能力 – 1to1k 2014-09-13 14:11:45

+0

當然,你會使用這些1 1,但如果你總是會以相同的順序使用它們,那麼不需要使用多個功能,但如果你這樣做它也不是一個錯誤。 (如果你想刪除這個問題,它的底部有一個刪除按鈕,就在標籤下方,雖然你不需要這樣做,因爲你有積極的一面;現在你也可以立刻投票) – zoran404 2014-09-14 14:04:47

1

在我的經驗是這樣的:你開始寫你的類,然後你回來的東西添加到一個方法,那麼你可以通過一個類似的功能擴展您的類,最後你就會意識到,它變髒並且有很多東西,你可以合併成一個(私有)函數,不僅可以減少代碼的長度,而且可以更容易維護。

所以我的建議是:總是花一點時間,想想你要做什麼,以及你要實現的方法是否是一個子函數鏈,這些子函數本身在別的地方會很有用。儘量讓自己的功能儘可能原子化,但只是將需要的功能宣佈爲公開。

+0

嘿@Robert。伴侶我試圖把類似的方法放入函數中,但是當我調用這個函數時,它裏面的方法不會被調用,我應該怎麼做,以便當我調用函數時,函數內部的方法也被調用?謝謝 – 1to1k 2014-09-13 15:05:39

+0

@ 1to1k如果你正在使用嵌套函數(函數內部的函數,或者你的方法中的函數內部函數),並且你正在使用變量/對象例如「$ this」,那麼你必須通過變量/對象(「$ this」 )作爲方法內部函數的參數,否則該函數不能執行。這可能是你的問題。(btw「$ this」是一個對象指針) – zoran404 2014-09-14 14:17:33

0

是的。只要班級中的方法相關,就很好去了。你的是一個很短的列表。如果你想驗證,你可以使用GUMP Validator。它也很簡單。

+0

hey @ user3107673。伴侶我試圖把類似的方法放入函數中,但是當我調用這個函數時,它裏面的方法不會被調用,我應該怎麼做,以便當我調用函數時,函數內部的方法也被調用?謝謝 – 1to1k 2014-09-13 15:05:04

+0

@ 1to1k你能分享你的代碼嗎? – user3107673 2014-09-14 10:36:59

+0

這裏交配。根據我所說的,我改變了一個代碼。 http://pastebin.com/FQM7dAux @ user3107673 – 1to1k 2014-09-14 20:35:59

相關問題