2009-08-09 71 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中的输入过滤器/验证器。

由于它的输入/输出操作,我看到控制器的地方。模型应该更关心确保您的数据存储和检索。