{"id":36332596,"url":"https://github.com/ko-ko-ko/php-assert","last_synced_at":"2026-01-11T12:01:32.215Z","repository":{"id":31221103,"uuid":"34782209","full_name":"ko-ko-ko/php-assert","owner":"ko-ko-ko","description":"Fast flexible php assert","archived":false,"fork":false,"pushed_at":"2016-08-24T07:04:42.000Z","size":290,"stargazers_count":18,"open_issues_count":0,"forks_count":1,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-08-28T07:50:36.110Z","etag":null,"topics":["assert","php","security","validation"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ko-ko-ko.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-04-29T08:34:15.000Z","updated_at":"2020-04-27T12:21:44.000Z","dependencies_parsed_at":"2022-08-26T11:41:51.318Z","dependency_job_id":null,"html_url":"https://github.com/ko-ko-ko/php-assert","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/ko-ko-ko/php-assert","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ko-ko-ko%2Fphp-assert","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ko-ko-ko%2Fphp-assert/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ko-ko-ko%2Fphp-assert/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ko-ko-ko%2Fphp-assert/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ko-ko-ko","download_url":"https://codeload.github.com/ko-ko-ko/php-assert/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ko-ko-ko%2Fphp-assert/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28302002,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-11T11:18:18.743Z","status":"ssl_error","status_checked_at":"2026-01-11T11:07:56.842Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["assert","php","security","validation"],"created_at":"2026-01-11T12:00:53.747Z","updated_at":"2026-01-11T12:01:32.210Z","avatar_url":"https://github.com/ko-ko-ko.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"php-assert\n=====\n\n[![][build-img]][build-url] [![][quality-img]][quality-url] [![][coverage-img]][coverage-url] [![][stable-img]][package-url] [![][license-img]][package-url]\n\n[build-url]: https://travis-ci.org/ko-ko-ko/php-assert?branch=master\n[build-img]: https://travis-ci.org/ko-ko-ko/php-assert.svg?branch=master\n[quality-url]: https://scrutinizer-ci.com/g/ko-ko-ko/php-assert/?branch=master\n[quality-img]: https://scrutinizer-ci.com/g/ko-ko-ko/php-assert/badges/quality-score.png?b=master\n[coverage-url]: https://scrutinizer-ci.com/g/ko-ko-ko/php-assert/?branch=master\n[coverage-img]: https://scrutinizer-ci.com/g/ko-ko-ko/php-assert/badges/coverage.png?b=master\n[stable-img]: https://poser.pugx.org/ko-ko-ko/assert/version\n[license-img]: https://poser.pugx.org/ko-ko-ko/assert/license\n[package-url]: https://packagist.org/packages/ko-ko-ko/assert\n\n## Yet another validator, WHY??\n\n## It's very fast and designed to be used in any method\n\nThere are many other cool asserts, but for their usability you must pay by time \u0026 memory of execution.\nThis assert gives you very simple and fast API.\n\n![](logo.jpg)\n\n## Installation\n\nThe preferred way to install this extension is through [composer](http://getcomposer.org/download/).\n\n```sh\nphp composer.phar require --prefer-dist ko-ko-ko/assert \"~1.1.0\"\n```\n\nor add line to require section of `composer.json`\n\n```json\n\"ko-ko-ko/assert\": \"~1.1.0\"\n```\n\n## Usage\n\n```php\nuse KoKoKo\\assert\\Assert;\n\nAssert::assert($var, 'var')-\u003enotEmpty()-\u003estring();\n\n// It's the same as\n\nif (empty($var)) {\n    throw new \\InvalidArgumentException('Param $var must be not empty');\n}\n\nif (!is_string($var)) {\n    throw new \\InvalidArgumentException('Param $var must be string');\n}\n```\n\n-- --\n\nBASIC API\n=========\n\n#### assert($value, $name)\n\nBuild validation object\n\n* `$value` checking value. MUST be: array, bool, float, int, null, string\n* `$name` name of variable, used in exception message. MUST be string\n\n```php\n// OK\nAssert::assert('', 'var')-\u003eisEmpty();\nAssert::assert(5, 'var', '\\LogicException');\n\n// EXCEPTION: var MUST NOT be an object\nAssert::assert(new stdClass(), 'var');\n```\n\n-- --\n\nVALIDATION API\n==============\n\nGeneral asserts\n------------------\n\n#### isEmpty `Check if value empty`\n\n* Antipode: **notEmpty**\n\n```php\n// OK\nAssert::assert('', 'var')-\u003eisEmpty();\nAssert::assert('5', 'var')-\u003enotEmpty();\n\n// EXCEPTION\nAssert::assert('5', 'var')-\u003eisEmpty();\nAssert::assert([], 'var')-\u003enotEmpty();\n```\n\n#### isArray `Check if value is array`\n\n```php\n// OK\nAssert::assert([], 'var')-\u003eisArray();\n\n// EXCEPTION\nAssert::assert('5', 'var')-\u003eisArray();\n```\n\n#### bool `Check if value is bool`\n\n```php\n// OK\nAssert::assert(false, 'var')-\u003ebool();\n\n// EXCEPTION\nAssert::assert('5', 'var')-\u003ebool();\n```\n\n#### float `Check if value is float`\n\n```php\n// OK\nAssert::assert(15.2, 'var')-\u003efloat();\n\n// EXCEPTION\nAssert::assert('15.2', 'var')-\u003efloat();\nAssert::assert([], 'var')-\u003efloat();\n```\n\n#### int `Check if value is int`\n\n```php\n// OK\nAssert::assert(15, 'var')-\u003eint();\n\n// EXCEPTION\nAssert::assert(15.2, 'var')-\u003eint();\nAssert::assert([], 'var')-\u003eint();\n```\n\n#### numeric `Check if value is numeric`\n\n```php\n// OK\nAssert::assert(15, 'var')-\u003enumeric();\n\n// EXCEPTION\nAssert::assert('*', 'var')-\u003enumeric();\n```\n\n#### isNull `Check if value is null`\n\n* Antipode: **notNull**\n\n```php\n// OK\nAssert::assert(null, 'var')-\u003eisNull();\nAssert::assert('a', 'var')-\u003enotNull();\n\n// EXCEPTION\nAssert::assert('a', 'var')-\u003eisNull();\nAssert::assert(null, 'var')-\u003enotNull();\n```\n\n#### string `Check if value is string`\n\n```php\n// OK\nAssert::assert('5', 'var')-\u003estring();\n\n// EXCEPTION\nAssert::assert([], 'var')-\u003estring();\n```\n\n#### resource `Check if value is resource`\n\n```php\n// OK\nAssert::assert(tmpfile(), 'var')-\u003eresource();\n\n// EXCEPTION\nAssert::assert(5, 'var')-\u003eresource();\n```\n\n#### inArray($range) `Check if value is in array $range`\n\nArguments:\n\n* `$range` MUST be array\n\n```php\n// OK\nAssert::assert('a', 'var')-\u003einArray(['a', 'b']);\n\n// EXCEPTION\nAssert::assert('c', 'var')-\u003einArray(['a', 'b']);\n\n// ----------\n\n// EXCEPTION: $range MUST be array\nAssert::assert(['a'], 'var')-\u003einArray('a');\n```\n\n#### isSame($anotherValue) `Check if value is same as $anotherValue`\n\n* Antipode: **notSame**\n\nArguments:\n\n* `$anotherValue` MUST be not object\n\n```php\n// OK\nAssert::assert('a', 'var')-\u003eisSame('a');\n\n// EXCEPTION\nAssert::assert('a', 'var')-\u003eisSame('b');\n\n// ----------\n\n// EXCEPTION: $anotherValue MUST be not object\nAssert::assert('a', 'var')-\u003eisSame(new \\stdClass());\n```\n\n#### notSame($anotherValue) `Check if value is not same as $anotherValue`\n\n* Antipode: **isSame**\n\nArguments:\n\n* `$anotherValue` MUST be not object\n\n```php\n// OK\nAssert::assert('a', 'var')-\u003enotSame('b');\n\n// EXCEPTION\nAssert::assert('a', 'var')-\u003enotSame('a');\n\n// ----------\n\n// EXCEPTION: $anotherValue MUST be not object\nAssert::assert('a', 'var')-\u003enotSame(new \\stdClass());\n```\n\n-- --\n\nString asserts\n--------------\n\nAll string asserts run previously:\n\n* **string**\n\n\n#### digit `Check if value contains only digits`\n\n```php\n// OK\nAssert::assert('5', 'var')-\u003edigit();\n\n// EXCEPTION\nAssert::assert('c', 'var')-\u003edigit();\n\n// ----------\n\n// EXCEPTION: var MUST be string\nAssert::assert(5, 'var')-\u003edigit();\n```\n\n#### match($pattern) `Check if value match RegExp pattern`\n\nArguments:\n\n* `$pattern` MUST be correct RegExp pattern\n\n```php\n// OK\nAssert::assert('a', 'var')-\u003ematch('/a/');\n\n// EXCEPTION\nAssert::assert('b', 'var')-\u003ematch('/a/');\n\n// ----------\n\n// EXCEPTION: pattern MUST be not empty\nAssert::assert('a', 'var')-\u003ematch('');\n\n// EXCEPTION: var MUST be string\nAssert::assert(5, 'var')-\u003ematch('/a/');\n\n// EXCEPTION: pattern MUST be correct RegExp\nAssert::assert('a', 'var')-\u003ematch('/a');\n```\n\n#### glob($pattern) `Check if value match glob pattern`\n\n```php\n// OK\nAssert::assert('aa', 'var')-\u003eglob('a*');\n\n// EXCEPTION\nAssert::assert('bb', 'var')-\u003eglob('a*');\n\n// ----------\n\n// EXCEPTION: pattern MUST be not empty\nAssert::assert('a', 'var')-\u003eglob('');\n\n// EXCEPTION: pattern MUST be string\nAssert::assert('a', 'var')-\u003eglob(false);\n\n// EXCEPTION: var MUST be string\nAssert::assert(5, 'var')-\u003eglob('/a/');\n```\n\n#### length($length) `Check if value has length exactly $length`\n\nArguments:\n\n* `$length` MUST be integer \u003e= 0\n\n```php\n// OK\nAssert::assert('aa', 'var')-\u003elength(2);\n\n// EXCEPTION\nAssert::assert('bb', 'var')-\u003elength(5);\n\n// ----------\n\n// EXCEPTION: length MUST be int\nAssert::assert('a', 'var')-\u003elength(null);\n\n// EXCEPTION: length MUST be more \u003e= 0\nAssert::assert('a', 'var')-\u003elength(-2);\n\n// EXCEPTION: var MUST be string\nAssert::assert(5, 'var')-\u003elength(1);\n```\n\n#### lengthLess($length) `Check if value has length less than $length`\n\n* Antipode: **lengthMore**\n\nArguments:\n\n* `$length` MUST be integer \u003e 0\n\n```php\n// OK\nAssert::assert('aa', 'var')-\u003elengthLess(5);\nAssert::assert('bb', 'var')-\u003elengthMore(1);\n\n// EXCEPTION\nAssert::assert('bb', 'var')-\u003elengthLess(1);\nAssert::assert('aa', 'var')-\u003elengthMore(5);\n\n// ----------\n\n// EXCEPTION: length MUST be int\nAssert::assert('a', 'var')-\u003elengthLess(null);\nAssert::assert('a', 'var')-\u003elengthMore(null);\n\n// EXCEPTION: length MUST be more \u003e= 0\nAssert::assert('a', 'var')-\u003elengthLess(-2);\nAssert::assert('a', 'var')-\u003elengthMore(-2);\n\n// EXCEPTION: var MUST be string\nAssert::assert(5, 'var')-\u003elengthLess(1);\nAssert::assert([], 'var')-\u003elengthMore(1);\n```\n\n#### lengthBetween($from, $to) `Check that value length is $from \u003c= $value \u003c= $to`\n\nArguments:\n\n* `$from` MUST be integer \u003e= 0\n* `$to` MUST be integer \u003e= 0\n* `$from` MUST less than `$to`\n\n```php\n// OK\nAssert::assert('aa', 'var')-\u003elengthBetween(1, 5);\n\n// EXCEPTION\nAssert::assert('bb', 'var')-\u003elengthBetween(3, 10);\n\n// ----------\n\n// EXCEPTION: form MUST be int\nAssert::assert('a', 'var')-\u003elengthBetween(null, 5);\n\n// EXCEPTION: to MUST be int\nAssert::assert('a', 'var')-\u003elengthBetween(1, []);\n\n// EXCEPTION: form MUST be more \u003e= 0\nAssert::assert('a', 'var')-\u003elengthBetween(-2, 5);\n\n// EXCEPTION: form MUST be more than to\nAssert::assert('a', 'var')-\u003elengthBetween(5, 1);\n\n// EXCEPTION: var MUST be string\nAssert::assert(5, 'var')-\u003elengthBetween(1);\n```\n\n-- --\n\nNumber asserts (int or float)\n--------------------------------\n\n**All number MUST be int or float** \n\n#### positive `Check if value is positive (not 0)`\n\n* Antipode: **negative** `Check if value is negative (not 0)`\n\n```php\n// OK\nAssert::assert(1, 'var')-\u003epositive();\nAssert::assert(-5, 'var')-\u003enegative();\n\n// EXCEPTION\nAssert::assert(-1, 'var')-\u003epositive();\nAssert::assert(0, 'var')-\u003epositive();\nAssert::assert(10, 'var')-\u003enegative();\nAssert::assert(0, 'var')-\u003enegative();\n\n// ----------\n\n// EXCEPTION: var MUST be int or float\nAssert::assert('A', 'var')-\u003epositive();\nAssert::assert([], 'var')-\u003enegative();\n```\n\n#### less($number) `Check if value is $value \u003c= $number`\n\n* Similar: **lessStrict** Check that value is `$value \u003c $number`\n* Antipode: **more** Check that value is `$value \u003e= $number`\n* Antipode: **moreStrict** Check that value is `$value \u003e $number`\n\nArguments:\n\n* `$number` MUST be integer or float\n\n```php\n// OK\nAssert::assert(1, 'var')-\u003eless(2);\nAssert::assert(10, 'var')-\u003emore(5);\n\n// EXCEPTION\nAssert::assert(10, 'var')-\u003eless(5);\nAssert::assert(1, 'var')-\u003emore(2);\n\n// ----------\n\n// EXCEPTION: length MUST be int or float\nAssert::assert(1, 'var')-\u003eless(null);\nAssert::assert(1, 'var')-\u003emore(null);\n\n// EXCEPTION: var MUST be int or float\nAssert::assert('A', 'var')-\u003eless(1);\nAssert::assert([], 'var')-\u003emore(1);\n```\n\n#### between($from, $to) `Check that value is $from \u003c= $value \u003c= $to`\n\n* Similar: **betweenStrict** Check that value is `$from \u003c $value \u003c $to`\n\nArguments:\n\n* `$from` MUST be int or float\n* `$to` MUST be int or float\n* `$from` MUST less than `$to`\n\n```php\n// OK\nAssert::assert(2, 'var')-\u003ebetween(1, 5);\n\n// EXCEPTION\nAssert::assert(2.5, 'var')-\u003ebetween(3, 10);\n\n// ----------\n\n// EXCEPTION: form MUST be int\nAssert::assert(2, 'var')-\u003ebetween(null, 5);\n\n// EXCEPTION: to MUST be int\nAssert::assert(2, 'var')-\u003ebetween(1, []);\n\n// EXCEPTION: form MUST be more than to\nAssert::assert(2, 'var')-\u003ebetween(5, 1);\n\n// EXCEPTION: var MUST be int or float\nAssert::assert('A', 'var')-\u003ebetween(1);\n```\n\n-- --\n\nArray asserts\n--------------\n\n#### hasKey($key) `Check if array key exists`\n\nArguments:\n\n* `$key` MUST be string or int\n\n```php\n// OK\nAssert::assert(['a' =\u003e 'b', 'c' =\u003e 'd'], 'data')-\u003ehasKey('a');\n\n// EXCEPTION\nAssert::assert(['a' =\u003e 'b', 'c' =\u003e 'd'], 'data')-\u003ehasKey('e');\n\n// ----------\n\n// EXCEPTION: data MUST be an array\nAssert::assert('notArray', 'data')-\u003ehasKey(1);\n\n// EXCEPTION: key MUST be string or int\nAssert::assert(['a' =\u003e 'b', 'c' =\u003e 'd'], 'data')-\u003ehasKey(null);\n\n```\n\n#### count($count) `Check if array elements count is same as $count`\n\nArguments:\n\n* `$count` MUST be int and greater than 0\n\n```php\n// OK\nAssert::assert(['a', 'b', 'c'], 'data')-\u003ecount(3);\n\n// EXCEPTION\nAssert::assert(['a', 'c', 'd'], 'data')-\u003ecount(1);\n\n// ----------\n\n// EXCEPTION: data MUST be an array\nAssert::assert('notArray', 'data')-\u003ehasKey(1);\n\n// EXCEPTION: count MUST be int\nAssert::assert(['a', 'c', 'd'], 'data')-\u003ecount(null);\n\n// EXCEPTION: count MUST be greater than 0\nAssert::assert(['a', 'c', 'd'], 'data')-\u003ecount(-5);\n\n```\n\n-- --\n\nLOOP ASSERTS API\n================\n\n#### forList `Run callable function for each element in list`\n\n```php\n// OK\n$data = [1, 2, 3, 4, 5];\n\nAssert::assert($data, 'data')-\u003eforList(\n    function (Assert $assert) {\n        $assert-\u003eint()-\u003epositive();\n    }\n);\n\n// ----------\n\n// EXCEPTION: data MUST be array\nAssert::assert('some data', 'data')-\u003eforList(\n    function (Assert $assert) {}\n);\n\n// EXCEPTION: $data: key 'a' MUST be int\nAssert::assert(['a' =\u003e 'b'], 'data')-\u003eforList(\n    function (Assert $assert) {}\n);\n\n```\n\n#### forMap `Run callable function for each element in map`\n\n**Attention**: arrays like `['1' =\u003e 'a', '2' =\u003e 'b']` php will convert to `[1 =\u003e 'a', 2 =\u003e 'b']`\n\n```php\n// OK\n$data = ['A' =\u003e 'A1', 'B' =\u003e 'B1', 'C' =\u003e 'C1'];\n\nAssert::assert($data, 'data')-\u003eforMap(\n    function (Assert $keyAssert, Assert $valueAssert) {\n        $keyAssert-\u003elengthMore(1);\n        $valueAssert-\u003elengthMore(1);\n    }\n);\n\n// ----------\n\n// EXCEPTION: data MUST be array\nAssert::assert('some data', 'data')-\u003eforMap(\n    function (Assert $keyAssert, Assert $valueAssert) {}\n);\n```\n\n-- --\n\nCAST API\n========\n\n#### get `Returns value as is`\n\n```php\n// RETURN 'a'\nAssert::assert('a', 'var')-\u003eget();\n```\n\n#### toBool `Converts any type to bool`\n\n```php\n// RETURN true\nAssert::assert('a', 'var')-\u003etoBool()-\u003eget();\n```\n\n#### toFloat `Converts any type (except array) to float`\n\n**Value MUST NOT be array**\n\n```php\n// RETURN 0.0\nAssert::assert('a', 'var')-\u003etoFloat()-\u003eget();\n\n// RETURN -15.2\nAssert::assert('-15.2', 'var')-\u003etoFloat()-\u003eget();\n\n// ----------\n\n// EXCEPTION: var MUST NOT be array\nAssert::assert([], 'var')-\u003etoFloat()-\u003eget();\n```\n\n#### toInt `Converts any type (except array) to int`\n\n**Value MUST NOT be array**\n\n```php\n// RETURN 0\nAssert::assert('a', 'var')-\u003etoInt()-\u003eget();\n\n// RETURN -15\nAssert::assert('-15.2', 'var')-\u003etoInt()-\u003eget();\n\n// ----------\n\n// EXCEPTION: var MUST NOT be array\nAssert::assert([], 'var')-\u003etoInt()-\u003eget();\n```\n\n#### toString `Converts any type (except array) to string`\n\n**Value MUST NOT be array**\n\n```php\n// RETURN ''\nAssert::assert(false, 'var')-\u003etoString()-\u003eget();\n\n// RETURN '-15'\nAssert::assert(-15, 'var')-\u003etoString()-\u003eget();\n\n// ----------\n\n// EXCEPTION: var MUST NOT be array\nAssert::assert([], 'var')-\u003etoString()-\u003eget();\n```\n\n## Testing\n\n#### Run tests from console\n\n```sh\nmake test\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fko-ko-ko%2Fphp-assert","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fko-ko-ko%2Fphp-assert","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fko-ko-ko%2Fphp-assert/lists"}