PHP:验证函数应该存储在哪里?

时间:2009-08-09 03:53:19

标签: php validation frameworks model

我正在使用PHP MVC框架,我一直把我的所有验证函数都集中在一个helper类中,当我需要它时会调用它。

但是,不是关于使用数据的逻辑模型,而不仅仅是数据库?将验证函数放在我的一个模型中会更有意义吗?

由于

3 个答案:

答案 0 :(得分: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';
    }
}

如果您正在使用框架,它可能已经拥有可以以类似方式使用或扩展的验证类。

答案 1 :(得分:0)

是的,我会在模型中进行验证。但是,您没有提到您正在使用的MVC框架。如果您正在使用CodeIgniter及其内置验证,则会强制您在控制器中进行验证。

答案 2 :(得分:0)

在这种情况下,验证来自用户输入 - 您可能希望为许多模型验证相同的输入“类型”。我将使用一组验证类(请参阅Zend_Validate)并将其用作Controller中的输入过滤器/验证器。

由于它的In / Out操作,我看到Controller就是这个地方。模型应该更关心确保数据的存储和检索。