Php 使用OOP/类验证表单?

Php 使用OOP/类验证表单?,php,class,oop,object,design-patterns,Php,Class,Oop,Object,Design Patterns,我想创建一个HTML表单,在数据库中存储有关企业的信息。 使用OOP是个好主意吗? 我想创建一个“企业”类,每个set(…)方法都有check方法来验证表单 企业对象将由表单中的信息填充。 如果数据无效,将引发异常,这将导致HTML表单中出现错误消息 如果一切正常,属性/信息将被写入数据库。因此,最终,您将需要一些与将插入此数据的数据库表相匹配的类 如果您设想您的表单将需要支持许多主要相似但略有不同的“企业”,那么您可以为您希望支持的每个不同的企业创建一个超级“企业”类并将其子类化 否则,如果您

我想创建一个HTML表单,在数据库中存储有关企业的信息。 使用OOP是个好主意吗? 我想创建一个“企业”类,每个set(…)方法都有check方法来验证表单

企业对象将由表单中的信息填充。 如果数据无效,将引发异常,这将导致HTML表单中出现错误消息


如果一切正常,属性/信息将被写入数据库。

因此,最终,您将需要一些与将插入此数据的数据库表相匹配的类

如果您设想您的表单将需要支持许多主要相似但略有不同的“企业”,那么您可以为您希望支持的每个不同的企业创建一个超级“企业”类并将其子类化


否则,如果您认为您对“企业”的定义将保持相对静态,那么创建面向对象层次结构的额外复杂性将是您最好花时间处理应用程序的其余部分

使用OOP通常是一个好主意(除非您的项目非常小)。还有一个问题,有人已经写了一个类来做我认为你正在尝试的事情。几乎所有框架都提供某种验证类。查看其中任何一个的代码都将是一次很好的体验。

我不知道是否存在“表单”OOP模式,但在我们使用onPHP框架的项目中,我们有这样的类。 我真的很喜欢用它来验证和预处理“来自世界”的任何传入数据。如果您不使用任何框架,那么最好开始使用任何公认的框架,因为大多数框架都具有模型/表单验证功能。 这只是一个给出想法的例子:

/* @var $request HttpRequest */
$form = AccountFormFactory::getRegistrationForm()
    ->import($request->getPost())
    ->checkRules();

if ($form->getErrors()) {
    // didn't pass validation, do something
    ...
}
在AccountFormFactory::getRegistrationForm()中的某个地方


如果它只是一个简单的形式,我不会增加太多的复杂性。这只是我的意见。是的,这是一个正确的方法。
$form
    ->add(Primitive::string('email')->setPattern('~regex pattern~')->required())
    ->add(Primitive::string('password')->required())
    ->addMissingLabel('email', TranslationMarkers::REQUIRED_VALUE)
    ->addMissingLabel('password', TranslationMarkers::REQUIRED_VALUE)
    ->addWrongLabel('email', TranslationMarkers::INVALID_EMAIL)
    ->addWrongLabel('password', TranslationMarkers::INVALID_PASSWORD)
    ->addRule(
        'uniqueEmail', 
        function (Form $form) {
            $email = $form->exportValue('email');
            if (User::dao()->findByEmail($newEmail)) {
                $form
                    ->markWrong('email')
                    ->addWrongLabel('email', TranslationMarkers::DUPLICATE_EMAIL);
            }
        }
    );