2013-10-23 58 views
0

我想創建一個HTML表單來存儲關於企業在數據庫中的信息。 使用OOP是個好主意嗎? 我想創建一個「Enterprise」類,並且每個set(...)方法都有檢查方法來驗證表單。使用OOP /類來驗證表單?

企業對象將填充表單中的信息。 如果數據無效,則會引發異常,這會導致HTML表單中出現錯誤消息。

如果一切正確,屬性/信息將被寫入數據庫。

+0

如果它只是一個簡單的表格,我不會加太多的複雜性: 只是一個給了這個想法的例子。這只是我的看法。 –

+0

是的,這是一個正確的方法。 –

回答

0

因此,最後,您需要有一些與數據庫表相匹配的類,以便將此數據插入到該表中。

如果您設想您的表單需要支持大量類似但略有不同的「企業」,您可以創建一個超級「企業」類,併爲您希望支持的每個不同企業創建一個子類。否則,如果您認爲您對「企業」的定義將保持相對靜態,那麼創建面向對象的層次結構所增加的複雜性就是您可以花更多時間在應用程序的其餘部分上工作的時間!

1

使用OOP通常是一個好主意(除非你的項目是非常小)。 Here is a link另一個問題,有人已經寫了一個類,做我認爲你正在嘗試的東西。幾乎所有的框架都提供了某種驗證類。仔細查看其中的任何代碼將是一次很好的體驗。

0

我不知道是否存在「form」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); 
      } 
     } 
    );