https://github.com/nilportugues/php-assert
A simple and elegant assertion library for input validation.
https://github.com/nilportugues/php-assert
assertion-library assertions error-handling errors exceptions php php7 quality validation value-object
Last synced: 8 months ago
JSON representation
A simple and elegant assertion library for input validation.
- Host: GitHub
- URL: https://github.com/nilportugues/php-assert
- Owner: nilportugues
- Created: 2015-06-30T16:32:49.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2016-08-04T17:05:52.000Z (over 9 years ago)
- Last Synced: 2025-03-31T08:51:18.009Z (9 months ago)
- Topics: assertion-library, assertions, error-handling, errors, exceptions, php, php7, quality, validation, value-object
- Language: PHP
- Homepage: http://nilportugues.com
- Size: 95.7 KB
- Stars: 10
- Watchers: 1
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Assert
[](https://travis-ci.org/nilportugues/php-assert) [](https://coveralls.io/r/nilportugues/php-assert?branch=master) [](https://insight.sensiolabs.com/projects/c37360c4-7280-4e08-bff1-0f0053103003) [](https://packagist.org/packages/nilportugues/assert) [](https://packagist.org/packages/nilportugues/assert) [](https://packagist.org/packages/nilportugues/assert)
[](https://paypal.me/nilportugues)
While I know there are out there other assertion libraries I was unhappy with them, so I wrote my own.
## Usage
Assertion library is really straight forward. Pass input to the method call and it will just run or throw an `\Exception` if it doesn't meet the requirements.
```php
use NilPortugues\Assert\Assert;
try {
Assert::nullOrIsLowercase(null);
Assert::isUppercase('THIS IS GREAT');
Assert::isNight(new \DateTime('now'));
} catch (Exception $e) {
echo 'Did not meet the requirements, too bad!';
}
```
## Assertion Methods
All assertion methods can be used against different data types (integer, double, objects..).
If you try to validate data for an unexpected data type, an Exception will be thrown making your assertion fail as expected.
Most methods can be called using the "nullOr" prefix instead of the "is" prefix. For instance:
```php
Assert::nullOrIsLowercase('lowercase'); //OK
Assert::isLowercase(null); //raises Exception
```
## Assertion List
All methods allow specifying a custom `$message` value. If not passed in, a library-defined default will be used.
Those accepting a `callable` as an argument, expect an Assert statement to be used inside the callable.
#### Generic Assertions
```php
Assert::isRequired($value, $message = '');
Assert::isNotNull($value, $message = '');
Assert::notEquals($property, $value, $message = '');
Assert::greaterThanOrEqual($property, $value, $message = '');
Assert::greaterThan($property, $value, $message = '');
Assert::lessThanOrEqual($property, $value, $message = '');
Assert::lessThan($property, $value, $message = '');
Assert::isScalar($value, $message = '');
// nullOr assertions
Assert::nullOrNotEquals($property, $value, $message = '');
Assert::nullOrGreaterThanOrEqual($property, $value, $message = '');
Assert::nullOrGreaterThan($property, $value, $message = '');
Assert::nullOrLessThanOrEqual($property, $value, $message = '');
Assert::nullOrLessThan($property, $value, $message = '');
Assert::nullOrIsScalar($value, $message = '');
```
#### String Assertions
```php
Assert::isString($value, $message = '')
Assert::isAlphanumeric($value, $message = '')
Assert::isAlpha($value, $message = '')
Assert::isBetween($value, $min, $max, $inclusive = false, $message = '')
Assert::isCharset($value, $charset, $message = '')
Assert::isAllConsonants($value, $message = '')
Assert::contains($value, $contains, $identical = false, $message = '')
Assert::isControlCharacters($value, $message = '')
Assert::isDigit($value, $message = '')
Assert::endsWith($value, $contains, $identical = false, $message = '')
Assert::equals($value, $comparedValue, $identical = false, $message = '')
Assert::in($value, $haystack, $identical = false, $message = '')
Assert::hasGraphicalCharsOnly($value, $message = '')
Assert::hasLength($value, $length, $message = '')
Assert::isLowercase($value, $message = '')
Assert::notEmpty($value, $message = '')
Assert::noWhitespace($value, $message = '')
Assert::hasPrintableCharsOnly($value, $message = '')
Assert::isPunctuation($value, $message = '')
Assert::matchesRegex($value, $regex, $message = '')
Assert::isSlug($value, $message = '')
Assert::isSpace($value, $message = '')
Assert::startsWith($value, $contains, $identical = false, $message = '')
Assert::isUppercase($value, $message = '')
Assert::isVersion($value, $message = '')
Assert::isVowel($value, $message = '')
Assert::isHexDigit($value, $message = '')
Assert::hasLowercase($value, $amount = null, $message = '')
Assert::hasUppercase($value, $amount = null, $message = '')
Assert::hasNumeric($value, $amount = null, $message = '')
Assert::hasSpecialCharacters($value, $amount = null, $message = '')
Assert::isEmail($value, $message = '')
Assert::isUrl($value, $message = '')
Assert::isUUID($value, $strict = true, $message = '')
Assert::isLatitude($latitude, $message = '')
Assert::isLongitude($lontitude, $message = '')
Assert::isTimeString($value, $message = '')
Assert::isDateString($value, $message = '')
Assert::isHexColor($value, $message = '')
Assert::isIpAddress($value, $message = '')
Assert::isIpv4Address($value, $message = '')
Assert::isIpv6Address($value, $message = '')
Assert::isJson($value, $message = '')
Assert::isCreditCard($value, $message = '')
Assert::isPalindrome($value, $message = '')
Assert::isUnderScore($value, $message = '')
Assert::isTitleCase($value, $message = '')
// nullOr assertions
Assert::nullOrIsString($value, $message = '')
Assert::nullOrIsAlphanumeric($value, $message = '')
Assert::nullOrIsAlpha($value, $message = '')
Assert::nullOrIsBetween($value, $min, $max, $inclusive = false, $message = '')
Assert::nullOrIsCharset($value, $charset, $message = '')
Assert::nullOrIsAllConsonants($value, $message = '')
Assert::nullOrContains($value, $contains, $identical = false, $message = '')
Assert::nullOrIsControlCharacters($value, $message = '')
Assert::nullOrIsDigit($value, $message = '')
Assert::nullOrEndsWith($value, $contains, $identical = false, $message = '')
Assert::nullOrEquals($value, $comparedValue, $identical = false, $message = '')
Assert::nullOrIn($value, $haystack, $identical = false, $message = '')
Assert::nullOrHasGraphicalCharsOnly($value, $message = '')
Assert::nullOrHasLength($value, $length, $message = '')
Assert::nullOrIsLowercase($value, $message = '')
Assert::nullOrNotEmpty($value, $message = '')
Assert::nullOrNoWhitespace($value, $message = '')
Assert::nullOrHasPrintableCharsOnly($value, $message = '')
Assert::nullOrIsPunctuation($value, $message = '')
Assert::nullOrMatchesRegex($value, $regex, $message = '')
Assert::nullOrIsSlug($value, $message = '')
Assert::nullOrIsSpace($value, $message = '')
Assert::nullOrStartsWith($value, $contains, $identical = false, $message = '')
Assert::nullOrIsUppercase($value, $message = '')
Assert::nullOrIsVersion($value, $message = '')
Assert::nullOrIsVowel($value, $message = '')
Assert::nullOrIsHexDigit($value, $message = '')
Assert::nullOrHasLowercase($value, $amount = null, $message = '')
Assert::nullOrHasUppercase($value, $amount = null, $message = '')
Assert::nullOrHasNumeric($value, $amount = null, $message = '')
Assert::nullOrHasSpecialCharacters($value, $amount = null, $message = '')
Assert::nullOrIsEmail($value, $message = '')
Assert::nullOrIsUrl($value, $message = '')
Assert::nullOrIsUUID($value, $strict = true, $message = '')
Assert::nullOrIsLatitude($latitude, $message = '')
Assert::nullOrIsLongitude($lontitude, $message = '')
Assert::nullOrIsTimeString($value, $message = '')
Assert::nullOrIsDateString($value, $message = '')
Assert::nullOrIsHexColor($value, $message = '')
Assert::nullOrIsIpAddress($value, $message = '')
Assert::nullOrIsIpv4Address($value, $message = '')
Assert::nullOrIsIpv6Address($value, $message = '')
Assert::nullOrIsJson($value, $message = '')
Assert::nullOrIsCreditCard($value, $message = '')
Assert::nullOrIsPalindrome($value, $message = '')
Assert::nullOrIsUnderScore($value, $message = '')
Assert::nullOrIsTitleCase($value, $message = '')
```
#### Integer Assertions
```php
Assert::isInteger($value, $message = '')
Assert::isNotZero($value, $message = '')
Assert::isPositiveOrZero($value, $message = '')
Assert::isPositive($value, $message = '')
Assert::isNegativeOrZero($value, $message = '')
Assert::isNegative($value, $message = '')
Assert::isBetween($value, $min, $max, $inclusive = false, $message = '')
Assert::isOdd($value, $message = '')
Assert::isEven($value, $message = '')
Assert::isMultiple($value, $multiple, $message = '')
// nullOr assertions
Assert::nullOrIsInteger($value, $message = '')
Assert::nullOrIsNotZero($value, $message = '')
Assert::nullOrIsPositiveOrZero($value, $message = '')
Assert::nullOrIsPositive($value, $message = '')
Assert::nullOrIsNegativeOrZero($value, $message = '')
Assert::nullOrIsNegative($value, $message = '')
Assert::nullOrIsBetween($value, $min, $max, $inclusive = false, $message = '')
Assert::nullOrIsOdd($value, $message = '')
Assert::nullOrIsEven($value, $message = '')
Assert::nullOrIsMultiple($value, $multiple, $message = '')
```
#### Float & Double Assertions
```php
Assert::isFloat($value, $message = '')
Assert::isNotZero($value, $message = '')
Assert::isPositiveOrZero($value, $message = '')
Assert::isPositive($value, $message = '')
Assert::isNegativeOrZero($value, $message = '')
Assert::isNegative($value, $message = '')
Assert::isBetween($value, $min, $max, $inclusive = false, $message = '')
Assert::isOdd($value, $message = '')
Assert::isEven($value, $message = '')
Assert::isMultiple($value, $multiple, $message = '')
// nullOr assertions
Assert::nullOrIsFloat($value, $message = '')
Assert::nullOrIsNotZero($value, $message = '')
Assert::nullOrIsPositiveOrZero($value, $message = '')
Assert::nullOrIsPositive($value, $message = '')
Assert::nullOrIsNegativeOrZero($value, $message = '')
Assert::nullOrIsNegative($value, $message = '')
Assert::nullOrIsBetween($value, $min, $max, $inclusive = false, $message = '')
Assert::nullOrIsOdd($value, $message = '')
Assert::nullOrIsEven($value, $message = '')
Assert::nullOrIsMultiple($value, $multiple, $message = '')
```
#### Array & Collection Assertions
```php
Assert::isArray($value, $message = '')
Assert::each($value, callable $valueValidator, callable $keyValidator = null, $message = '')
Assert::hasKeyFormat($value, callable $keyValidator, $message = '')
Assert::endsWith($haystack, $needle, $strict = false, $message = '')
Assert::contains($haystack, $needle, $strict = false, $message = '')
Assert::hasKey($value, $keyName, $message = '')
Assert::hasLength($value, $length, $message = '')
Assert::isNotEmpty($value, $message = '')
Assert::startsWith($haystack, $needle, $strict = false, $message = '')
// nullOr assertions
Assert::nullOrIsArray($value, $message = '')
Assert::nullOrEach($value, callable $valueValidator, callable $keyValidator = null, $message = '')
Assert::nullOrHasKeyFormat($value, callable $keyValidator, $message = '')
Assert::nullOrEndsWith($haystack, $needle, $strict = false, $message = '')
Assert::nullOrContains($haystack, $needle, $strict = false, $message = '')
Assert::nullOrHasKey($value, $keyName, $message = '')
Assert::nullOrHasLength($value, $length, $message = '')
Assert::nullOrIsNotEmpty($value, $message = '')
Assert::nullOrStartsWith($haystack, $needle, $strict = false, $message = '')
```
#### DateTime Assertions
```php
Assert::isDateTime($value, $message = '')
Assert::isAfter($value, $limit, $inclusive = false, $message = '')
Assert::isBefore($value, $limit, $inclusive = false, $message = '')
Assert::isDateRange($value, $minDate, $maxDate, $inclusive = false, $message = '')
Assert::isWeekend($value, $message = '')
Assert::isWeekday($value, $message = '')
Assert::isMonday($value, $message = '')
Assert::isTuesday($value, $message = '')
Assert::isWednesday($value, $message = '')
Assert::isThursday($value, $message = '')
Assert::isFriday($value, $message = '')
Assert::isSaturday($value, $message = '')
Assert::isSunday($value, $message = '')
Assert::isToday($value, $message = '')
Assert::isYesterday($value, $message = '')
Assert::isTomorrow($value, $message = '')
Assert::isLeapYear($value, $message = '')
Assert::isMorning($value, $message = '')
Assert::isAfternoon($value, $message = '')
Assert::isEvening($value, $message = '')
Assert::isNight($value, $message = '')
Assert::isFutureDate($value, $message = '')
Assert::isPastDate($value, $message = '')
Assert::isInNextWeek($value, $message = '')
Assert::isInWeek($value, $weekNumber, $message)
Assert::isInLastWeek($value, $message = '')
Assert::isInLastMonth($value, $message = '')
Assert::isInMonth($value, $monthNumber, $message)
Assert::isInNextMonth($value, $message = '')
Assert::isInLastYear($value, $message = '')
Assert::isInYear($value, $yearNumber, $message)
Assert::isInNextYear($value, $message = '')
Assert::isFirstHalfOfYear($value, $message = '')
Assert::isSecondHalfOfYear($value, $message = '')
Assert::isTrimesterOfYear($value, $trimester, $message = '')
Assert::isQuarterOfYear($value, $quarter, $message = '')
Assert::isDayLightSavingTime($value, \DateTimeZone $timezone, $message = '')
// nullOr assertions
Assert::nullOrIsDateTime($value, $message = '')
Assert::nullOrIsAfter($value, $limit, $inclusive = false, $message = '')
Assert::nullOrIsBefore($value, $limit, $inclusive = false, $message = '')
Assert::nullOrIsDateRange($value, $minDate, $maxDate, $inclusive = false, $message = '')
Assert::nullOrIsWeekend($value, $message = '')
Assert::nullOrIsWeekday($value, $message = '')
Assert::nullOrIsMonday($value, $message = '')
Assert::nullOrIsTuesday($value, $message = '')
Assert::nullOrIsWednesday($value, $message = '')
Assert::nullOrIsThursday($value, $message = '')
Assert::nullOrIsFriday($value, $message = '')
Assert::nullOrIsSaturday($value, $message = '')
Assert::nullOrIsSunday($value, $message = '')
Assert::nullOrIsToday($value, $message = '')
Assert::nullOrIsYesterday($value, $message = '')
Assert::nullOrIsTomorrow($value, $message = '')
Assert::nullOrIsLeapYear($value, $message = '')
Assert::nullOrIsMorning($value, $message = '')
Assert::nullOrIsAfternoon($value, $message = '')
Assert::nullOrIsEvening($value, $message = '')
Assert::nullOrIsNight($value, $message = '')
Assert::nullOrIsFutureDate($value, $message = '')
Assert::nullOrIsPastDate($value, $message = '')
Assert::nullOrIsInNextWeek($value, $message = '')
Assert::nullOrIsInWeek($value, $weekNumber, $message)
Assert::nullOrIsInLastWeek($value, $message = '')
Assert::nullOrIsInLastMonth($value, $message = '')
Assert::nullOrIsInMonth($value, $monthNumber, $message)
Assert::nullOrIsInNextMonth($value, $message = '')
Assert::nullOrIsInLastYear($value, $message = '')
Assert::nullOrIsInYear($value, $yearNumber, $message)
Assert::nullOrIsInNextYear($value, $message = '')
Assert::nullOrIsFirstHalfOfYear($value, $message = '')
Assert::nullOrIsSecondHalfOfYear($value, $message = '')
Assert::nullOrIsTrimesterOfYear($value, $trimester, $message = '')
Assert::nullOrIsQuarterOfYear($value, $quarter, $message = '')
Assert::nullOrIsDayLightSavingTime($value, \DateTimeZone $timezone, $message = '')
```
#### Object Assertions
```php
Assert::isObject($value, $message = '')
Assert::isInstanceOf($value, $instanceOf, $message = '')
Assert::hasProperty($value, $property, $message = '')
Assert::hasMethod($value, $method, $message = '')
Assert::hasParentClass($value, $message = '')
Assert::isChildOf($value, $parentClass, $message = '')
Assert::inheritsFrom($value, $inheritsClass, $message = '')
Assert::hasInterface($value, $interface, $message = '')
// nullOr assertions
Assert::nullOrIsObject($value, $message = '')
Assert::nullOrIsInstanceOf($value, $instanceOf, $message = '')
Assert::nullOrHasProperty($value, $property, $message = '')
Assert::nullOrHasMethod($value, $method, $message = '')
Assert::nullOrHasParentClass($value, $message = '')
Assert::nullOrIsChildOf($value, $parentClass, $message = '')
Assert::nullOrInheritsFrom($value, $inheritsClass, $message = '')
Assert::nullOrHasInterface($value, $interface, $message = '')
```
#### FileUpload Assertions
FileUpload Assertions look into the `$_FILES` global variable.
```php
Assert::isFileUploaded($uploadName, $message = '')
Assert::isFileUploadedBetweenFileSize($uploadName, $minSize, $maxSize, $format='B', $inclusive = false, $message = '')
Assert::hasFileUploadedFileNameFormat($uploadName, callable $assertion, $message = '')
Assert::hasFileUploadedValidUploadDirectory($uploadName, $uploadDir, $message = '')
Assert::isFileUploadedNotOverwritingExistingFile($uploadName, $uploadDir, $message = '')
Assert::hasFileUploadedFileNameLength($uploadName, $size, $message = '')
Assert::isFileUploadedImage($uploadName, $message = '')
Assert::isFileUploadedMimeType($uploadName, array $allowedTypes, $message = '')
// nullOr assertions
Assert::nullOrIsFileUploaded($uploadName, $message = '')
Assert::nullOrIsFileUploadedBetweenFileSize($uploadName, $minSize, $maxSize, $format='B', $inclusive=false, $message='')
Assert::nullOrHasFileUploadedFileNameFormat($uploadName, callable $assertion, $message = '')
Assert::nullOrHasFileUploadedValidUploadDirectory($uploadName, $uploadDir, $message = '')
Assert::nullOrIsFileUploadedNotOverwritingExistingFile($uploadName, $uploadDir, $message = '')
Assert::nullOrHasFileUploadedFileNameLength($uploadName, $size, $message = '')
Assert::nullOrIsFileUploadedImage($uploadName, $message = '')
Assert::nullOrIsFileUploadedMimeType($uploadName, array $allowedTypes, $message = '')
```
## Contribute
Contributions to the package are always welcome!
* Report any bugs or issues you find on the [issue tracker](https://github.com/nilportugues/php-assert/issues/new).
* You can grab the source code at the package's [Git repository](https://github.com/nilportugues/php-assert).
## Support
Get in touch with me using one of the following means:
- Emailing me at
- Opening an [Issue](https://github.com/nilportugues/php-assert/issues/new)
## Authors
* [Nil Portugués Calderó](http://nilportugues.com)
* [The Community Contributors](https://github.com/nilportugues/php-assert/graphs/contributors)
## License
The code base is licensed under the [MIT license](LICENSE).