php拡張ZF―Validate拡張


以前はZF 0.6バージョンでZFを拡張する方法について記事を書きました。これは似たような文章というべきですが、環境はZF 1.0RC 1バージョンに変わりました。     ZFの拡大を始める前に、ZFマニュアルの中のいくつかの命令仕様(ZFの推奨使用)を見てから、読者がZFに対してより良い理解を持っていることをお勧めします。もしないなら、先にPHPCHIANのZFバージョンに行って詳しく調べたり、phpeyeに行って関連資料を調べたりします。      ZFのvalidatorは強力な検証機能を提供していますが、実際の操作ではやはり煩雑です。例えば検証メールは、ZFのコードで次のようになります。php  require_オンス 'Zend/Validate/Email Address.php';  $validator = new Zend_Validate_Email Address()  if ($validator->isValid($email) {      // email appars ト be valid  } else {      // email is invalid; print the リリース      foreach ($validator->get Messages() as $メッセージ {          echo "$メッセージ      }  }  ?>      発見されましたか?それとも似ていますか?私達はZFの検証方式を使いません。ただZFはメール検証の詳細を包装してくれました。私たちはどうやってこのような効果を簡略化しますか?以下は私が拡張した後の呼び出し方式です。php  $validate = new Ppbean_Validate();          $validate -> setbreak OnFailure(false);          $validate -> add('email',new Zend_Validate_メールアドレスが間違っています。          $validate -> add('username',new Zend_Validate_SteringLength(3,15)、'ユーザ名の長さは3から15の間でなければなりません!\'%value%\'は条件を満たしていません。          $validate -> add('password',new Zend_Validate_StringLength(6,20)、'パスワードの長さは6から20の間でなければなりません!'          $validate -> add('password',new Ppbean_Validate_isEqual($u)POST['repassword]),'2回の入力パスワードが一致しません。          $authcode = new Ppbean_Img_コード          $validate -> add('yanxue 8_authcode'new Ppbean_Validate_isequal($authcode->>authcode($u)POST['yanxue 8_auth code_mdcode','DECODE'),'検証コードが一致していません!'          if( !$validate -> validator($u)POST) ){              error_page('登録失敗'、validate->get Message Text();          }  ?>      上のような方式でコードがはっきりしている一方、有利に同意したエラー処理もします。どうやってこうすればいいですか?    キーはPPPubeanですValidateというクラスです。    実现するのは简単です。Validate:add()方法は一つの条の検証規則を加入することです。その後、Pubean_を呼び出しますValidate:validator()を検証すればいいです。    具体的な実施手順は以下の通りである。    まず、zendの同級ディレクトリにphpbeanフォルダを追加して、中にValidator.phpファイルを追加します。    その後、validator.phpファイルにPhop bean_を追加します。Validateという類の定義。注意(自分のファイル名とパス名に変更できますが、クラス名と一致するように注意してください)。    ここでPhopean_を提供します。Validate類の実現過程は、ご参考までに。  クラス Ppbean_Validate{      protected $_fileds =array();      protected $_メッセージ = array();      protected $_break OnFailure = true;      public 機能 setbreak OnFailure($value){          $this->_break OnFailure = $value;      }      public 機能 add($key、$validate、$message='、$break OnFailure='){          if( empty($break OnFailure) ) $break OnFailure = $this->_break OnFailure           $this->_fileds[] = ray($key、$validate、$message、$break OnFailure);          return $this      }      public 機能 validator($array) = array(){          if(empty($array) $array = $_POST;          if (is_array($this->_fileds) {              foreach ($this->_fileds as $filed){                  list($key、$validate、$message、$break OnFailure) = $filed                  if(empty($key){                      if(validate){                          $this->_メッセージ[][] = $メッセージ                          if($break OnFailure) break;                       }                      contine;                  }                  if(empty($message) $validate->set Message($message);                  if( !$validate->isValid($array[$key]) ){                      $this->_メッセージ[$key][] = $validate->getMessages()                      if($break OnFailure) break;                   }              }              if(empty($this->_メッセージ false;              return true;          }          return true;      }      public 機能 get Message(){          return $this->_メッセージ      }      public 機能 get Message Text(){          $str = '';          foreach ($this->_メッセージ as $ms){              foreach ($ms as $m) $str .= $m[0].“”          }          return $str      }  }  ?>     また、直接的にいくつかの検証ルールクラスを広げることもできます。下編はもう少し詳しく話します。