PHPackages                             ko-ko-ko/assert - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Validation &amp; Sanitization](/categories/validation)
4. /
5. ko-ko-ko/assert

ActiveLibrary[Validation &amp; Sanitization](/categories/validation)

ko-ko-ko/assert
===============

Fast flexible php assert

1.1.0(10y ago)187.8kMITPHP

Since Mar 22Pushed 9y ago4 watchersCompare

[ Source](https://github.com/ko-ko-ko/php-assert)[ Packagist](https://packagist.org/packages/ko-ko-ko/assert)[ RSS](/packages/ko-ko-ko-assert/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (3)Dependencies (1)Versions (5)Used By (0)

php-assert
==========

[](#php-assert)

[![](https://camo.githubusercontent.com/b7009cc9facea48fc0f40faa6f24df9ce3cf103a2b576b28ebd00736d14f3062/68747470733a2f2f7472617669732d63692e6f72672f6b6f2d6b6f2d6b6f2f7068702d6173736572742e7376673f6272616e63683d6d6173746572)](https://travis-ci.org/ko-ko-ko/php-assert?branch=master) [![](https://camo.githubusercontent.com/0b5ed87ff2d2759594a9c5d3a5da96980e14cb5189debf4715e9db9e26db2a96/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f6b6f2d6b6f2d6b6f2f7068702d6173736572742f6261646765732f7175616c6974792d73636f72652e706e673f623d6d6173746572)](https://scrutinizer-ci.com/g/ko-ko-ko/php-assert/?branch=master) [![](https://camo.githubusercontent.com/64ae8dc712dee94f8de450084638ae610c3f80c5576eecaeb1aed0c2c877f1f2/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f6b6f2d6b6f2d6b6f2f7068702d6173736572742f6261646765732f636f7665726167652e706e673f623d6d6173746572)](https://scrutinizer-ci.com/g/ko-ko-ko/php-assert/?branch=master) [![](https://camo.githubusercontent.com/6a43a7c6f50ca4997e4d9a23fe80e782d246cfad0cb29a004b46f2b64e1212cd/68747470733a2f2f706f7365722e707567782e6f72672f6b6f2d6b6f2d6b6f2f6173736572742f76657273696f6e)](https://packagist.org/packages/ko-ko-ko/assert) [![](https://camo.githubusercontent.com/46d3a9aa7c2fe33fdfe59277b432729859a9c08c940083ae2b8600cd5ef16102/68747470733a2f2f706f7365722e707567782e6f72672f6b6f2d6b6f2d6b6f2f6173736572742f6c6963656e7365)](https://packagist.org/packages/ko-ko-ko/assert)

Yet another validator, WHY??
----------------------------

[](#yet-another-validator-why)

It's very fast and designed to be used in any method
----------------------------------------------------

[](#its-very-fast-and-designed-to-be-used-in-any-method)

There are many other cool asserts, but for their usability you must pay by time &amp; memory of execution. This assert gives you very simple and fast API.

[![](logo.jpg)](logo.jpg)

Installation
------------

[](#installation)

The preferred way to install this extension is through [composer](http://getcomposer.org/download/).

```
php composer.phar require --prefer-dist ko-ko-ko/assert "~1.1.0"
```

or add line to require section of `composer.json`

```
"ko-ko-ko/assert": "~1.1.0"
```

Usage
-----

[](#usage)

```
use KoKoKo\assert\Assert;

Assert::assert($var, 'var')->notEmpty()->string();

// It's the same as

if (empty($var)) {
    throw new \InvalidArgumentException('Param $var must be not empty');
}

if (!is_string($var)) {
    throw new \InvalidArgumentException('Param $var must be string');
}
```

---

BASIC API
=========

[](#basic-api)

#### assert($value, $name)

[](#assertvalue-name)

Build validation object

- `$value` checking value. MUST be: array, bool, float, int, null, string
- `$name` name of variable, used in exception message. MUST be string

```
// OK
Assert::assert('', 'var')->isEmpty();
Assert::assert(5, 'var', '\LogicException');

// EXCEPTION: var MUST NOT be an object
Assert::assert(new stdClass(), 'var');
```

---

VALIDATION API
==============

[](#validation-api)

General asserts
---------------

[](#general-asserts)

#### isEmpty `Check if value empty`

[](#isempty-check-if-value-empty)

- Antipode: **notEmpty**

```
// OK
Assert::assert('', 'var')->isEmpty();
Assert::assert('5', 'var')->notEmpty();

// EXCEPTION
Assert::assert('5', 'var')->isEmpty();
Assert::assert([], 'var')->notEmpty();
```

#### isArray `Check if value is array`

[](#isarray-check-if-value-is-array)

```
// OK
Assert::assert([], 'var')->isArray();

// EXCEPTION
Assert::assert('5', 'var')->isArray();
```

#### bool `Check if value is bool`

[](#bool-check-if-value-is-bool)

```
// OK
Assert::assert(false, 'var')->bool();

// EXCEPTION
Assert::assert('5', 'var')->bool();
```

#### float `Check if value is float`

[](#float-check-if-value-is-float)

```
// OK
Assert::assert(15.2, 'var')->float();

// EXCEPTION
Assert::assert('15.2', 'var')->float();
Assert::assert([], 'var')->float();
```

#### int `Check if value is int`

[](#int-check-if-value-is-int)

```
// OK
Assert::assert(15, 'var')->int();

// EXCEPTION
Assert::assert(15.2, 'var')->int();
Assert::assert([], 'var')->int();
```

#### numeric `Check if value is numeric`

[](#numeric-check-if-value-is-numeric)

```
// OK
Assert::assert(15, 'var')->numeric();

// EXCEPTION
Assert::assert('*', 'var')->numeric();
```

#### isNull `Check if value is null`

[](#isnull-check-if-value-is-null)

- Antipode: **notNull**

```
// OK
Assert::assert(null, 'var')->isNull();
Assert::assert('a', 'var')->notNull();

// EXCEPTION
Assert::assert('a', 'var')->isNull();
Assert::assert(null, 'var')->notNull();
```

#### string `Check if value is string`

[](#string-check-if-value-is-string)

```
// OK
Assert::assert('5', 'var')->string();

// EXCEPTION
Assert::assert([], 'var')->string();
```

#### resource `Check if value is resource`

[](#resource-check-if-value-is-resource)

```
// OK
Assert::assert(tmpfile(), 'var')->resource();

// EXCEPTION
Assert::assert(5, 'var')->resource();
```

#### inArray($range) `Check if value is in array $range`

[](#inarrayrange-check-if-value-is-in-array-range)

Arguments:

- `$range` MUST be array

```
// OK
Assert::assert('a', 'var')->inArray(['a', 'b']);

// EXCEPTION
Assert::assert('c', 'var')->inArray(['a', 'b']);

// ----------

// EXCEPTION: $range MUST be array
Assert::assert(['a'], 'var')->inArray('a');
```

#### isSame($anotherValue) `Check if value is same as $anotherValue`

[](#issameanothervalue-check-if-value-is-same-as-anothervalue)

- Antipode: **notSame**

Arguments:

- `$anotherValue` MUST be not object

```
// OK
Assert::assert('a', 'var')->isSame('a');

// EXCEPTION
Assert::assert('a', 'var')->isSame('b');

// ----------

// EXCEPTION: $anotherValue MUST be not object
Assert::assert('a', 'var')->isSame(new \stdClass());
```

#### notSame($anotherValue) `Check if value is not same as $anotherValue`

[](#notsameanothervalue-check-if-value-is-not-same-as-anothervalue)

- Antipode: **isSame**

Arguments:

- `$anotherValue` MUST be not object

```
// OK
Assert::assert('a', 'var')->notSame('b');

// EXCEPTION
Assert::assert('a', 'var')->notSame('a');

// ----------

// EXCEPTION: $anotherValue MUST be not object
Assert::assert('a', 'var')->notSame(new \stdClass());
```

---

String asserts
--------------

[](#string-asserts)

All string asserts run previously:

- **string**

#### digit `Check if value contains only digits`

[](#digit-check-if-value-contains-only-digits)

```
// OK
Assert::assert('5', 'var')->digit();

// EXCEPTION
Assert::assert('c', 'var')->digit();

// ----------

// EXCEPTION: var MUST be string
Assert::assert(5, 'var')->digit();
```

#### match($pattern) `Check if value match RegExp pattern`

[](#matchpattern-check-if-value-match-regexp-pattern)

Arguments:

- `$pattern` MUST be correct RegExp pattern

```
// OK
Assert::assert('a', 'var')->match('/a/');

// EXCEPTION
Assert::assert('b', 'var')->match('/a/');

// ----------

// EXCEPTION: pattern MUST be not empty
Assert::assert('a', 'var')->match('');

// EXCEPTION: var MUST be string
Assert::assert(5, 'var')->match('/a/');

// EXCEPTION: pattern MUST be correct RegExp
Assert::assert('a', 'var')->match('/a');
```

#### glob($pattern) `Check if value match glob pattern`

[](#globpattern-check-if-value-match-glob-pattern)

```
// OK
Assert::assert('aa', 'var')->glob('a*');

// EXCEPTION
Assert::assert('bb', 'var')->glob('a*');

// ----------

// EXCEPTION: pattern MUST be not empty
Assert::assert('a', 'var')->glob('');

// EXCEPTION: pattern MUST be string
Assert::assert('a', 'var')->glob(false);

// EXCEPTION: var MUST be string
Assert::assert(5, 'var')->glob('/a/');
```

#### length($length) `Check if value has length exactly $length`

[](#lengthlength-check-if-value-has-length-exactly-length)

Arguments:

- `$length` MUST be integer &gt;= 0

```
// OK
Assert::assert('aa', 'var')->length(2);

// EXCEPTION
Assert::assert('bb', 'var')->length(5);

// ----------

// EXCEPTION: length MUST be int
Assert::assert('a', 'var')->length(null);

// EXCEPTION: length MUST be more >= 0
Assert::assert('a', 'var')->length(-2);

// EXCEPTION: var MUST be string
Assert::assert(5, 'var')->length(1);
```

#### lengthLess($length) `Check if value has length less than $length`

[](#lengthlesslength-check-if-value-has-length-less-than-length)

- Antipode: **lengthMore**

Arguments:

- `$length` MUST be integer &gt; 0

```
// OK
Assert::assert('aa', 'var')->lengthLess(5);
Assert::assert('bb', 'var')->lengthMore(1);

// EXCEPTION
Assert::assert('bb', 'var')->lengthLess(1);
Assert::assert('aa', 'var')->lengthMore(5);

// ----------

// EXCEPTION: length MUST be int
Assert::assert('a', 'var')->lengthLess(null);
Assert::assert('a', 'var')->lengthMore(null);

// EXCEPTION: length MUST be more >= 0
Assert::assert('a', 'var')->lengthLess(-2);
Assert::assert('a', 'var')->lengthMore(-2);

// EXCEPTION: var MUST be string
Assert::assert(5, 'var')->lengthLess(1);
Assert::assert([], 'var')->lengthMore(1);
```

#### lengthBetween($from, $to) `Check that value length is $from lengthBetween(1, 5);

// EXCEPTION
Assert::assert('bb', 'var')->lengthBetween(3, 10);

// ----------

// EXCEPTION: form MUST be int
Assert::assert('a', 'var')->lengthBetween(null, 5);

// EXCEPTION: to MUST be int
Assert::assert('a', 'var')->lengthBetween(1, []);

// EXCEPTION: form MUST be more >= 0
Assert::assert('a', 'var')->lengthBetween(-2, 5);

// EXCEPTION: form MUST be more than to
Assert::assert('a', 'var')->lengthBetween(5, 1);

// EXCEPTION: var MUST be string
Assert::assert(5, 'var')->lengthBetween(1);
```

---

Number asserts (int or float)
-----------------------------

[](#number-asserts-int-or-float)

**All number MUST be int or float**

#### positive `Check if value is positive (not 0)`

[](#positive-check-if-value-is-positive-not-0)

- Antipode: **negative** `Check if value is negative (not 0)`

```
// OK
Assert::assert(1, 'var')->positive();
Assert::assert(-5, 'var')->negative();

// EXCEPTION
Assert::assert(-1, 'var')->positive();
Assert::assert(0, 'var')->positive();
Assert::assert(10, 'var')->negative();
Assert::assert(0, 'var')->negative();

// ----------

// EXCEPTION: var MUST be int or float
Assert::assert('A', 'var')->positive();
Assert::assert([], 'var')->negative();
```

#### less($number) `Check if value is $value = $number`
- Antipode: **moreStrict** Check that value is `$value > $number`

Arguments:

- `$number` MUST be integer or float

```
// OK
Assert::assert(1, 'var')->less(2);
Assert::assert(10, 'var')->more(5);

// EXCEPTION
Assert::assert(10, 'var')->less(5);
Assert::assert(1, 'var')->more(2);

// ----------

// EXCEPTION: length MUST be int or float
Assert::assert(1, 'var')->less(null);
Assert::assert(1, 'var')->more(null);

// EXCEPTION: var MUST be int or float
Assert::assert('A', 'var')->less(1);
Assert::assert([], 'var')->more(1);
```

#### between($from, $to) `Check that value is $from between(1, 5);

// EXCEPTION
Assert::assert(2.5, 'var')->between(3, 10);

// ----------

// EXCEPTION: form MUST be int
Assert::assert(2, 'var')->between(null, 5);

// EXCEPTION: to MUST be int
Assert::assert(2, 'var')->between(1, []);

// EXCEPTION: form MUST be more than to
Assert::assert(2, 'var')->between(5, 1);

// EXCEPTION: var MUST be int or float
Assert::assert('A', 'var')->between(1);
```

---

Array asserts
-------------

[](#array-asserts)

#### hasKey($key) `Check if array key exists`

[](#haskeykey-check-if-array-key-exists)

Arguments:

- `$key` MUST be string or int

```
// OK
Assert::assert(['a' => 'b', 'c' => 'd'], 'data')->hasKey('a');

// EXCEPTION
Assert::assert(['a' => 'b', 'c' => 'd'], 'data')->hasKey('e');

// ----------

// EXCEPTION: data MUST be an array
Assert::assert('notArray', 'data')->hasKey(1);

// EXCEPTION: key MUST be string or int
Assert::assert(['a' => 'b', 'c' => 'd'], 'data')->hasKey(null);
```

#### count($count) `Check if array elements count is same as $count`

[](#countcount-check-if-array-elements-count-is-same-as-count)

Arguments:

- `$count` MUST be int and greater than 0

```
// OK
Assert::assert(['a', 'b', 'c'], 'data')->count(3);

// EXCEPTION
Assert::assert(['a', 'c', 'd'], 'data')->count(1);

// ----------

// EXCEPTION: data MUST be an array
Assert::assert('notArray', 'data')->hasKey(1);

// EXCEPTION: count MUST be int
Assert::assert(['a', 'c', 'd'], 'data')->count(null);

// EXCEPTION: count MUST be greater than 0
Assert::assert(['a', 'c', 'd'], 'data')->count(-5);
```

---

LOOP ASSERTS API
================

[](#loop-asserts-api)

#### forList `Run callable function for each element in list`

[](#forlist-run-callable-function-for-each-element-in-list)

```
// OK
$data = [1, 2, 3, 4, 5];

Assert::assert($data, 'data')->forList(
    function (Assert $assert) {
        $assert->int()->positive();
    }
);

// ----------

// EXCEPTION: data MUST be array
Assert::assert('some data', 'data')->forList(
    function (Assert $assert) {}
);

// EXCEPTION: $data: key 'a' MUST be int
Assert::assert(['a' => 'b'], 'data')->forList(
    function (Assert $assert) {}
);
```

#### forMap `Run callable function for each element in map`

[](#formap-run-callable-function-for-each-element-in-map)

**Attention**: arrays like `['1' => 'a', '2' => 'b']` php will convert to `[1 => 'a', 2 => 'b']`

```
// OK
$data = ['A' => 'A1', 'B' => 'B1', 'C' => 'C1'];

Assert::assert($data, 'data')->forMap(
    function (Assert $keyAssert, Assert $valueAssert) {
        $keyAssert->lengthMore(1);
        $valueAssert->lengthMore(1);
    }
);

// ----------

// EXCEPTION: data MUST be array
Assert::assert('some data', 'data')->forMap(
    function (Assert $keyAssert, Assert $valueAssert) {}
);
```

---

CAST API
========

[](#cast-api)

#### get `Returns value as is`

[](#get-returns-value-as-is)

```
// RETURN 'a'
Assert::assert('a', 'var')->get();
```

#### toBool `Converts any type to bool`

[](#tobool-converts-any-type-to-bool)

```
// RETURN true
Assert::assert('a', 'var')->toBool()->get();
```

#### toFloat `Converts any type (except array) to float`

[](#tofloat-converts-any-type-except-array-to-float)

**Value MUST NOT be array**

```
// RETURN 0.0
Assert::assert('a', 'var')->toFloat()->get();

// RETURN -15.2
Assert::assert('-15.2', 'var')->toFloat()->get();

// ----------

// EXCEPTION: var MUST NOT be array
Assert::assert([], 'var')->toFloat()->get();
```

#### toInt `Converts any type (except array) to int`

[](#toint-converts-any-type-except-array-to-int)

**Value MUST NOT be array**

```
// RETURN 0
Assert::assert('a', 'var')->toInt()->get();

// RETURN -15
Assert::assert('-15.2', 'var')->toInt()->get();

// ----------

// EXCEPTION: var MUST NOT be array
Assert::assert([], 'var')->toInt()->get();
```

#### toString `Converts any type (except array) to string`

[](#tostring-converts-any-type-except-array-to-string)

**Value MUST NOT be array**

```
// RETURN ''
Assert::assert(false, 'var')->toString()->get();

// RETURN '-15'
Assert::assert(-15, 'var')->toString()->get();

// ----------

// EXCEPTION: var MUST NOT be array
Assert::assert([], 'var')->toString()->get();
```

Testing
-------

[](#testing)

#### Run tests from console

[](#run-tests-from-console)

```
make test
```

###  Health Score

34

—

LowBetter than 77% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity28

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity66

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~123 days

Total

4

Last Release

3705d ago

Major Versions

0.2.0 → 1.0.02016-01-09

### Community

Maintainers

![](https://www.gravatar.com/avatar/7b8a28fe7485e2e7c7e42ebd15c4bd6da4f56dcc307c29f52f9b1d08b656ab78?d=identicon)[index0h](/maintainers/index0h)

---

Top Contributors

[![index0h](https://avatars.githubusercontent.com/u/675070?v=4)](https://github.com/index0h "index0h (116 commits)")

---

Tags

assertphpsecurityvalidation

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/ko-ko-ko-assert/health.svg)

```
[![Health](https://phpackages.com/badges/ko-ko-ko-assert/health.svg)](https://phpackages.com/packages/ko-ko-ko-assert)
```

###  Alternatives

[webmozart/assert

Assertions to validate method input/output with nice error messages.

7.6k894.0M1.2k](/packages/webmozart-assert)[bensampo/laravel-enum

Simple, extensible and powerful enumeration implementation for Laravel.

2.0k15.9M104](/packages/bensampo-laravel-enum)[swaggest/json-schema

High definition PHP structures with JSON-schema based validation

48612.5M73](/packages/swaggest-json-schema)[stevebauman/purify

An HTML Purifier / Sanitizer for Laravel

5325.6M19](/packages/stevebauman-purify)[ashallendesign/laravel-config-validator

A package for validating your Laravel app's config.

217905.3k5](/packages/ashallendesign-laravel-config-validator)[crazybooot/base64-validation

Laravel validators for base64 encoded files

1341.9M8](/packages/crazybooot-base64-validation)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
