2009-08-09 105 views
1

我正在使用一個PHP MVC框架,並且我只是將所有的驗證函數都包含在一個輔助類中,當我需要它時會被調用。PHP:應該在哪裏存儲驗證功能?

但是,不是關於使用數據而不是數據庫的邏輯模型嗎?將驗證函數放入我的模型中會更有意義嗎?

謝謝

回答

0

是的,我會在模型中進行驗證。但是,您沒有提及您使用的是哪個MVC框架。如果你使用的是CodeIgniter及其內置的驗證,它有點迫使你在控制器中進行驗證。

3

模型層用於建模您的應用程序在現實世界中的工作方式,因此它不一定是處理數據。

驗證功能的常用方法是爲您希望執行的每種驗證類型創建一個Validator類。驗證器應該實現一個接口,這樣任何使用Validator對象的代碼都可以確保它們的工作都一樣。

事情是這樣的:

interface iValidator 
{ 
    public function validate($mixed); 
    public function getMessage(); 
} 

class Validator_Email implements iValidator 
{ 
    public function validate($data) 
    { 
     //validate an email address 
    } 

    public function getMessage() 
    { 
     return 'invalid email address.'; 
    } 
} 

class Validator_PositiveInteger implements iValidator 
{ 
    public function validate($data) 
    { 
     return ctype_digit((string) $data) && $data != 0; 
    } 

    public function getMessage() 
    { 
     return 'must be a positive integer'; 
    } 
} 

如果你使用一個框架,它可能已經有一個可以利用或以類似的方式擴展驗證類。

0

在這種情況下的驗證來自用戶輸入 - 您將要爲許多模型驗證相同的輸入'類型',可能。我會使用一組驗證類(請參閱Zend_Validate),並將它們用作Controller中的輸入過濾器/驗證器。

由於它的輸入/輸出操作,我看到控制器的地方。模型應該更關心確保您的數據存儲和檢索。