이전에 ZF0.6 버전에서 ZF를 확장하는 방법에 대한 기사를 쓴 적이 있습니다. 비슷한 글이라고 해야되나 ZF1.0RC1 버전으로 환경이 변경되었습니다.
ZF 확장을 시작하기 전에 ZF 매뉴얼(ZF 권장)에서 일부 명령 사양을 읽어 보는 것이 좋으며 독자가 ZF에 대해 더 잘 이해할 수 있기를 바랍니다. 그렇지 않은 경우 먼저 PHPCHIAN의 ZF 버전으로 이동하여 자세히 알아보거나 phpeye로 이동하여 관련 정보를 찾을 수 있습니다.
ZF의 검증인은 강력한 검증 기능을 제공하지만 실제 운영에서는 여전히 너무 번거롭습니다. 예를 들어 이메일을 확인하기 위해 ZF의 코드는 다음과 같습니다.
require_once 'Zend/Validate/EmailAddress.php' ->isValid($email)) {
// email이 나타납니다. 유효하려면
} else {
// 이메일이 유효하지 않습니다.
foreach ($validator->getMessages( ) as $message) {
echo "$messagen"; > }
}
?>
ZF를 사용하지 않는 검증 방법과 여전히 매우 유사하다는 것을 발견하셨나요? 단지 ZF가 이메일 확인의 세부 사항을 요약하는 데 도움을 준 것뿐입니다. 그렇다면 이 효과를 위해 어떻게 단순화할 수 있을까요? (다음은 확장 호출 방법입니다)
$validate = new Phpbean_Validate()
$validate -> set_breakOnFailure(false)
$validate -> 'email',new Zend_Validate_EmailAddress(),'이메일 주소가 잘못되었습니다!'); 사이에 '%value%'이(가) 조건을 충족하지 않습니다.')
$validate -> add('password',new Phpbean_Validate_isEqual ($_POST['repassword']),'두 개의 입력 비밀번호가 일치하지 않습니다.')
$authcode = new Phpbean_Img_Code()
$validate -> add('yanxue8_authcode',new Phpbean_Validate_isEqual($authcode ->authcode($_POST['yanxue8_authcode_mdcode'],'DECODE')),'인증 코드가 일치하지 않습니다!')
if( ! $validate -> validator($_POST) ){
error_page('Registration failed',$validate->getMessageText());
} }
?> 위의 방법을 사용하세요. 한편으로는 코드가 명확합니다. , 이는 또한 일관된 오류 처리를 용이하게 합니다. 그럼 어떻게 해야 할까요?
핵심은 Phpbean_Validate 클래스입니다.
실제로 Phpbean_Validate::add() 메소드를 사용하면 검증 규칙을 하나씩 추가하는 것이 매우 간단합니다. 그런 다음 Phpbean_Validate::validator()를 호출하여 확인하면 괜찮습니다.
구체적인 구현 단계는 다음과 같습니다.
먼저 zend와 동일한 디렉터리에 phpbean 폴더를 추가한 후, 그 안에 Validator.php 파일을 추가합니다.
그런 다음 Phpbean_Validate 클래스 정의를 validator.php 파일에 추가합니다. 참고(자신의 파일 이름과 경로 이름으로 변경할 수 있지만 클래스 이름과 일관성을 유지해야 합니다).
여기에서는 참고용으로만 Phpbean_Validate 클래스의 구현 프로세스를 제공합니다.
클래스 Phpbean_Validate{
보호됨 $_fileds =array();
보호된 $_message = array();
보호됨 $_breakOnFailure = true;
공용 함수 set_breakOnFailure($value){
$this->_breakOnFailure = $value;
}
공용 함수 add($key,$validate,$message='',$break
if( empty($breakOnFailure) ) $breakOnFailure = $this->_breakOnFailure;
$ this->_fileds[] = array($key,$validate,$message,$breakOnFailure);
return $this;
}
공용 함수 검사기($array = array()){
if(empty($array)) $array = $_POST;
if (is_array($this->_fileds)) {
foreach($this->_fileds as $filed){
list($key,$validate,$message,$breakOnFailure) = $filed; $this->_message [][] = $message;
if($breakOnFailure) break;
}
}
if(!empty($message)) $validate->setMessage( $message);
if( !$validate->isValid($array[$key]) ){
$this->_message[$key][] = $validate->getMessages() ;
if($breakOnFailure) break;
}
}
if(!empty($this->_message))return false;
true를 반환합니다.
}
true를 반환합니다.
}
공용 함수 getMessage(){
return $this->_message;
}
공용 함수 getMessageText(){
$str = '';
foreach ($this->_message as $ms){
foreach ($ms as $m) $str .= $m[0]."n";
}
반환 $str;
}
}
?>
另外你还可以直接扩展一些验证规则类。下篇我再详细说。
위 내용은 PHP 확장 ZF-Validate 확장에 대한 내용을 소개하고 있으며, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.