我正在使用一個PHP MVC框架,並且我只是將所有的驗證函數都包含在一個輔助類中,當我需要它時會被調用。PHP:應該在哪裏存儲驗證功能?
但是,不是關於使用數據而不是數據庫的邏輯模型嗎?將驗證函數放入我的模型中會更有意義嗎?
謝謝
我正在使用一個PHP MVC框架,並且我只是將所有的驗證函數都包含在一個輔助類中,當我需要它時會被調用。PHP:應該在哪裏存儲驗證功能?
但是,不是關於使用數據而不是數據庫的邏輯模型嗎?將驗證函數放入我的模型中會更有意義嗎?
謝謝
是的,我會在模型中進行驗證。但是,您沒有提及您使用的是哪個MVC框架。如果你使用的是CodeIgniter及其內置的驗證,它有點迫使你在控制器中進行驗證。
模型層用於建模您的應用程序在現實世界中的工作方式,因此它不一定是處理數據。
驗證功能的常用方法是爲您希望執行的每種驗證類型創建一個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';
}
}
如果你使用一個框架,它可能已經有一個可以利用或以類似的方式擴展驗證類。
在這種情況下的驗證來自用戶輸入 - 您將要爲許多模型驗證相同的輸入'類型',可能。我會使用一組驗證類(請參閱Zend_Validate),並將它們用作Controller中的輸入過濾器/驗證器。
由於它的輸入/輸出操作,我看到控制器的地方。模型應該更關心確保您的數據存儲和檢索。