ThinkpHP 5 검증 기의 구체 적 인 사용
저 희 는 API 개발 을 할 때 클 라 이언 트 가 보 내 온 인 자 를 받 아들 일 것 입 니 다.모두 가 이 인 자 는 믿 을 수 없다 는 것 을 알 고 있 습 니 다.저희 백 엔 드 개발 자 는 이 인 자 를 검증 해 야 합 니 다.저 는 예전 의 개발 에서 tp5 의 검증 기 만 알 고 그의 용 도 를 몰 랐 습 니 다.예전 의 개발 검증 은 모델 필드 를 바탕 으로 하 는 검증 이 었 기 때 문 입 니 다.검증 기 는 API 개발 에 더욱 적합 하 므 로 오늘 은 검증 기의 사용 에 대해 간단히 말씀 드 리 겠 습 니 다.
디 렉 터 리:
검증 기 만 들 기
단독 검증 기 작성
호출 검증
1.검증 기 만 들 기
우선 검증 기 를 저장 할 폴 더 가 필요 합 니 다.모듈 아래 컨트롤 러 와 같은 등급 의 폴 더 를 만 들 고 vaidate 라 고 이름 을 지 었 습 니 다.
그리고 우 리 는 검증 기 를 만 들 수 있 습 니 다.우 리 는 하나의 클래스 를 만 들 고 tp5 의 vaidate 류 를 계승 하면 됩 니 다.
그러나 대상 을 대상 으로 하 는 생각 을 잘 아 는 친 구 는 우리 가 하나의 방법 이 필요 하 다 는 것 을 알 아야 한다.모든 검증 기 를 사용 해 야 하지만 tp5 의 소스 코드 를 수정 하지 않 을 때.우 리 는 하나의 종 류 를 더 써 서 우리 의 기류 로 삼 는 다.모든 검증 기 는 이 기본 클래스 를 계승 한 다음 에 이 기본 클래스 는 tp5 의 vaidate 류 를 계승 합 니 다.
여기 저희 가 베이스 Validate 라 고 이름 을 지 었 어 요.
그럼 이제 제대로 된 검증 기 를 만 들 겠 습 니 다.예 를 들 어:
namespace app\index\validate;
use think\Validate;
class User extends Validate
{
protected $rule = [
'name' => 'require|max:25',
'email' => 'email',
];
}
컨트롤 러 나 모델 에 가서 예화 하고 호출 합 니 다.
// ,
$data = [
'name'=>'thinkphp',
'email'=>'[email protected]'
];
$validate = Loader::validate('User');
if(!$validate->check($data)){
dump($validate->getError());
}
이런 검증 기의 응용 은 다 썼 다.간소화 할 만 한 점 이 있 는 지 살 펴 보 자.4.567917.먼저 검 증 된 데 이 터 는 우리 가 클 라 이언 트 에 게 서 받 은 것 이다.그러면 첫 번 째 단 계 는 데 이 터 를 받 아들 이 는 것 이다4.567917.그 다음 에 우 리 는 데 이 터 를 검증 해 야 한다.만약 에 검증 이 통과 되 지 않 으 면 잘못된 정 보 를 되 돌려 야 한다이 두 부 는 인터페이스 가 요청 될 때마다 해 야 한다.그럼 이 걸 BaseValidate 에 넣 고 싶 어 요.
namespace app\home\validate;
use think\Exception;
use think\Request;
use think\Validate;
class BaseValidate extends Validate
{
public function goCheck($data='')
{
//
$requestObj=Request::instance();
//
empty($data)&&$data=$requestObj->param();
if ($this->check($data)) {
//
return true;
}else{
//
$error=$this->getError();
//
throw new Exception($error);
}
}
}
이 go Check 방법 이 봉 인 된 후에 이 검증 규칙 이 어디 에 있 느 냐 고 물 을 수도 있 습 니 다.2.단독 검증 기 작성
전에 BaseValidate 가 계승 되 는 데 쓰 인 다 고 말 한 적 이 있 습 니 다.그러면 진정한 검증 기 는 아직 쓰기 시작 하지 않 았 습 니 다.규칙 은 이 검증 기 에 제정 된다.좀 더 깊이 이해 하기 위해 서 는 사용자 정의 검증 규칙 도 사용 했다.사실 tp 가 써 놓 은 검증 규칙 은 충분 할 것 같 아 요.
우 리 는 가장 자주 받 아들 이 는 데 이 터 를 예 로 들 자.그것 이 바로 id 와 같은 이 id 는 우리 데이터베이스 에 있 는 특정한 데이터 의 id 를 대표 하 는 것 이다.이 id 는 우 리 는 기호 없 이 자동 으로 증가 하 는 메 인 키 로 디자인 되 고 성인 어 를 번역 하면 정수 이다.그러면 고객 이 보 내 온 매개 변수 가 음수 나 소수 라면 검증 을 통과 해 서 는 안 된다.
우 리 는 상술 한 수요 에 따라 검증 기 를 만 들 것 이다.위 치 는 여전히 이전 과 같 습 니 다.vaidate 폴 더 아래 에 있 습 니 다.
IdMustBePositive Int.php 라 고 이름 을 지 었 습 니 다.
우선 기초 검증 기 를 물 려 받 아야 합 니 다.
class IdMustBePositiveInt extends BaseValidate
그리고 규칙 을 제정 하여 고정된 구성원 변수 에 값 을 부여 합 니 다.
protected $rule = [
//require , tp5 , positiveInt
'id' => 'require|positiveInt'
];
그렇다면 사용자 정의 규칙 은 어떻게 할 것 인가?사실 간단 하 다.보 호 된 방법 을 정의 합 니 다.
// , , , data。 ,
protected function positiveInt($value, $rule='', $data)
{
if (is_int(($value+0))&&($value+0)>0) {
return true;
}else{
return 'id ';
}
}
!!메모:여기 서 실 패 를 판단 하면 false 가 아 닌 오류 메 시 지 를 되 돌려 줍 니 다.3.호출 검증
우리 가 이전에 포장 한 것 에 따 르 면 우리 가 달성 해 야 할 효 과 는 바로 파 라 메 터 를 받 아들 이 고 파 라 메 터 를 하나 로 검증 하 는 것 이다.그럼 이제 검증 을 어떻게 호출 할 까요?
대단 하 다
public function test($id)
{
//
(new IdMustBePositiveInt)->goCheck();
}
4.567917.이런 코드 한 마디 로 검증 을 직접 해결 합 니 다.우리 가 id 검증 기 를 예화 할 때,그것 의 부모 클래스 의 go Check 방법 을 호출 합 니 다 TP5 인증 규칙 사용
① 정적 호출(내 장 된 규칙 으로 단일 데 이 터 를 검증 하고 반환 값 은 불 값)
//
Validate::dateFormat('2016-03-09','Y-m-d'); // true
//
Validate::is('2016-06-03','date'); // true
//
Validate::is('[email protected]','email'); // true
//
Validate::in('a',['a','b','c']); // true
//
Validate::gt(10,8); // true
//
Validate::regex(100,'\d+'); // true
② 모델 검증(모델 에서 의 검증 방식)
$User = new User;
$result = $User->validate(
[
'name' => 'require|max:25',
'email' => 'email',
],
[
'name.require' => ' ',
'name.max' => ' 25 ',
'email' => ' ',
]
)->save($data);
if(false === $result){
//
dump($User->getError());
}
③ 컨트롤 러 인증(컨트롤 러 에서 검증)컨트롤 러 에서 검증 을 하고\think\\Controller 를 계승 해 야 한다 면 컨트롤 러 류 가 제공 하 는 vaidate 방법 으로 검증 할 수 있 습 니 다.다음 과 같 습 니 다.
$result = $this->validate(
[
'name' => 'thinkphp',
'email' => '[email protected]',
],
[
'name' => 'require|max:25',
'email' => 'email',
]);
if(true !== $result){
//
dump($result);
}
컨트롤 러 의 인증 코드 는 다음 과 같이 간소화 할 수 있 습 니 다.
$result = $this->validate($data,'User');
if(true !== $result){
//
dump($result);
}
필드 를 사용 하려 면,사용 가능:
$result = $this->validate($data,'User.edit');
if(true !== $result){
//
dump($result);
}
vaidate 방법 에 서 는 사전 조작 리 셋 도 지원 합 니 다.사용 방식 은 다음 과 같 습 니 다.
$result = $this->validate($data,'User.edit',[],[$this,'some']);
if(true !== $result){
//
dump($result);
}
자,이번 tp5 검증 기의 소 개 는 여기까지 입 니 다.여러분 의 학습 에 도움 이 되 고 저희 도 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
windows 환경 에서 Composer 를 사용 하여 ThinkPHP 5 를 설치 합 니 다.1.환경 검사,환경 에 Composer 가 설치 되 어 있 는 지 확인 하 십시오.Composer 는 PHP 의 의존 관리 도구 입 니 다.아래 명령 을 통 해 미 러 를 설정 합 니 다. 명령:composer co...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.