Valitron은 종속성이 없는 간단하고 최소한이며 우아한 독립형 검증 라이브러리입니다. Valitron은 읽기 쉽고 간결한 구문에 중점을 두고 간단하고 간단한 검증 방법을 사용합니다. Valitron은 여러분이 찾고 있던 간단하고 실용적인 검증 라이브러리입니다.
Tidelift 구독으로 vlucas/valitron 지원 받기
Valitron은 Symfony의 HttpFoundation과 같은 다른 프레임워크의 대규모 구성 요소에 종속되어 기본 유효성 검사에 실제로 필요하지 않은 수많은 추가 파일을 가져오는 다른 유효성 검사 라이브러리에 대한 불만을 해결하기 위해 만들어졌습니다. 또한 다른 유효성 검사 라이브러리에서 요구하는 것처럼 새 클래스를 인스턴스화하고 값을 한 번에 하나씩 유효성 검사하여 각 값을 개별적으로 유효성 검사하는 대신 한 번의 호출로 모든 유효성 검사를 실행하는 데 사용되는 의도적으로 간단한 구문이 있습니다.
간단히 말해서 Valitron은 검증 라이브러리에서 찾고 있었지만 지금까지 찾을 수 없었던 모든 것입니다. 간단한 실용적인 구문, 의미가 있는 경량 코드, 사용자 정의 콜백 및 검증을 위한 확장 가능, 잘 테스트되었으며 종속성이 없습니다. . 시작해 봅시다.
Valitron은 Composer를 사용하여 다음을 설치하고 업데이트합니다.
curl -s http://getcomposer.org/installer | php
php composer.phar require vlucas/valitron
아래 예제에서는 PHP 5.4 구문을 사용하지만 Valitron은 PHP 5.3 이상에서 작동합니다.
사용법은 간단하고 간단합니다. 유효성을 검사하려는 데이터 배열을 제공하고 몇 가지 규칙을 추가한 다음 validate()
호출하면 됩니다. 오류가 있으면 errors()
호출하여 오류를 가져올 수 있습니다.
$ v = new Valitron Validator ( array ( ' name ' => ' Chester Tester ' ));
$ v -> rule ( ' required ' , ' name ' );
if ( $ v -> validate ()) {
echo " Yay! We're all good! " ;
} else {
// Errors
print_r ( $ v -> errors ());
}
이 형식을 사용하면 $_POST
데이터를 직접 쉽게 확인할 수 있으며 필드 배열에 required
규칙을 적용할 수도 있습니다.
$ v = new Valitron Validator ( $ _POST );
$ v -> rule ( ' required ' , [ ' name ' , ' email ' ]);
$ v -> rule ( ' email ' , ' email ' );
if ( $ v -> validate ()) {
echo " Yay! We're all good! " ;
} else {
// Errors
print_r ( $ v -> errors ());
}
다차원 배열의 구성원에 액세스하려면 점 구문을 사용하고 배열의 각 구성원을 확인하려면 별표를 사용할 수 있습니다.
$ v = new Valitron Validator ( array ( ' settings ' => array (
array ( ' threshold ' => 50 ),
array ( ' threshold ' => 90 )
)));
$ v -> rule ( ' max ' , ' settings.*.threshold ' , 100 );
if ( $ v -> validate ()) {
echo " Yay! We're all good! " ;
} else {
// Errors
print_r ( $ v -> errors ());
}
또는 점 구문을 사용하여 숫자 배열의 모든 구성원을 검증합니다.
$ v = new Valitron Validator ( array ( ' values ' => array ( 50 , 90 )));
$ v -> rule ( ' max ' , ' values.* ' , 100 );
if ( $ v -> validate ()) {
echo " Yay! We're all good! " ;
} else {
// Errors
print_r ( $ v -> errors ());
}
점 표기법을 사용하여 중첩된 값에 액세스할 수도 있습니다.
$ v = new Valitron Validator ( array ( ' user ' => array ( ' first_name ' => ' Steve ' , ' last_name ' => ' Smith ' , ' username ' => ' Batman123 ' )));
$ v -> rule ( ' alpha ' , ' user.first_name ' )-> rule ( ' alpha ' , ' user.last_name ' )-> rule ( ' alphaNum ' , ' user.username ' );
if ( $ v -> validate ()) {
echo " Yay! We're all good! " ;
} else {
// Errors
print_r ( $ v -> errors ());
}
전역적으로 언어 및 언어 디렉토리 설정:
// boot or config file
use Valitron Validator as V ;
V:: langDir ( __DIR__ . ' /validator_lang ' ); // always set langDir before lang.
V:: lang ( ' ar ' );
오류 메시지 출력에서 {field} 이름을 비활성화합니다.
use Valitron Validator as V ;
$ v = new Valitron Validator ([ ' name ' => ' John ' ]);
$ v -> rule ( ' required ' , [ ' name ' ]);
// Disable prepending the labels
$ v -> setPrependLabels ( false );
// Error output for the "false" condition
[
[ " name " ] => [
" is required "
]
]
// Error output for the default (true) condition
[
[ " name " ] => [
" name is required "
]
]
필수 조건부 규칙을 사용하여 조건부로 값을 요구할 수 있습니다. 이 예에서는 인증을 위해 이메일과 비밀번호가 모두 없을 때 토큰이 필요하고, 이메일 주소가 있을 때 비밀번호가 필요합니다.
// this rule set would work for either data set...
$ data = [ ' email ' => ' [email protected] ' , ' password ' => ' mypassword ' ];
// or...
$ data = [ ' token ' => ' jashdjahs83rufh89y38h38h ' ];
$ v = new Valitron Validator ( $ data );
$ v -> rules ([
' requiredWithout ' => [
[ ' token ' , [ ' email ' , ' password ' ], true ]
],
' requiredWith ' => [
[ ' password ' , [ ' email ' ]]
],
' email ' => [
[ ' email ' ]
]
' optional ' => [
[ ' email ' ]
]
]);
$ this -> assertTrue ( $ v -> validate ());
required
- 필드가 필요합니다requiredWith
- 다른 필드가 있는 경우 필드가 필수입니다.requiredWithout
- 다른 필드가 없으면 필드가 필수입니다.equals
- 필드가 다른 필드와 일치해야 합니다(이메일/비밀번호 확인).different
- 필드는 다른 필드와 달라야 합니다.accepted
- 체크박스 또는 라디오를 수락해야 합니다(yes, on, 1, true).numeric
- 숫자여야 합니다.integer
- 정수여야 합니다.boolean
- 부울이어야 합니다.array
- 배열이어야 합니다.length
- 문자열은 특정 길이여야 합니다.lengthBetween
- 문자열은 지정된 길이 사이에 있어야 합니다.lengthMin
- 문자열은 지정된 길이보다 커야 합니다.lengthMax
- 문자열은 지정된 길이보다 작아야 합니다.min
- 최소max
- 최대listContains
- 주어진 배열 값에 대해 in_array 검사를 수행합니다( in
과 반대 방향).in
- 주어진 배열 값에 대해 in_array 검사를 수행합니다.notIn
- 규칙 in
부정(값 배열이 아님)ip
- 유효한 IP 주소ipv4
- 유효한 IP v4 주소ipv6
- 유효한 IP v6 주소email
- 유효한 이메일 주소emailDNS
- 활성 DNS 레코드가 있는 유효한 이메일 주소url
- 유효한 URLurlActive
- 활성 DNS 레코드가 있는 유효한 URLalpha
- 알파벳 문자만alphaNum
- 알파벳 및 숫자만ascii
- ASCII 문자만slug
- URL 슬러그 문자(az, 0-9, -, _)regex
- 필드가 주어진 정규식 패턴과 일치합니다.date
- 필드가 유효한 날짜입니다.dateFormat
- 필드는 지정된 형식의 유효한 날짜입니다.dateBefore
- 필드가 유효한 날짜이고 지정된 날짜 이전입니다.dateAfter
- 필드가 유효한 날짜이고 지정된 날짜 이후입니다.contains
- 필드는 문자열이며 지정된 문자열을 포함합니다.subset
- 필드가 배열 또는 스칼라이고 모든 요소가 지정된 배열에 포함되어 있습니다.containsUnique
- 필드는 배열이며 고유한 값을 포함합니다.creditCard
- 필드는 유효한 신용카드 번호입니다.instanceOf
- 필드에 지정된 클래스의 인스턴스가 포함되어 있습니다.optional
- 데이터 배열에 값을 포함할 필요가 없습니다. 그러나 만약 그렇다면 유효성 검사를 통과해야 합니다.arrayHasKeys
- 필드는 배열이며 지정된 모든 키를 포함합니다.참고 : 부동 소수점 숫자를 최소/최대 유효성 검사기와 비교하는 경우 정확성과 신뢰성을 높이려면 BCMath 확장을 설치해야 합니다. Valitron이 작동하는 데 확장 프로그램이 필요하지는 않지만 Valitron은 가능한 경우 확장 프로그램을 사용하므로 적극 권장됩니다.
required
규칙은 필드가 데이터 배열에 존재하는지 확인하고 null 또는 빈 문자열이 아닌지 확인합니다.
$ v -> rule ( ' required ' , ' field_name ' );
추가 매개변수를 사용하면 이 규칙을 더욱 유연하게 만들 수 있으며 데이터 배열에 필드가 있는지만 확인할 수 있습니다.
$ v -> rule ( ' required ' , ' field_name ' , true );
대체 구문.
$ v = new Valitron Validator ([ ' username ' => ' spiderman ' , ' password ' => ' Gr33nG0Blin ' , ' required_but_null ' => null ]);
$ v -> rules ([
' required ' => [
[ ' username ' ],
[ ' password ' ],
[ ' required_but_null ' , true ] // boolean flag allows empty value so long as the field name is set on the data array
]
]);
$ v -> validate ();
requiredWith
규칙은 다른 필드가 존재하고 null이 아니고 빈 문자열이 아닌 경우 해당 필드가 null이 아니고 빈 문자열이 아닌 필수인지 확인합니다.
// password field will be required when the username field is provided and not empty
$ v -> rule ( ' requiredWith ' , ' password ' , ' username ' );
대체 구문.
$ v = new Valitron Validator ([ ' username ' => ' spiderman ' , ' password ' => ' Gr33nG0Blin ' ]);
$ v -> rules ([
' requiredWith ' => [
[ ' password ' , ' username ' ]
]
]);
$ v -> validate ();
참고 여러 값을 배열로 제공할 수 있습니다. 이 경우 필드 중 하나라도 있으면 해당 필드가 필수입니다.
// in this case the password field will be required if the username or email fields are present
$ v -> rule ( ' requiredWith ' , ' password ' , [ ' username ' , ' email ' ]);
대체 구문.
$ v = new Valitron Validator ([ ' username ' => ' spiderman ' , ' password ' => ' Gr33nG0Blin ' ]);
$ v -> rules ([
' requiredWith ' => [
[ ' password ' , [ ' username ' , ' email ' ]]
]
]);
$ v -> validate ();
strict 플래그는 requiredWith
규칙을 requiredWithAll
로 변경합니다. 이는 다른 필드가 모두 존재하고 null이 아니고 빈 문자열이 아닌 경우에만 필드를 요구합니다.
// in this example the suffix field is required only when both the first_name and last_name are provided
$ v -> rule ( ' requiredWith ' , ' suffix ' , [ ' first_name ' , ' last_name ' ], true );
대체 구문.
$ v = new Valitron Validator ([ ' first_name ' => ' steve ' , ' last_name ' => ' holt ' , ' suffix ' => ' Mr ' ]);
$ v -> rules ([
' requiredWith ' => [
[ ' suffix ' , [ ' first_name ' , ' last_name ' ], true ]
]
]);
$ v -> validate ();
마찬가지로 이 경우에는 모든 필드가 제공되지 않고 엄격 모드에서는 접미사 필드가 필요하지 않으므로 validate()
여전히 true를 반환합니다.
$ v = new Valitron Validator ([ ' first_name ' => ' steve ' ]);
$ v -> rules ([
' requiredWith ' => [
[ ' suffix ' , [ ' first_name ' , ' last_name ' ], true ]
]
]);
$ v -> validate ();
requiredWithout
규칙은 다른 필드가 없는 경우 해당 필드가 필수인지, null이 아닌지, 빈 문자열이 아닌지 확인합니다.
// this rule will require the username field when the first_name is not present
$ v -> rule ( ' requiredWithout ' , ' username ' , ' first_name ' )
대체 구문.
// this will return true, as the username is provided when the first_name is not provided
$ v = new Valitron Validator ([ ' username ' => ' spiderman ' ]);
$ v -> rules ([
' requiredWithout ' => [
[ ' username ' , ' first_name ' ]
]
]);
$ v -> validate ();
참고 여러 값을 배열로 제공할 수 있습니다. 이 경우 필드가 하나도 없으면 해당 필드가 필수입니다.
// in this case the username field will be required if either the first_name or last_name fields are not present
$ v -> rule ( ' requiredWithout ' , ' username ' , [ ' first_name ' , ' last_name ' ]);
대체 구문.
// this passes validation because although the last_name field is not present, the username is provided
$ v = new Valitron Validator ([ ' username ' => ' spiderman ' , ' first_name ' => ' Peter ' ]);
$ v -> rules ([
' requiredWithout ' => [
[ ' username ' , [ ' first_name ' , ' last_name ' ]]
]
]);
$ v -> validate ();
strict 플래그는 requiredWithout
규칙을 requiredWithoutAll
로 변경하여 다른 필드가 모두 존재하지 않는 경우에만 해당 필드를 요구합니다.
// in this example the username field is required only when both the first_name and last_name are not provided
$ v -> rule ( ' requiredWithout ' , ' username ' , [ ' first_name ' , ' last_name ' ], true );
대체 구문.
$ v = new Valitron Validator ([ ' username ' => ' BatMan ' ]);
$ v -> rules ([
' requiredWithout ' => [
[ ' username ' , [ ' first_name ' , ' last_name ' ], true ]
]
]);
$ v -> validate ();
마찬가지로, 이 경우 모든 필드가 제공되므로 엄격 모드에서는 사용자 이름 필드가 필요하지 않으므로 validate()
여전히 true를 반환합니다.
$ v = new Valitron Validator ([ ' first_name ' => ' steve ' , ' last_name ' => ' holt ' ]);
$ v -> rules ([
' requiredWithout ' => [
[ ' suffix ' , [ ' first_name ' , ' last_name ' ], true ]
]
]);
$ v -> validate ();
equals
규칙은 데이터 배열에서 두 필드가 동일한지, 두 번째 필드가 null이 아닌지 확인합니다.
$ v -> rule ( ' equals ' , ' password ' , ' confirmPassword ' );
대체 구문.
$ v = new Valitron Validator ([ ' password ' => ' youshouldnotseethis ' , ' confirmPassword ' => ' youshouldnotseethis ' ]);
$ v -> rules ([
' equals ' => [
[ ' password ' , ' confirmPassword ' ]
]
]);
$ v -> validate ();
different
규칙은 데이터 배열에서 두 필드가 동일하지 않거나 다르며 두 번째 필드가 null이 아닌지 확인합니다.
$ v -> rule ( ' different ' , ' username ' , ' password ' );
대체 구문.
$ v = new Valitron Validator ([ ' username ' => ' spiderman ' , ' password ' => ' Gr33nG0Blin ' ]);
$ v -> rules ([
' different ' => [
[ ' username ' , ' password ' ]
]
]);
$ v -> validate ();
accepted
규칙은 필드가 'yes', 'on', 1 또는 true인지 확인합니다.
$ v -> rule ( ' accepted ' , ' remember_me ' );
대체 구문.
$ v = new Valitron Validator ([ ' remember_me ' => true ]);
$ v -> rules ([
' accepted ' => [
[ ' remember_me ' ]
]
]);
$ v -> validate ();
numeric
규칙은 필드가 숫자인지 확인합니다. 이는 PHP의 is_numeric() 함수와 유사합니다.
$ v -> rule ( ' numeric ' , ' amount ' );
대체 구문.
$ v = new Valitron Validator ([ ' amount ' => 3.14 ]);
$ v -> rules ([
' numeric ' => [
[ ' amount ' ]
]
]);
$ v -> validate ();
integer
규칙은 필드가 정수인지 확인합니다.
$ v -> rule ( ' integer ' , ' age ' );
대체 구문.
$ v = new Valitron Validator ([ ' age ' => ' 27 ' ]);
$ v -> rules ([
' integer ' => [
[ ' age ' ]
]
]);
$ v -> validate ();
엄격 모드에 대한 선택적 부울 플래그를 사용하면 정수가 엄격한 숫자 형식으로 제공되도록 할 수 있습니다. 따라서 다음 규칙은 true로 평가됩니다.
$ v = new Valitron Validator ([ ' negative ' => ' -27 ' , ' positive ' => ' 27 ' ]);
$ v -> rule ( ' integer ' , ' age ' , true );
$ v -> rule ( ' integer ' , ' height ' , true );
$ v -> validate ();
이 경우 양수에 대한 +가 중복되므로 다음은 false로 평가됩니다.
$ v = new Valitron Validator ([ ' negative ' => ' -27 ' , ' positive ' => ' +27 ' ]);
$ v -> rule ( ' integer ' , ' age ' , true );
$ v -> rule ( ' integer ' , ' height ' , true );
$ v -> validate ();
boolean
규칙은 필드가 부울인지 확인합니다. 이는 PHP의 is_bool() 함수와 유사합니다.
$ v -> rule ( ' boolean ' , ' remember_me ' );
대체 구문.
$ v = new Valitron Validator ([ ' remember_me ' => true ]);
$ v -> rules ([
' boolean ' => [
[ ' remember_me ' ]
]
]);
$ v -> validate ();
array
규칙은 필드가 배열인지 확인합니다. 이는 PHP의 is_array() 함수와 유사합니다.
$ v -> rule ( ' array ' , ' user_notifications ' );
대체 구문.
$ v = new Valitron Validator ([ ' user_notifications ' => [ ' bulletin_notifications ' => true , ' marketing_notifications ' => false , ' message_notification ' => true ]]);
$ v -> rules ([
' array ' => [
[ ' user_notifications ' ]
]
]);
$ v -> validate ();
length
규칙은 필드가 정확히 주어진 길이인지, 필드가 유효한 문자열인지 확인합니다.
$ v -> rule ( ' length ' , ' username ' , 10 );
대체 구문.
$ v = new Valitron Validator ([ ' username ' => ' bobburgers ' ]);
$ v -> rules ([
' length ' => [
[ ' username ' , 10 ]
]
]);
$ v -> validate ();
lengthBetween
규칙은 필드가 지정된 길이 범위 사이에 있고 필드가 유효한 문자열인지 확인합니다.
$ v -> rule ( ' lengthBetween ' , ' username ' , 1 , 10 );
대체 구문.
$ v = new Valitron Validator ([ ' username ' => ' bobburgers ' ]);
$ v -> rules ([
' lengthBetween ' => [
[ ' username ' , 1 , 10 ]
]
]);
$ v -> validate ();
lengthMin
규칙은 필드가 최소한 지정된 길이인지, 필드가 유효한 문자열인지 확인합니다.
$ v -> rule ( ' lengthMin ' , ' username ' , 5 );
대체 구문.
$ v = new Valitron Validator ([ ' username ' => ' martha ' ]);
$ v -> rules ([
' lengthMin ' => [
[ ' username ' , 5 ]
]
]);
$ v -> validate ();
lengthMax
규칙은 필드가 최대 주어진 길이인지, 필드가 유효한 문자열인지 확인합니다.
$ v -> rule ( ' lengthMax ' , ' username ' , 10 );
대체 구문.
$ v = new Valitron Validator ([ ' username ' => ' bruins91 ' ]);
$ v -> rules ([
' lengthMax ' => [
[ ' username ' , 10 ]
]
]);
$ v -> validate ();
min
규칙은 필드가 최소한 지정된 값이고 제공된 값이 숫자인지 확인합니다.
$ v -> rule ( ' min ' , ' age ' , 18 );
대체 구문.
$ v = new Valitron Validator ([ ' age ' => 28 ]);
$ v -> rules ([
' min ' => [
[ ' age ' , 18 ]
]
]);
$ v -> validate ();
max
규칙은 필드가 주어진 값 이하인지 그리고 제공된 값이 숫자인지 확인합니다.
$ v -> rule ( ' max ' , ' age ' , 12 );
대체 구문.
$ v = new Valitron Validator ([ ' age ' => 10 ]);
$ v -> rules ([
' max ' => [
[ ' age ' , 12 ]
]
]);
$ v -> validate ();
listContains
규칙은 해당 필드가 지정된 값 배열에 있는지 확인합니다.
$ v -> rule ( ' listContains ' , ' color ' , ' yellow ' );
대체 구문.
$ v = new Valitron Validator ([ ' color ' => [ ' blue ' , ' green ' , ' red ' , ' yellow ' ]]);
$ v -> rules ([
' listContains ' => [
[ ' color ' , ' yellow ' ]
]
]);
$ v -> validate ();
in
규칙은 해당 필드가 지정된 값 배열에 있는지 확인합니다.
$ v -> rule ( ' in ' , ' color ' , [ ' blue ' , ' green ' , ' red ' , ' purple ' ]);
대체 구문.
$ v = new Valitron Validator ([ ' color ' => ' purple ' ]);
$ v -> rules ([
' in ' => [
[ ' color ' , [ ' blue ' , ' green ' , ' red ' , ' purple ' ]]
]
]);
$ v -> validate ();
notIn
규칙은 해당 필드가 지정된 값 배열에 존재하지 않는지 확인합니다.
$ v -> rule ( ' notIn ' , ' color ' , [ ' blue ' , ' green ' , ' red ' , ' yellow ' ]);
대체 구문.
$ v = new Valitron Validator ([ ' color ' => ' purple ' ]);
$ v -> rules ([
' notIn ' => [
[ ' color ' , [ ' blue ' , ' green ' , ' red ' , ' yellow ' ]]
]
]);
$ v -> validate ();
ip
규칙은 필드가 유효한 IP 주소인지 확인합니다. 여기에는 IPv4, IPv6, 개인 및 예약된 범위가 포함됩니다.
$ v -> rule ( ' ip ' , ' user_ip ' );
대체 구문.
$ v = new Valitron Validator ([ ' user_ip ' => ' 127.0.0.1 ' ]);
$ v -> rules ([
' ip ' => [
[ ' user_ip ' ]
]
]);
$ v -> validate ();
ipv4
규칙은 필드가 유효한 IPv4 주소인지 확인합니다.
$ v -> rule ( ' ipv4 ' , ' user_ip ' );
대체 구문.
$ v = new Valitron Validator ([ ' user_ip ' => ' 127.0.0.1 ' ]);
$ v -> rules ([
' ipv4 ' => [
[ ' user_ip ' ]
]
]);
$ v -> validate ();
ipv6
규칙은 필드가 유효한 IPv6 주소인지 확인합니다.
$ v -> rule ( ' ipv6 ' , ' user_ip ' );
대체 구문.
$ v = new Valitron Validator ([ ' user_ip ' => ' 0:0:0:0:0:0:0:1 ' ]);
$ v -> rules ([
' ipv6 ' => [
[ ' user_ip ' ]
]
]);
$ v -> validate ();
email
규칙은 필드가 유효한 이메일 주소인지 확인합니다.
$ v -> rule ( ' email ' , ' user_email ' );
대체 구문.
$ v = new Valitron Validator ([ ' user_email ' => ' [email protected] ' ]);
$ v -> rules ([
' email ' => [
[ ' user_email ' ]
]
]);
$ v -> validate ();
emailDNS
규칙은 필드가 활성 DNS 레코드 또는 모든 유형이 있는 유효한 이메일 주소인지 확인합니다.
$ v -> rule ( ' emailDNS ' , ' user_email ' );
대체 구문.
$ v = new Valitron Validator ([ ' user_email ' => ' [email protected] ' ]);
$ v -> rules ([
' emailDNS ' => [
[ ' user_email ' ]
]
]);
$ v -> validate ();
url
규칙은 필드가 유효한 URL인지 확인합니다.
$ v -> rule ( ' url ' , ' website ' );
대체 구문.
$ v = new Valitron Validator ([ ' website ' => ' https://example.com/contact ' ]);
$ v -> rules ([
' url ' => [
[ ' website ' ]
]
]);
$ v -> validate ();
urlActive
규칙은 필드가 활성 A, AAAA 또는 CNAME 레코드가 있는 유효한 URL인지 확인합니다.
$ v -> rule ( ' urlActive ' , ' website ' );
대체 구문.
$ v = new Valitron Validator ([ ' website ' => ' https://example.com/contact ' ]);
$ v -> rules ([
' urlActive ' => [
[ ' website ' ]
]
]);
$ v -> validate ();
alpha
규칙은 필드에 알파벳 문자만 있는지 확인합니다.
$ v -> rule ( ' alpha ' , ' username ' );
대체 구문.
$ v = new Valitron Validator ([ ' username ' => ' batman ' ]);
$ v -> rules ([
' alpha ' => [
[ ' username ' ]
]
]);
$ v -> validate ();
alphaNum
규칙은 필드에 알파벳 또는 숫자만 포함되어 있는지 확인합니다.
$ v -> rule ( ' alphaNum ' , ' username ' );
대체 구문.
$ v = new Valitron Validator ([ ' username ' => ' batman123 ' ]);
$ v -> rules ([
' alphaNum ' => [
[ ' username ' ]
]
]);
$ v -> validate ();
ascii
규칙은 필드에 ASCII 문자 집합의 문자만 포함되어 있는지 확인합니다.
$ v -> rule ( ' ascii ' , ' username ' );
대체 구문.
$ v = new Valitron Validator ([ ' username ' => ' batman123 ' ]);
$ v -> rules ([
' ascii ' => [
[ ' username ' ]
]
]);
$ v -> validate ();
slug
규칙은 필드에 URL 슬러그 문자(az, 0-9, -, _)만 포함되어 있는지 확인합니다.
$ v -> rule ( ' slug ' , ' username ' );
대체 구문.
$ v = new Valitron Validator ([ ' username ' => ' L337-H4ckZ0rz_123 ' ]);
$ v -> rules ([
' slug ' => [
[ ' username ' ]
]
]);
$ v -> validate ();
regex
규칙은 필드가 지정된 정규식 패턴과 일치하는지 확인합니다. (이 정규식은 문자열이 5-10자 사이의 영숫자인지 확인합니다.)
$ v -> rule ( ' regex ' , ' username ' , ' /^[a-zA-Z0-9]{5,10}$/ ' );
대체 구문.
$ v = new Valitron Validator ([ ' username ' => ' Batman123 ' ]);
$ v -> rules ([
' regex ' => [
[ ' username ' , ' /^[a-zA-Z0-9]{5,10}$/ ' ]
]
]);
$ v -> validate ();
date
규칙은 제공된 필드가 유효한 DateTime 개체인지 또는 문자열이 strtotime()을 통해 Unix 타임스탬프로 변환될 수 있는지 확인합니다.
$ v -> rule ( ' date ' , ' created_at ' );
대체 구문.
$ v = new Valitron Validator ([ ' created_at ' => ' 2018-10-13 ' ]);
$ v -> rules ([
' date ' => [
[ ' created_at ' ]
]
]);
$ v -> validate ();
dateFormat
규칙은 제공된 필드가 지정된 날짜 형식의 유효한 날짜인지 확인합니다.
$ v -> rule ( ' dateFormat ' , ' created_at ' , ' Y-m-d ' );
대체 구문.
$ v = new Valitron Validator ([ ' created_at ' => ' 2018-10-13 ' ]);
$ v -> rules ([
' dateFormat ' => [
[ ' created_at ' , ' Y-m-d ' ]
]
]);
$ v -> validate ();
dateBefore
규칙은 제공된 필드가 지정된 날짜 이전의 유효한 날짜인지 확인합니다.
$ v -> rule ( ' dateBefore ' , ' created_at ' , ' 2018-10-13 ' );
대체 구문.
$ v = new Valitron Validator ([ ' created_at ' => ' 2018-09-01 ' ]);
$ v -> rules ([
' dateBefore ' => [
[ ' created_at ' , ' 2018-10-13 ' ]
]
]);
$ v -> validate ();
dateAfter
규칙은 제공된 필드가 지정된 날짜 이후의 유효한 날짜인지 확인합니다.
$ v -> rule ( ' dateAfter ' , ' created_at ' , ' 2018-10-13 ' );
대체 구문.
$ v = new Valitron Validator ([ ' created_at ' => ' 2018-09-01 ' ]);
$ v -> rules ([
' dateAfter ' => [
[ ' created_at ' , ' 2018-01-01 ' ]
]
]);
$ v -> validate ();
contains
규칙은 지정된 문자열이 필드 내에 존재하는지 확인하고 필드와 검색 값이 모두 유효한 문자열인지 확인합니다.
$ v -> rule ( ' contains ' , ' username ' , ' man ' );
대체 구문.
$ v = new Valitron Validator ([ ' username ' => ' Batman123 ' ]);
$ v -> rules ([
' contains ' => [
[ ' username ' , ' man ' ]
]
]);
$ v -> validate ();
참고 선택적 strict 플래그를 사용하여 대소문자를 구분할 수 있습니다. 다음 예는 true를 반환합니다.
$ v = new Valitron Validator ([ ' username ' => ' Batman123 ' ]);
$ v -> rules ([
' contains ' => [
[ ' username ' , ' man ' ]
]
]);
$ v -> validate ();
반면, 검색 문자열의 M은 제공된 값에서 대문자가 아니므로 false를 반환합니다.
$ v = new Valitron Validator ([ ' username ' => ' Batman123 ' ]);
$ v -> rules ([
' contains ' => [
[ ' username ' , ' Man ' , true ]
]
]);
$ v -> validate ();
subset
규칙은 필드가 스칼라 또는 배열 필드인지, 해당 필드의 모든 값이 지정된 값 집합 내에 포함되어 있는지 확인합니다.
$ v -> rule ( ' subset ' , ' colors ' , [ ' green ' , ' blue ' , ' orange ' ]);
대체 구문.
$ v = new Valitron Validator ([ ' colors ' => [ ' green ' , ' blue ' ]]);
$ v -> rules ([
' subset ' => [
[ ' colors ' , [ ' orange ' , ' green ' , ' blue ' , ' red ' ]]
]
]);
$ v -> validate ();
이 예에서는 제공된 색상인 보라색이 우리가 제공하는 허용 값 배열에 존재하지 않기 때문에 false를 반환합니다.
$ v = new Valitron Validator ([ ' colors ' => [ ' purple ' , ' blue ' ]]);
$ v -> rules ([
' subset ' => [
[ ' colors ' , [ ' orange ' , ' green ' , ' blue ' , ' red ' ]]
]
]);
$ v -> validate ();
containsUnique
규칙은 제공된 필드가 배열이고 포함된 모든 값이 고유한지, 즉 배열에 중복 값이 없는지 확인합니다.
$ v -> rule ( ' containsUnique ' , ' colors ' );
대체 구문.
$ v = new Valitron Validator ([ ' colors ' => [ ' purple ' , ' blue ' ]]);
$ v -> rules ([
' containsUnique ' => [
[ ' colors ' ]
]
]);
$ v -> validate ();
제공된 배열의 값이 중복되므로 이 예에서는 false를 반환합니다.
$ v = new Valitron Validator ([ ' colors ' => [ ' purple ' , ' purple ' ]]);
$ v -> rules ([
' containsUnique ' => [
[ ' colors ' ]
]
]);
$ v -> validate ();
현재 신용카드 확인을 통해 Visa visa
, Mastercard mastercard
, Dinersclub dinersclub
, American Express amex
또는 Discover discover
확인할 수 있습니다.
그러면 각 카드 유형에 대해 신용카드를 확인합니다.
$ v -> rule ( ' creditCard ' , ' credit_card ' );
선택적으로 카드 유형을 필터링하려면 다음 매개변수로 슬러그를 배열에 추가하세요.
$ v -> rule ( ' creditCard ' , ' credit_card ' , [ ' visa ' , ' mastercard ' ]);
한 가지 유형의 카드만 확인하려면 문자열로 입력하세요.
$ v -> rule ( ' creditCard ' , ' credit_card ' , ' visa ' );
카드 유형 정보가 클라이언트에서 오는 경우 유효한 카드 유형 배열을 지정할 수도 있습니다.
$ cardType = ' amex ' ;
$ v -> rule ( ' creditCard ' , ' credit_card ' , $ cardType , [ ' visa ' , ' mastercard ' ]);
$ v -> validate (); // false
instanceOf
규칙은 필드가 특정 클래스의 인스턴스인지 확인합니다.
$ v -> rule ( ' instanceOf ' , ' date ' , DateTime);
대체 구문.
$ v = new Valitron Validator ([ ' date ' => new DateTime ()]);
$ v -> rules ([
' instanceOf ' => [
[ ' date ' , ' DateTime ' ]
]
]);
$ v -> validate ();
참고 문자열 클래스 이름이 아닌 지정된 개체에 대해 값을 비교할 수도 있습니다. 이 예에서는 true도 반환합니다.
$ v = new Valitron Validator ([ ' date ' => new DateTime ()]);
$ existingDateObject = new DateTime ();
$ v -> rules ([
' instanceOf ' => [
[ ' date ' , $ existingDateObject ]
]
]);
$ v -> validate ();
optional
규칙은 필드가 데이터 세트에 있는 경우 모든 유효성 검사 규칙을 통과하도록 보장합니다.
$ v -> rule ( ' optional ' , ' username ' );
대체 구문. 이 예는 'username' 필드가 없거나 사용자 이름이 알파벳 문자인 경우 true를 반환합니다.
$ v = new Valitron Validator ([ ' username ' => ' batman ' ]);
$ v -> rules ([
' alpha ' => [
[ ' username ' ]
],
' optional ' => [
[ ' username ' ]
]
]);
$ v -> validate ();
이 예에서는 필드가 선택 사항이지만 제공되기 때문에 모든 유효성 검사 규칙을 통과해야 하지만 이 경우에는 통과하지 않기 때문에 false를 반환합니다.
$ v = new Valitron Validator ([ ' username ' => ' batman123 ' ]);
$ v -> rules ([
' alpha ' => [
[ ' username ' ]
],
' optional ' => [
[ ' username ' ]
]
]);
$ v -> validate ();
arrayHasKeys
규칙은 필드가 배열이고 지정된 키가 모두 포함되어 있는지 확인합니다. 필드가 배열이 아니거나 필수 키가 지정되지 않았거나 일부 키가 누락된 경우 false를 반환합니다.
$ v = new Valitron Validator ([
' address ' => [
' name ' => ' Jane Doe ' ,
' street ' => ' Doe Square ' ,
' city ' => ' Doe D.C. '
]
]);
$ v -> rule ( ' arrayHasKeys ' , ' address ' , [ ' name ' , ' street ' , ' city ' ]);
$ v -> validate ();
자신만의 유효성 검사 규칙을 추가하려면 규칙 이름, 사용자 정의 콜백 또는 클로저, 오류 발생 시 표시할 오류 메시지와 함께 addRule
메소드를 사용하세요. 제공된 콜백은 부울 true 또는 false를 반환해야 합니다.
Valitron Validator:: addRule ( ' alwaysFail ' , function ( $ field , $ value , array $ params , array $ fields ) {
return false ;
}, ' Everything you do is wrong. You fail. ' );
지정된 필드에만 유효한 일회성 규칙을 사용할 수도 있습니다.
$ v = new Valitron Validator ( array ( " foo " => " bar " ));
$ v -> rule ( function ( $ field , $ value , $ params , $ fields ) {
return true ;
}, " foo " )-> message ( " {field} failed... " );
이러한 규칙은 Validator
가 있는 범위에 정의된 변수에 액세스할 수 있기 때문에 유용합니다. Closure의 서명은 Validator::addRule
콜백의 서명과 동일합니다.
정적이 아닌 자신만의 규칙을 추가하려면(즉, 규칙이 정적이 아니고 Validator
인스턴스를 호출할 수 있는 경우) Validator::addInstanceRule
사용해야 합니다. 이 규칙은 Validator::addRule
과 동일한 매개변수를 사용하지만 Validator
인스턴스에서 호출되어야 합니다.
다음 구문을 사용하여 여러 규칙을 함께 연결할 수 있습니다.
$ v = new Valitron Validator ([ ' email_address ' => ' [email protected] ' ]);
$ v -> rule ( ' required ' , ' email_address ' )-> rule ( ' email ' , ' email_address ' );
$ v -> validate ();
규칙 수가 증가하면 한 번에 여러 규칙을 정의하기 위한 대체 구문을 선호할 수 있습니다.
$ rules = [
' required ' => ' foo ' ,
' accepted ' => ' bar ' ,
' integer ' => ' bar '
];
$ v = new Valitron Validator ( array ( ' foo ' => ' bar ' , ' bar ' => 1 ));
$ v -> rules ( $ rules );
$ v -> validate ();
규칙에 여러 매개변수가 필요하거나 문자열보다 더 복잡한 단일 매개변수가 필요한 경우 규칙을 배열로 래핑해야 합니다.
$ rules = [
' required ' => [
[ ' foo ' ],
[ ' bar ' ]
],
' length ' => [
[ ' foo ' , 3 ]
]
];
각 규칙 유형에 대해 여러 규칙을 지정할 수도 있습니다.
$ rules = [
' length ' => [
[ ' foo ' , 5 ],
[ ' bar ' , 5 ]
]
];
이러한 기술을 함께 사용하면 상대적으로 컴팩트한 데이터 구조로 완전한 규칙 정의를 생성할 수 있습니다.
배열을 통해 규칙 정의를 지정한 후에도 rule
메소드를 사용하여 개별 규칙을 계속 추가할 수 있습니다. 이는 사용자 정의 유효성 검사 규칙을 정의하는 경우 특히 유용합니다.
$ rules = [
' required ' => ' foo ' ,
' accepted ' => ' bar ' ,
' integer ' => ' bar '
];
$ v = new Valitron Validator ( array ( ' foo ' => ' bar ' , ' bar ' => 1 ));
$ v -> rules ( $ rules );
$ v -> rule ( ' min ' , ' bar ' , 0 );
$ v -> validate ();
필드별로 규칙을 추가할 수도 있습니다.
$ rules = [
' required ' ,
[ ' lengthMin ' , 4 ]
];
$ v = new Valitron Validator ( array ( ' foo ' => ' bar ' ));
$ v -> mapFieldRules ( ' foo ' , $ rules );
$ v -> validate ();
또는 한 번에 여러 필드의 경우:
$ rules = [
' foo ' => [ ' required ' , ' integer ' ],
' bar ' =>[ ' email ' , [ ' lengthMin ' , 4 ]]
];
$ v = new Valitron Validator(array( ' foo ' => ' bar ' , ' bar ' => '[email protected]));
$v->mapFieldsRules($rules);
$v->validate();
이 작업은 두 가지 방법으로 수행할 수 있습니다. 즉, 규칙에 개별 레이블을 추가하거나 규칙에 대한 모든 레이블 배열을 추가할 수 있습니다.
규칙에 개별 레이블을 추가하려면 규칙 뒤에 label
방법을 추가하기만 하면 됩니다.
$ v = new Valitron Validator ( array ());
$ v -> rule ( ' required ' , ' name ' )-> message ( ' {field} is required ' )-> label ( ' Name ' );
$ v -> validate ();
이 방법에는 극단적인 경우가 있습니다. 규칙 정의에서 필드 이름 배열을 사용할 수 없으므로 필드당 하나의 규칙을 사용해야 합니다. 따라서 이것은 작동하지 않습니다.
$ v = new Valitron Validator ( array ());
$ v -> rule ( ' required ' , array ( ' name ' , ' email ' ))-> message ( ' {field} is required ' )-> label ( ' Name ' );
$ v -> validate ();
그러나 우리는 단순히 labels
메소드를 추가함으로써 이 문제를 해결하기 위해 레이블 배열을 사용할 수 있습니다:
$ v = new Valitron Validator ( array ());
$ v -> rule ( ' required ' , array ( ' name ' , ' email ' ))-> message ( ' {field} is required ' );
$ v -> labels ( array (
' name ' => ' Name ' ,
' email ' => ' Email address '
));
$ v -> validate ();
이는 {field}
와 같은 오류 언어 파일에 새로운 태그 세트를 도입합니다. equals
과 같은 규칙을 사용하는 경우 {field1}
과 같은 값으로 필드를 증가시켜 언어 파일의 두 번째 값에 액세스할 수 있습니다.
withData 메서드를 사용하면 유효성 검사 규칙을 재사용하여 동일한 규칙으로 다양한 데이터의 유효성을 빠르게 확인할 수 있습니다.
$ v = new Valitron Validator ( array ());
$ v -> rule ( ' required ' , ' name ' )-> message ( ' {field} is required ' );
$ v -> validate (); //false
$ v2 = $ v -> withData ( array ( ' name ' => ' example ' ));
$ v2 -> validate (); //true
테스트 스위트는 Valitron 파일을 로드하고 실행하기 위해 Composer 오토로더에 의존합니다. 테스트를 실행하기 전에 Composer를 다운로드하고 설치했는지 확인하십시오.
curl -s http://getcomposer.org/installer | php
php composer.phar install
phpunit
실행 git checkout -b my-new-feature
).phpunit
)git commit -am 'Added some feature'
)git push origin my-new-feature
)보안 취약점을 신고하려면 Tidelift 보안 담당자에게 문의하세요. Tidelift는 수정 및 공개를 조정할 것입니다.