[英]server side user input validation - class design*
我測試客戶端和服務器端的用戶輸入。 在服務器端,有一個簡短的類,由靜態函數組成,用於驗證用戶輸入。 課程注冊和登錄會調用這些功能。 我擔心的是我不應該使用靜態函數。 我應該使用靜態函數來驗證用戶輸入嗎? 謝謝。
/*check*/
class check
{
static function empty_user($a)
{
return (int)!in_array('',$a);
}
static function name($a)
{
return preg_match('/^[a-zA-Z-\.\s]{1,40}$/',$a);
}
static function email($a)
{
return preg_match('/^[a-zA-Z0-9._s-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{1,4}$/',$a);
}
static function pass($a)
{
return preg_match('/^[a-zA-Z0-9!@#$%^&*]{6,20}$/',$a);
}
}
該類的目的最終與關於靜態成員函數和非靜態成員函數的決策無關。 如果類的對象具有狀態 ,或者該類僅僅是命名空間的替身,那么重要的是什么。
在后一種情況下,類只是在一個公共名稱空間中收集一堆松散相關的函數,但是你永遠不會實例化該類。 在前一種情況下,您應該將類的設計目的所共有的所有數據作為私有成員放入類中,並在您的(非靜態)函數中使用這些成員。
在您的示例中,我可以看到您將$a
a設為私有成員:
class CheckInput
{
private $data;
public function init($a) { $this->data = $a; } // or write a constructor
public function email() { ... $this->data ... }
// ...
}
這樣,您為每組輸入數據實例化一個CheckInput
對象。
我對此的看法是,如果這只是一個Utility類,那么靜態函數應該完成這項工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.