{"id":15681661,"url":"https://github.com/nilportugues/php-assert","last_synced_at":"2025-05-07T10:08:12.951Z","repository":{"id":34393161,"uuid":"38320516","full_name":"nilportugues/php-assert","owner":"nilportugues","description":"A simple and elegant assertion library for input validation.","archived":false,"fork":false,"pushed_at":"2016-08-04T17:05:52.000Z","size":98,"stargazers_count":10,"open_issues_count":0,"forks_count":3,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-31T08:51:18.009Z","etag":null,"topics":["assertion-library","assertions","error-handling","errors","exceptions","php","php7","quality","validation","value-object"],"latest_commit_sha":null,"homepage":"http://nilportugues.com","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nilportugues.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-06-30T16:32:49.000Z","updated_at":"2024-08-05T08:42:25.000Z","dependencies_parsed_at":"2022-09-14T06:01:21.529Z","dependency_job_id":null,"html_url":"https://github.com/nilportugues/php-assert","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nilportugues%2Fphp-assert","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nilportugues%2Fphp-assert/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nilportugues%2Fphp-assert/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nilportugues%2Fphp-assert/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nilportugues","download_url":"https://codeload.github.com/nilportugues/php-assert/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249780325,"owners_count":21324517,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["assertion-library","assertions","error-handling","errors","exceptions","php","php7","quality","validation","value-object"],"created_at":"2024-10-03T16:58:10.935Z","updated_at":"2025-04-19T19:33:58.569Z","avatar_url":"https://github.com/nilportugues.png","language":"PHP","readme":"# Assert\n\n[![Build Status](https://travis-ci.org/nilportugues/php-assert.svg)](https://travis-ci.org/nilportugues/php-assert) [![Coverage Status](https://coveralls.io/repos/nilportugues/php-assert/badge.svg?branch=master)](https://coveralls.io/r/nilportugues/php-assert?branch=master) [![SensioLabsInsight](https://insight.sensiolabs.com/projects/c37360c4-7280-4e08-bff1-0f0053103003/mini.png?)](https://insight.sensiolabs.com/projects/c37360c4-7280-4e08-bff1-0f0053103003) [![Latest Stable Version](https://poser.pugx.org/nilportugues/assert/v/stable)](https://packagist.org/packages/nilportugues/assert) [![Total Downloads](https://poser.pugx.org/nilportugues/assert/downloads)](https://packagist.org/packages/nilportugues/assert) [![License](https://poser.pugx.org/nilportugues/assert/license)](https://packagist.org/packages/nilportugues/assert) \n[![Donate](https://www.paypalobjects.com/en_US/i/btn/btn_donate_SM.gif)](https://paypal.me/nilportugues)\n\nWhile I know there are out there other assertion libraries I was unhappy with them, so I wrote my own.\n\n## Usage\n \nAssertion 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. \n\n\n```php\nuse NilPortugues\\Assert\\Assert;\n\ntry {\n    Assert::nullOrIsLowercase(null);\n    Assert::isUppercase('THIS IS GREAT');\n    Assert::isNight(new \\DateTime('now'));\n    \n} catch (Exception $e) {\n    echo 'Did not meet the requirements, too bad!';\n}\n```\n\n## Assertion Methods\n\nAll assertion methods can be used against different data types (integer, double, objects..).\n\nIf you try to validate data for an unexpected data type, an Exception will be thrown making your assertion fail as expected. \n\nMost methods can be called using the \"nullOr\" prefix instead of the \"is\" prefix. For instance: \n\n\n```php\nAssert::nullOrIsLowercase('lowercase'); //OK\nAssert::isLowercase(null); //raises Exception\n```\n\n## Assertion List\n\nAll methods allow specifying a custom `$message` value. If not passed in, a library-defined default will be used.\n\nThose accepting a `callable` as an argument, expect an Assert statement to be used inside the callable.\n\n#### Generic Assertions\n\n```php\nAssert::isRequired($value, $message = '');\nAssert::isNotNull($value, $message = '');\nAssert::notEquals($property, $value, $message = '');\nAssert::greaterThanOrEqual($property, $value, $message = '');\nAssert::greaterThan($property, $value, $message = '');\nAssert::lessThanOrEqual($property, $value, $message = '');\nAssert::lessThan($property, $value, $message = '');\nAssert::isScalar($value, $message = '');\n\n// nullOr assertions\nAssert::nullOrNotEquals($property, $value, $message = '');\nAssert::nullOrGreaterThanOrEqual($property, $value, $message = '');\nAssert::nullOrGreaterThan($property, $value, $message = '');\nAssert::nullOrLessThanOrEqual($property, $value, $message = '');\nAssert::nullOrLessThan($property, $value, $message = '');\nAssert::nullOrIsScalar($value, $message = '');\n```\n\n#### String Assertions\n\n```php\nAssert::isString($value, $message = '')\nAssert::isAlphanumeric($value, $message = '')\nAssert::isAlpha($value, $message = '')\nAssert::isBetween($value, $min, $max, $inclusive = false, $message = '')\nAssert::isCharset($value, $charset, $message = '')\nAssert::isAllConsonants($value, $message = '')\nAssert::contains($value, $contains, $identical = false, $message = '')\nAssert::isControlCharacters($value, $message = '')\nAssert::isDigit($value, $message = '')\nAssert::endsWith($value, $contains, $identical = false, $message = '')\nAssert::equals($value, $comparedValue, $identical = false, $message = '')\nAssert::in($value, $haystack, $identical = false, $message = '')\nAssert::hasGraphicalCharsOnly($value, $message = '')\nAssert::hasLength($value, $length, $message = '')\nAssert::isLowercase($value, $message = '')\nAssert::notEmpty($value, $message = '')\nAssert::noWhitespace($value, $message = '')\nAssert::hasPrintableCharsOnly($value, $message = '')\nAssert::isPunctuation($value, $message = '')\nAssert::matchesRegex($value, $regex, $message = '')\nAssert::isSlug($value, $message = '')\nAssert::isSpace($value, $message = '')\nAssert::startsWith($value, $contains, $identical = false, $message = '')\nAssert::isUppercase($value, $message = '')\nAssert::isVersion($value, $message = '')\nAssert::isVowel($value, $message = '')\nAssert::isHexDigit($value, $message = '')\nAssert::hasLowercase($value, $amount = null, $message = '')\nAssert::hasUppercase($value, $amount = null, $message = '')\nAssert::hasNumeric($value, $amount = null, $message = '')\nAssert::hasSpecialCharacters($value, $amount = null, $message = '')\nAssert::isEmail($value, $message = '')\nAssert::isUrl($value, $message = '')\nAssert::isUUID($value, $strict = true, $message = '')\nAssert::isLatitude($latitude, $message = '')\nAssert::isLongitude($lontitude, $message = '')\nAssert::isTimeString($value, $message = '')\nAssert::isDateString($value, $message = '')\nAssert::isHexColor($value, $message = '')\nAssert::isIpAddress($value, $message = '')\nAssert::isIpv4Address($value, $message = '')\nAssert::isIpv6Address($value, $message = '')\nAssert::isJson($value, $message = '')\nAssert::isCreditCard($value, $message = '')\nAssert::isPalindrome($value, $message = '')\nAssert::isUnderScore($value, $message = '')\nAssert::isTitleCase($value, $message = '')\n \n// nullOr assertions\nAssert::nullOrIsString($value, $message = '')\nAssert::nullOrIsAlphanumeric($value, $message = '')\nAssert::nullOrIsAlpha($value, $message = '')\nAssert::nullOrIsBetween($value, $min, $max, $inclusive = false, $message = '')\nAssert::nullOrIsCharset($value, $charset, $message = '')\nAssert::nullOrIsAllConsonants($value, $message = '')\nAssert::nullOrContains($value, $contains, $identical = false, $message = '')\nAssert::nullOrIsControlCharacters($value, $message = '')\nAssert::nullOrIsDigit($value, $message = '')\nAssert::nullOrEndsWith($value, $contains, $identical = false, $message = '')\nAssert::nullOrEquals($value, $comparedValue, $identical = false, $message = '')\nAssert::nullOrIn($value, $haystack, $identical = false, $message = '')\nAssert::nullOrHasGraphicalCharsOnly($value, $message = '')\nAssert::nullOrHasLength($value, $length, $message = '')\nAssert::nullOrIsLowercase($value, $message = '')\nAssert::nullOrNotEmpty($value, $message = '')\nAssert::nullOrNoWhitespace($value, $message = '')\nAssert::nullOrHasPrintableCharsOnly($value, $message = '')\nAssert::nullOrIsPunctuation($value, $message = '')\nAssert::nullOrMatchesRegex($value, $regex, $message = '')\nAssert::nullOrIsSlug($value, $message = '')\nAssert::nullOrIsSpace($value, $message = '')\nAssert::nullOrStartsWith($value, $contains, $identical = false, $message = '')\nAssert::nullOrIsUppercase($value, $message = '')\nAssert::nullOrIsVersion($value, $message = '')\nAssert::nullOrIsVowel($value, $message = '')\nAssert::nullOrIsHexDigit($value, $message = '')\nAssert::nullOrHasLowercase($value, $amount = null, $message = '')\nAssert::nullOrHasUppercase($value, $amount = null, $message = '')\nAssert::nullOrHasNumeric($value, $amount = null, $message = '')\nAssert::nullOrHasSpecialCharacters($value, $amount = null, $message = '')\nAssert::nullOrIsEmail($value, $message = '')\nAssert::nullOrIsUrl($value, $message = '')\nAssert::nullOrIsUUID($value, $strict = true, $message = '')\nAssert::nullOrIsLatitude($latitude, $message = '')\nAssert::nullOrIsLongitude($lontitude, $message = '')\nAssert::nullOrIsTimeString($value, $message = '')\nAssert::nullOrIsDateString($value, $message = '')\nAssert::nullOrIsHexColor($value, $message = '')\nAssert::nullOrIsIpAddress($value, $message = '')\nAssert::nullOrIsIpv4Address($value, $message = '')\nAssert::nullOrIsIpv6Address($value, $message = '')\nAssert::nullOrIsJson($value, $message = '')\nAssert::nullOrIsCreditCard($value, $message = '')\nAssert::nullOrIsPalindrome($value, $message = '')\nAssert::nullOrIsUnderScore($value, $message = '')\nAssert::nullOrIsTitleCase($value, $message = '')\n\n```\n\n#### Integer Assertions\n\n```php\nAssert::isInteger($value, $message = '')\nAssert::isNotZero($value, $message = '')\nAssert::isPositiveOrZero($value, $message = '')\nAssert::isPositive($value, $message = '')\nAssert::isNegativeOrZero($value, $message = '')\nAssert::isNegative($value, $message = '')\nAssert::isBetween($value, $min, $max, $inclusive = false, $message = '')\nAssert::isOdd($value, $message = '')\nAssert::isEven($value, $message = '')\nAssert::isMultiple($value, $multiple, $message = '')\n\n// nullOr assertions\nAssert::nullOrIsInteger($value, $message = '')\nAssert::nullOrIsNotZero($value, $message = '')\nAssert::nullOrIsPositiveOrZero($value, $message = '')\nAssert::nullOrIsPositive($value, $message = '')\nAssert::nullOrIsNegativeOrZero($value, $message = '')\nAssert::nullOrIsNegative($value, $message = '')\nAssert::nullOrIsBetween($value, $min, $max, $inclusive = false, $message = '')\nAssert::nullOrIsOdd($value, $message = '')\nAssert::nullOrIsEven($value, $message = '')\nAssert::nullOrIsMultiple($value, $multiple, $message = '')\n```\n\n#### Float \u0026 Double Assertions\n\n```php\nAssert::isFloat($value, $message = '')\nAssert::isNotZero($value, $message = '')\nAssert::isPositiveOrZero($value, $message = '')\nAssert::isPositive($value, $message = '')\nAssert::isNegativeOrZero($value, $message = '')\nAssert::isNegative($value, $message = '')\nAssert::isBetween($value, $min, $max, $inclusive = false, $message = '')\nAssert::isOdd($value, $message = '')\nAssert::isEven($value, $message = '')\nAssert::isMultiple($value, $multiple, $message = '')\n\n// nullOr assertions\nAssert::nullOrIsFloat($value, $message = '')\nAssert::nullOrIsNotZero($value, $message = '')\nAssert::nullOrIsPositiveOrZero($value, $message = '')\nAssert::nullOrIsPositive($value, $message = '')\nAssert::nullOrIsNegativeOrZero($value, $message = '')\nAssert::nullOrIsNegative($value, $message = '')\nAssert::nullOrIsBetween($value, $min, $max, $inclusive = false, $message = '')\nAssert::nullOrIsOdd($value, $message = '')\nAssert::nullOrIsEven($value, $message = '')\nAssert::nullOrIsMultiple($value, $multiple, $message = '')\n```\n\n#### Array \u0026 Collection Assertions\n\n```php\nAssert::isArray($value, $message = '')\nAssert::each($value, callable $valueValidator, callable $keyValidator = null, $message = '')\nAssert::hasKeyFormat($value, callable $keyValidator, $message = '')\nAssert::endsWith($haystack, $needle, $strict = false, $message = '')\nAssert::contains($haystack, $needle, $strict = false, $message = '')\nAssert::hasKey($value, $keyName, $message = '')\nAssert::hasLength($value, $length, $message = '')\nAssert::isNotEmpty($value, $message = '')\nAssert::startsWith($haystack, $needle, $strict = false, $message = '')\n\n// nullOr assertions\nAssert::nullOrIsArray($value, $message = '')\nAssert::nullOrEach($value, callable $valueValidator, callable $keyValidator = null, $message = '')\nAssert::nullOrHasKeyFormat($value, callable $keyValidator, $message = '')\nAssert::nullOrEndsWith($haystack, $needle, $strict = false, $message = '')\nAssert::nullOrContains($haystack, $needle, $strict = false, $message = '')\nAssert::nullOrHasKey($value, $keyName, $message = '')\nAssert::nullOrHasLength($value, $length, $message = '')\nAssert::nullOrIsNotEmpty($value, $message = '')\nAssert::nullOrStartsWith($haystack, $needle, $strict = false, $message = '')\n```\n\n#### DateTime Assertions\n\n```php\nAssert::isDateTime($value, $message = '')\nAssert::isAfter($value, $limit, $inclusive = false, $message = '')\nAssert::isBefore($value, $limit, $inclusive = false, $message = '')\nAssert::isDateRange($value, $minDate, $maxDate, $inclusive = false, $message = '')\nAssert::isWeekend($value, $message = '')\nAssert::isWeekday($value, $message = '')\nAssert::isMonday($value, $message = '')\nAssert::isTuesday($value, $message = '')\nAssert::isWednesday($value, $message = '')\nAssert::isThursday($value, $message = '')\nAssert::isFriday($value, $message = '')\nAssert::isSaturday($value, $message = '')\nAssert::isSunday($value, $message = '')\nAssert::isToday($value, $message = '')\nAssert::isYesterday($value, $message = '')\nAssert::isTomorrow($value, $message = '')\nAssert::isLeapYear($value, $message = '')\nAssert::isMorning($value, $message = '')\nAssert::isAfternoon($value, $message = '')\nAssert::isEvening($value, $message = '')\nAssert::isNight($value, $message = '')\nAssert::isFutureDate($value, $message = '')\nAssert::isPastDate($value, $message = '')\nAssert::isInNextWeek($value, $message = '')\nAssert::isInWeek($value, $weekNumber, $message)\nAssert::isInLastWeek($value, $message = '')\nAssert::isInLastMonth($value, $message = '')\nAssert::isInMonth($value, $monthNumber, $message)\nAssert::isInNextMonth($value, $message = '')\nAssert::isInLastYear($value, $message = '')\nAssert::isInYear($value, $yearNumber, $message)\nAssert::isInNextYear($value, $message = '')\nAssert::isFirstHalfOfYear($value, $message = '')\nAssert::isSecondHalfOfYear($value, $message = '')\nAssert::isTrimesterOfYear($value, $trimester, $message = '')\nAssert::isQuarterOfYear($value, $quarter, $message = '')\nAssert::isDayLightSavingTime($value, \\DateTimeZone $timezone, $message = '')\n\n// nullOr assertions\nAssert::nullOrIsDateTime($value, $message = '')\nAssert::nullOrIsAfter($value, $limit, $inclusive = false, $message = '')\nAssert::nullOrIsBefore($value, $limit, $inclusive = false, $message = '')\nAssert::nullOrIsDateRange($value, $minDate, $maxDate, $inclusive = false, $message = '')\nAssert::nullOrIsWeekend($value, $message = '')\nAssert::nullOrIsWeekday($value, $message = '')\nAssert::nullOrIsMonday($value, $message = '')\nAssert::nullOrIsTuesday($value, $message = '')\nAssert::nullOrIsWednesday($value, $message = '')\nAssert::nullOrIsThursday($value, $message = '')\nAssert::nullOrIsFriday($value, $message = '')\nAssert::nullOrIsSaturday($value, $message = '')\nAssert::nullOrIsSunday($value, $message = '')\nAssert::nullOrIsToday($value, $message = '')\nAssert::nullOrIsYesterday($value, $message = '')\nAssert::nullOrIsTomorrow($value, $message = '')\nAssert::nullOrIsLeapYear($value, $message = '')\nAssert::nullOrIsMorning($value, $message = '')\nAssert::nullOrIsAfternoon($value, $message = '')\nAssert::nullOrIsEvening($value, $message = '')\nAssert::nullOrIsNight($value, $message = '')\nAssert::nullOrIsFutureDate($value, $message = '')\nAssert::nullOrIsPastDate($value, $message = '')\nAssert::nullOrIsInNextWeek($value, $message = '')\nAssert::nullOrIsInWeek($value, $weekNumber, $message)\nAssert::nullOrIsInLastWeek($value, $message = '')\nAssert::nullOrIsInLastMonth($value, $message = '')\nAssert::nullOrIsInMonth($value, $monthNumber, $message)\nAssert::nullOrIsInNextMonth($value, $message = '')\nAssert::nullOrIsInLastYear($value, $message = '')\nAssert::nullOrIsInYear($value, $yearNumber, $message)\nAssert::nullOrIsInNextYear($value, $message = '')\nAssert::nullOrIsFirstHalfOfYear($value, $message = '')\nAssert::nullOrIsSecondHalfOfYear($value, $message = '')\nAssert::nullOrIsTrimesterOfYear($value, $trimester, $message = '')\nAssert::nullOrIsQuarterOfYear($value, $quarter, $message = '')\nAssert::nullOrIsDayLightSavingTime($value, \\DateTimeZone $timezone, $message = '')\n```\n\n#### Object Assertions\n\n```php\nAssert::isObject($value, $message = '')\nAssert::isInstanceOf($value, $instanceOf, $message = '')\nAssert::hasProperty($value, $property, $message = '')\nAssert::hasMethod($value, $method, $message = '')\nAssert::hasParentClass($value, $message = '')\nAssert::isChildOf($value, $parentClass, $message = '')\nAssert::inheritsFrom($value, $inheritsClass, $message = '')\nAssert::hasInterface($value, $interface, $message = '')\n\n// nullOr assertions\nAssert::nullOrIsObject($value, $message = '')\nAssert::nullOrIsInstanceOf($value, $instanceOf, $message = '')\nAssert::nullOrHasProperty($value, $property, $message = '')\nAssert::nullOrHasMethod($value, $method, $message = '')\nAssert::nullOrHasParentClass($value, $message = '')\nAssert::nullOrIsChildOf($value, $parentClass, $message = '')\nAssert::nullOrInheritsFrom($value, $inheritsClass, $message = '')\nAssert::nullOrHasInterface($value, $interface, $message = '')\n```\n\n#### FileUpload Assertions\n\nFileUpload Assertions look into the `$_FILES` global variable.\n\n```php\nAssert::isFileUploaded($uploadName, $message = '')\nAssert::isFileUploadedBetweenFileSize($uploadName, $minSize, $maxSize, $format='B', $inclusive = false, $message = '')\nAssert::hasFileUploadedFileNameFormat($uploadName, callable $assertion, $message = '')\nAssert::hasFileUploadedValidUploadDirectory($uploadName, $uploadDir, $message = '')\nAssert::isFileUploadedNotOverwritingExistingFile($uploadName, $uploadDir, $message = '')\nAssert::hasFileUploadedFileNameLength($uploadName, $size, $message = '')\nAssert::isFileUploadedImage($uploadName, $message = '')\nAssert::isFileUploadedMimeType($uploadName, array $allowedTypes, $message = '') \n\n// nullOr assertions\nAssert::nullOrIsFileUploaded($uploadName, $message = '')\nAssert::nullOrIsFileUploadedBetweenFileSize($uploadName, $minSize, $maxSize, $format='B', $inclusive=false, $message='')\nAssert::nullOrHasFileUploadedFileNameFormat($uploadName, callable $assertion, $message = '')\nAssert::nullOrHasFileUploadedValidUploadDirectory($uploadName, $uploadDir, $message = '')\nAssert::nullOrIsFileUploadedNotOverwritingExistingFile($uploadName, $uploadDir, $message = '')\nAssert::nullOrHasFileUploadedFileNameLength($uploadName, $size, $message = '')\nAssert::nullOrIsFileUploadedImage($uploadName, $message = '')\nAssert::nullOrIsFileUploadedMimeType($uploadName, array $allowedTypes, $message = '') \n```\n\n## Contribute\n\nContributions to the package are always welcome!\n\n* Report any bugs or issues you find on the [issue tracker](https://github.com/nilportugues/php-assert/issues/new).\n* You can grab the source code at the package's [Git repository](https://github.com/nilportugues/php-assert).\n\n\n## Support\n\nGet in touch with me using one of the following means:\n\n - Emailing me at \u003ccontact@nilportugues.com\u003e\n - Opening an [Issue](https://github.com/nilportugues/php-assert/issues/new)\n\n## Authors\n\n* [Nil Portugués Calderó](http://nilportugues.com)\n* [The Community Contributors](https://github.com/nilportugues/php-assert/graphs/contributors)\n\n\n## License\nThe code base is licensed under the [MIT license](LICENSE).\n","funding_links":["https://paypal.me/nilportugues"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnilportugues%2Fphp-assert","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnilportugues%2Fphp-assert","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnilportugues%2Fphp-assert/lists"}