Constants

DEFAULT_LOCALE

DEFAULT_LOCALE = 'en_US'

Default locale

COMPARE_SAME

COMPARE_SAME = '==='

Same as operator.

COMPARE_NOT_SAME

COMPARE_NOT_SAME = '!=='

Not same as comparison operator.

COMPARE_EQUAL

COMPARE_EQUAL = '=='

Equal to comparison operator.

COMPARE_NOT_EQUAL

COMPARE_NOT_EQUAL = '!='

Not equal to comparison operator.

COMPARE_GREATER

COMPARE_GREATER = '>'

Greater than comparison operator.

COMPARE_GREATER_OR_EQUAL

COMPARE_GREATER_OR_EQUAL = '>='

Greater than or equal to comparison operator.

COMPARE_LESS

COMPARE_LESS = '<'

Less than comparison operator.

COMPARE_LESS_OR_EQUAL

COMPARE_LESS_OR_EQUAL = '<='

Less than or equal to comparison operator.

Properties

$errors

$errors : array

Holds an array of errors messages set in this class.

These are used for debugging purposes

Type

array

$_pattern

$_pattern : array

Some complex patterns needed in multiple places

Type

array

Methods

notEmpty()

notEmpty(string  $check) : boolean

Backwards compatibility wrapper for Validation::notBlank().

Parameters

string $check

Value to check.

Returns

boolean —

Success.

notBlank()

notBlank(string  $check) : boolean

Checks that a string contains something other than whitespace

Returns true if string contains something other than whitespace

Parameters

string $check

Value to check

Returns

boolean —

Success

alphaNumeric()

alphaNumeric(string  $check) : boolean

Checks that a string contains only integer or letters

Returns true if string contains only integer or letters

Parameters

string $check

Value to check

Returns

boolean —

Success

lengthBetween()

lengthBetween(string  $check, integer  $min, integer  $max) : boolean

Checks that a string length is within specified range.

Spaces are included in the character count. Returns true if string matches value min, max, or between min and max,

Parameters

string $check

Value to check for length

integer $min

Minimum value in range (inclusive)

integer $max

Maximum value in range (inclusive)

Returns

boolean —

Success

blank()

blank(string  $check) : boolean

Returns true if field is left blank -OR- only whitespace characters are present in its value Whitespace characters include Space, Tab, Carriage Return, Newline

Parameters

string $check

Value to check

Returns

boolean —

Success

cc()

cc(string  $check, string|array  $type = 'fast', boolean  $deep = false, string|null  $regex = null) : boolean

Backwards compatibility wrapper for Validation::creditCard().

Parameters

string $check

credit card number to validate

string|array $type

'all' may be passed as a string, defaults to fast which checks format of most major credit cards if an array is used only the values of the array are checked. Example: ['amex', 'bankcard', 'maestro']

boolean $deep

set to true this will check the Luhn algorithm of the credit card.

string|null $regex

A custom regex can also be passed, this will be used instead of the defined regex values

Returns

boolean —

Success

creditCard()

creditCard(string  $check, string|array  $type = 'fast', boolean  $deep = false, string|null  $regex = null) : boolean

Validation of credit card numbers.

Returns true if $check is in the proper credit card format.

Parameters

string $check

credit card number to validate

string|array $type

'all' may be passed as a string, defaults to fast which checks format of most major credit cards if an array is used only the values of the array are checked. Example: ['amex', 'bankcard', 'maestro']

boolean $deep

set to true this will check the Luhn algorithm of the credit card.

string|null $regex

A custom regex can also be passed, this will be used instead of the defined regex values

Returns

boolean —

Success

numElements()

numElements(array|\Countable  $check, string  $operator, integer  $expectedCount) : boolean

Used to check the count of a given value of type array or Countable.

Parameters

array|\Countable $check

The value to check the count on.

string $operator

Can be either a word or operand is greater >, is less <, greater or equal >= less or equal <=, is less <, equal to ==, not equal !=

integer $expectedCount

The expected count value.

Returns

boolean —

Success

comparison()

comparison(string  $check1, string  $operator, integer  $check2) : boolean

Used to compare 2 numeric values.

Parameters

string $check1

The left value to compare.

string $operator

Can be either a word or operand is greater >, is less <, greater or equal >= less or equal <=, is less <, equal to ==, not equal !=

integer $check2

The right value to compare.

Returns

boolean —

Success

compareWith()

compareWith(mixed  $check, string  $field, array  $context) : boolean

Compare one field to another.

If both fields have exactly the same value this method will return true.

Parameters

mixed $check

The value to find in $field.

string $field

The field to check $check against. This field must be present in $context.

array $context

The validation context.

Returns

boolean

compareFields()

compareFields(mixed  $check, string  $field, string  $operator, array  $context) : boolean

Compare one field to another.

Return true if the comparison matches the expected result.

Parameters

mixed $check

The value to find in $field.

string $field

The field to check $check against. This field must be present in $context.

string $operator

Comparison operator.

array $context

The validation context.

Returns

boolean

containsNonAlphaNumeric()

containsNonAlphaNumeric(string  $check, integer  $count = 1) : boolean

Checks if a string contains one or more non-alphanumeric characters.

Returns true if string contains at least the specified number of non-alphanumeric characters

Parameters

string $check

Value to check

integer $count

Number of non-alphanumerics to check for

Returns

boolean —

Success

custom()

custom(string  $check, string|null  $regex = null) : boolean

Used when a custom regular expression is needed.

Parameters

string $check

The value to check.

string|null $regex

If $check is passed as a string, $regex must also be set to valid regular expression

Returns

boolean —

Success

date()

date(string|\DateTimeInterface  $check, string|array  $format = 'ymd', string|null  $regex = null) : boolean

Date validation, determines if the string passed is a valid date.

keys that expect full month, day and year will validate leap years.

Years are valid from 1800 to 2999.

Formats:

  • dmy 27-12-2006 or 27-12-06 separators can be a space, period, dash, forward slash
  • mdy 12-27-2006 or 12-27-06 separators can be a space, period, dash, forward slash
  • ymd 2006-12-27 or 06-12-27 separators can be a space, period, dash, forward slash
  • dMy 27 December 2006 or 27 Dec 2006
  • Mdy December 27, 2006 or Dec 27, 2006 comma is optional
  • My December 2006 or Dec 2006
  • my 12/2006 or 12/06 separators can be a space, period, dash, forward slash
  • ym 2006/12 or 06/12 separators can be a space, period, dash, forward slash
  • y 2006 just the year without any separators

Parameters

string|\DateTimeInterface $check

a valid date string/object

string|array $format

Use a string or an array of the keys above. Arrays should be passed as ['dmy', 'mdy', etc]

string|null $regex

If a custom regular expression is used this is the only validation that will occur.

Returns

boolean —

Success

datetime()

datetime(string|\DateTimeInterface  $check, string|array  $dateFormat = 'ymd', string|null  $regex = null) : boolean

Validates a datetime value

All values matching the "date" core validation rule, and the "time" one will be valid

Parameters

string|\DateTimeInterface $check

Value to check

string|array $dateFormat

Format of the date part. See Validation::date() for more information.

string|null $regex

Regex for the date part. If a custom regular expression is used this is the only validation that will occur.

Returns

boolean —

True if the value is valid, false otherwise

time()

time(string|\DateTimeInterface  $check) : boolean

Time validation, determines if the string passed is a valid time.

Validates time as 24hr (HH:MM) or am/pm ([H]H:MM[a|p]m) Does not allow/validate seconds.

Parameters

string|\DateTimeInterface $check

a valid time string/object

Returns

boolean —

Success

localizedTime()

localizedTime(string|\DateTime  $check, string  $type = 'datetime', string|integer|null  $format = null) : boolean

Date and/or time string validation.

Uses I18n::Time to parse the date. This means parsing is locale dependent.

Parameters

string|\DateTime $check

a date string or object (will always pass)

string $type

Parser type, one out of 'date', 'time', and 'datetime'

string|integer|null $format

any format accepted by IntlDateFormatter

Throws

\InvalidArgumentException

when unsupported $type given

Returns

boolean —

Success

boolean()

boolean(boolean|integer|string  $check, array  $booleanValues = array()) : boolean

Validates if passed value is boolean-like.

The list of what is considered to be boolean values, may be set via $booleanValues.

Parameters

boolean|integer|string $check

Value to check.

array $booleanValues

List of valid boolean values, defaults to [true, false, 0, 1, '0', '1'].

Returns

boolean —

Success.

truthy()

truthy(boolean|integer|string  $check, array  $truthyValues = array()) : boolean

Validates if given value is truthy.

The list of what is considered to be truthy values, may be set via $truthyValues.

Parameters

boolean|integer|string $check

Value to check.

array $truthyValues

List of valid truthy values, defaults to [true, 1, '1'].

Returns

boolean —

Success.

falsey()

falsey(boolean|integer|string  $check, array  $falseyValues = array()) : boolean

Validates if given value is falsey.

The list of what is considered to be falsey values, may be set via $falseyValues.

Parameters

boolean|integer|string $check

Value to check.

array $falseyValues

List of valid falsey values, defaults to [false, 0, '0'].

Returns

boolean —

Success.

decimal()

decimal(float  $check, integer|boolean|null  $places = null, string|null  $regex = null) : boolean

Checks that a value is a valid decimal. Both the sign and exponent are optional.

Valid Places:

  • null => Any number of decimal places, including none. The '.' is not required.
  • true => Any number of decimal places greater than 0, or a float|double. The '.' is required.
  • 1..N => Exactly that many number of decimal places. The '.' is required.

Parameters

float $check

The value the test for decimal.

integer|boolean|null $places

Decimal places.

string|null $regex

If a custom regular expression is used, this is the only validation that will occur.

Returns

boolean —

Success

email()

email(string  $check, boolean  $deep = false, string|null  $regex = null) : boolean

Validates for an email address.

Only uses getmxrr() checking for deep validation, or any PHP version on a non-windows distribution

Parameters

string $check

Value to check

boolean $deep

Perform a deeper validation (if true), by also checking availability of host

string|null $regex

Regex to use (if none it will use built in regex)

Returns

boolean —

Success

equalTo()

equalTo(mixed  $check, mixed  $comparedTo) : boolean

Checks that value is exactly $comparedTo.

Parameters

mixed $check

Value to check

mixed $comparedTo

Value to compare

Returns

boolean —

Success

extension()

extension(string|array|\Psr\Http\Message\UploadedFileInterface  $check, array  $extensions = array('gif', 'jpeg', 'png', 'jpg')) : boolean

Checks that value has a valid file extension.

Parameters

string|array|\Psr\Http\Message\UploadedFileInterface $check

Value to check

array $extensions

file extensions to allow. By default extensions are 'gif', 'jpeg', 'png', 'jpg'

Returns

boolean —

Success

ip()

ip(string  $check, string  $type = 'both') : boolean

Validation of an IP address.

Parameters

string $check

The string to test.

string $type

The IP Protocol version to validate against

Returns

boolean —

Success

minLength()

minLength(string  $check, integer  $min) : boolean

Checks whether the length of a string (in characters) is greater or equal to a minimal length.

Parameters

string $check

The string to test

integer $min

The minimal string length

Returns

boolean —

Success

maxLength()

maxLength(string  $check, integer  $max) : boolean

Checks whether the length of a string (in characters) is smaller or equal to a maximal length.

Parameters

string $check

The string to test

integer $max

The maximal string length

Returns

boolean —

Success

minLengthBytes()

minLengthBytes(string  $check, integer  $min) : boolean

Checks whether the length of a string (in bytes) is greater or equal to a minimal length.

Parameters

string $check

The string to test

integer $min

The minimal string length (in bytes)

Returns

boolean —

Success

maxLengthBytes()

maxLengthBytes(string  $check, integer  $max) : boolean

Checks whether the length of a string (in bytes) is smaller or equal to a maximal length.

Parameters

string $check

The string to test

integer $max

The maximal string length

Returns

boolean —

Success

money()

money(string  $check, string  $symbolPosition = 'left') : boolean

Checks that a value is a monetary amount.

Parameters

string $check

Value to check

string $symbolPosition

Where symbol is located (left/right)

Returns

boolean —

Success

multiple()

multiple(array  $check, array  $options = array(), boolean  $caseInsensitive = false) : boolean

Validates a multiple select. Comparison is case sensitive by default.

Valid Options

  • in => provide a list of choices that selections must be made from
  • max => maximum number of non-zero choices that can be made
  • min => minimum number of non-zero choices that can be made

Parameters

array $check

Value to check

array $options

Options for the check.

boolean $caseInsensitive

Set to true for case insensitive comparison.

Returns

boolean —

Success

numeric()

numeric(string  $check) : boolean

Checks if a value is numeric.

Parameters

string $check

Value to check

Returns

boolean —

Success

naturalNumber()

naturalNumber(string  $check, boolean  $allowZero = false) : boolean

Checks if a value is a natural number.

Parameters

string $check

Value to check

boolean $allowZero

Set true to allow zero, defaults to false

Returns

boolean —

Success

range()

range(string  $check, integer|float|null  $lower = null, integer|float|null  $upper = null) : boolean

Validates that a number is in specified range.

If $lower and $upper are set, the range is inclusive. If they are not set, will return true if $check is a legal finite on this platform.

Parameters

string $check

Value to check

integer|float|null $lower

Lower limit

integer|float|null $upper

Upper limit

Returns

boolean —

Success

url()

url(string  $check, boolean  $strict = false) : boolean

Checks that a value is a valid URL according to https://www.w3.org/Addressing/URL/url-spec.txt

The regex checks for the following component parts:

  • a valid, optional, scheme
  • a valid ip address OR a valid domain name as defined by section 2.3.1 of https://www.ietf.org/rfc/rfc1035.txt with an optional port number
  • an optional valid path
  • an optional query string (get parameters)
  • an optional fragment (anchor tag) as defined in RFC 3986

Parameters

string $check

Value to check

boolean $strict

Require URL to be prefixed by a valid scheme (one of http(s)/ftp(s)/file/news/gopher)

Returns

boolean —

Success

inList()

inList(string  $check, array  $list, boolean  $caseInsensitive = false) : boolean

Checks if a value is in a given list. Comparison is case sensitive by default.

Parameters

string $check

Value to check.

array $list

List to check against.

boolean $caseInsensitive

Set to true for case insensitive comparison.

Returns

boolean —

Success.

userDefined()

userDefined(string|array  $check, object  $object, string  $method, array|null  $args = null) : mixed

Runs an user-defined validation.

Parameters

string|array $check

value that will be validated in user-defined methods.

object $object

class that holds validation method

string $method

class method name for validation to run

array|null $args

arguments to send to method

Returns

mixed —

user-defined class class method returns

uuid()

uuid(string  $check) : boolean

Checks that a value is a valid UUID - https://tools.ietf.org/html/rfc4122

Parameters

string $check

Value to check

Returns

boolean —

Success

luhn()

luhn(string|array  $check) : boolean

Luhn algorithm

Parameters

string|array $check

Value to check.

Returns

boolean —

Success

mimeType()

mimeType(string|array|\Psr\Http\Message\UploadedFileInterface  $check, array|string  $mimeTypes = array()) : boolean

Checks the mime type of a file.

Will check the mimetype of files/UploadedFileInterface instances by checking the using finfo on the file, not relying on the content-type sent by the client.

Parameters

string|array|\Psr\Http\Message\UploadedFileInterface $check

Value to check.

array|string $mimeTypes

Array of mime types or regex pattern to check.

Throws

\RuntimeException

when mime type can not be determined.

\LogicException

when ext/fileinfo is missing

Returns

boolean —

Success

fileSize()

fileSize(string|array|\Psr\Http\Message\UploadedFileInterface  $check, string|null  $operator = null, integer|string|null  $size = null) : boolean

Checks the filesize

Will check the filesize of files/UploadedFileInterface instances by checking the filesize() on disk and not relying on the length reported by the client.

Parameters

string|array|\Psr\Http\Message\UploadedFileInterface $check

Value to check.

string|null $operator

See Validation::comparison().

integer|string|null $size

Size in bytes or human readable string like '5MB'.

Returns

boolean —

Success

uploadError()

uploadError(string|array|\Psr\Http\Message\UploadedFileInterface  $check, boolean  $allowNoFile = false) : boolean

Checking for upload errors

Parameters

string|array|\Psr\Http\Message\UploadedFileInterface $check

Value to check.

boolean $allowNoFile

Set to true to allow UPLOAD_ERR_NO_FILE as a pass.

Returns

boolean

uploadedFile()

uploadedFile(array|\Psr\Http\Message\UploadedFileInterface  $file, array  $options = array()) : boolean

Validate an uploaded file.

Helps join uploadError, fileSize and mimeType into one higher level validation method.

Options

  • types - An array of valid mime types. If empty all types will be accepted. The type will not be looked at, instead the file type will be checked with ext/finfo.
  • minSize - The minimum file size in bytes. Defaults to not checking.
  • maxSize - The maximum file size in bytes. Defaults to not checking.
  • optional - Whether or not this file is optional. Defaults to false. If true a missing file will pass the validator regardless of other constraints.

Parameters

array|\Psr\Http\Message\UploadedFileInterface $file

The uploaded file data from PHP.

array $options

An array of options for the validation.

Returns

boolean

imageSize()

imageSize(array|\Psr\Http\Message\UploadedFileInterface  $file, array  $options) : boolean

Validates the size of an uploaded image.

Parameters

array|\Psr\Http\Message\UploadedFileInterface $file

The uploaded file data from PHP.

array $options

Options to validate width and height.

Returns

boolean

imageWidth()

imageWidth(array  $file, string  $operator, integer  $width) : boolean

Validates the image width.

Parameters

array $file

The uploaded file data from PHP.

string $operator

Comparison operator.

integer $width

Min or max width.

Returns

boolean

imageHeight()

imageHeight(array  $file, string  $operator, integer  $height) : boolean

Validates the image width.

Parameters

array $file

The uploaded file data from PHP.

string $operator

Comparison operator.

integer $height

Min or max width.

Returns

boolean

geoCoordinate()

geoCoordinate(string  $value, array  $options = array()) : boolean

Validates a geographic coordinate.

Supported formats:

  • <latitude>, <longitude> Example: -25.274398, 133.775136

Options

  • type - A string of the coordinate format, right now only latLong.
  • format - By default both, can be long and lat as well to validate only a part of the coordinate.

Parameters

string $value

Geographic location as string

array $options

Options for the validation logic.

Returns

boolean

latitude()

latitude(string  $value, array  $options = array()) : boolean

Convenience method for latitude validation.

Parameters

string $value

Latitude as string

array $options

Options for the validation logic.

Returns

boolean

longitude()

longitude(string  $value, array  $options = array()) : boolean

Convenience method for longitude validation.

Parameters

string $value

Latitude as string

array $options

Options for the validation logic.

Returns

boolean

ascii()

ascii(string  $value) : boolean

Check that the input value is within the ascii byte range.

This method will reject all non-string values.

Parameters

string $value

The value to check

Returns

boolean

utf8()

utf8(string  $value, array  $options = array()) : boolean

Check that the input value is a utf8 string.

This method will reject all non-string values.

Options

  • extended - Disallow bytes higher within the basic multilingual plane. MySQL's older utf8 encoding type does not allow characters above the basic multilingual plane. Defaults to false.

Parameters

string $value

The value to check

array $options

An array of options. See above for the supported options.

Returns

boolean

isInteger()

isInteger(string  $value) : boolean

Check that the input value is an integer

This method will accept strings that contain only integer data as well.

Parameters

string $value

The value to check

Returns

boolean

isArray()

isArray(array  $value) : boolean

Check that the input value is an array.

Parameters

array $value

The value to check

Returns

boolean

isScalar()

isScalar(mixed  $value) : boolean

Check that the input value is a scalar.

This method will accept integers, floats, strings and booleans, but not accept arrays, objects, resources and nulls.

Parameters

mixed $value

The value to check

Returns

boolean

hexColor()

hexColor(string|array  $check) : boolean

Check that the input value is a 6 digits hex color.

Parameters

string|array $check

The value to check

Returns

boolean —

Success

iban()

iban(string  $check) : boolean

Check that the input value has a valid International Bank Account Number IBAN syntax Requirements are uppercase, no whitespaces, max length 34, country code and checksum exist at right spots, body matches against checksum via Mod97-10 algorithm

Parameters

string $check

The value to check

Returns

boolean —

Success

_check()

_check(string  $check, string  $regex) : boolean

Runs a regular expression match.

Parameters

string $check

Value to check against the $regex expression

string $regex

Regular expression

Returns

boolean —

Success of match

getFilename()

getFilename(string|array|\Psr\Http\Message\UploadedFileInterface  $check) : string|boolean

Helper for reading the file out of the various file implementations we accept.

Parameters

string|array|\Psr\Http\Message\UploadedFileInterface $check

The data to read a filename out of.

Returns

string|boolean —

Either the filename or false on failure.

_getDateString()

_getDateString(array  $value) : string

Converts an array representing a date or datetime into a ISO string.

The arrays are typically sent for validation from a form generated by the CakePHP FormHelper.

Parameters

array $value

The array representing a date or datetime.

Returns

string

_populateIp()

_populateIp() : void

Lazily populate the IP address patterns used for validations

_reset()

_reset() : void

Reset internal variables for another validation run.