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

The preferred way to install this extension is through composer.
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"
use KoKoKo\assert\Assert;Assert::assert($var, 'var')->notEmpty()->string();// It's the same asif (empty($var)) {throw new \InvalidArgumentException('Param $var must be not empty');}if (!is_string($var)) {throw new \InvalidArgumentException('Param $var must be string');}
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
// OKAssert::assert('', 'var')->isEmpty();Assert::assert(5, 'var', '\LogicException');// EXCEPTION: var MUST NOT be an objectAssert::assert(new stdClass(), 'var');
Check if value empty
// OKAssert::assert('', 'var')->isEmpty();Assert::assert('5', 'var')->notEmpty();// EXCEPTIONAssert::assert('5', 'var')->isEmpty();Assert::assert([], 'var')->notEmpty();
Check if value is array
// OKAssert::assert([], 'var')->isArray();// EXCEPTIONAssert::assert('5', 'var')->isArray();
Check if value is bool
// OKAssert::assert(false, 'var')->bool();// EXCEPTIONAssert::assert('5', 'var')->bool();
Check if value is float
// OKAssert::assert(15.2, 'var')->float();// EXCEPTIONAssert::assert('15.2', 'var')->float();Assert::assert([], 'var')->float();
Check if value is int
// OKAssert::assert(15, 'var')->int();// EXCEPTIONAssert::assert(15.2, 'var')->int();Assert::assert([], 'var')->int();
Check if value is numeric
// OKAssert::assert(15, 'var')->numeric();// EXCEPTIONAssert::assert('*', 'var')->numeric();
Check if value is null
// OKAssert::assert(null, 'var')->isNull();Assert::assert('a', 'var')->notNull();// EXCEPTIONAssert::assert('a', 'var')->isNull();Assert::assert(null, 'var')->notNull();
Check if value is string
// OKAssert::assert('5', 'var')->string();// EXCEPTIONAssert::assert([], 'var')->string();
Check if value is resource
// OKAssert::assert(tmpfile(), 'var')->resource();// EXCEPTIONAssert::assert(5, 'var')->resource();
Check if value is in array $rangeArguments:
$range MUST be array
// OKAssert::assert('a', 'var')->inArray(['a', 'b']);// EXCEPTIONAssert::assert('c', 'var')->inArray(['a', 'b']);// ----------// EXCEPTION: $range MUST be arrayAssert::assert(['a'], 'var')->inArray('a');
Check if value is same as $anotherValueArguments:
$anotherValue MUST be not object
// OKAssert::assert('a', 'var')->isSame('a');// EXCEPTIONAssert::assert('a', 'var')->isSame('b');// ----------// EXCEPTION: $anotherValue MUST be not objectAssert::assert('a', 'var')->isSame(new \stdClass());
Check if value is not same as $anotherValueArguments:
$anotherValue MUST be not object
// OKAssert::assert('a', 'var')->notSame('b');// EXCEPTIONAssert::assert('a', 'var')->notSame('a');// ----------// EXCEPTION: $anotherValue MUST be not objectAssert::assert('a', 'var')->notSame(new \stdClass());
All string asserts run previously:
Check if value contains only digits
// OKAssert::assert('5', 'var')->digit();// EXCEPTIONAssert::assert('c', 'var')->digit();// ----------// EXCEPTION: var MUST be stringAssert::assert(5, 'var')->digit();
Check if value match RegExp patternArguments:
$pattern MUST be correct RegExp pattern
// OKAssert::assert('a', 'var')->match('/a/');// EXCEPTIONAssert::assert('b', 'var')->match('/a/');// ----------// EXCEPTION: pattern MUST be not emptyAssert::assert('a', 'var')->match('');// EXCEPTION: var MUST be stringAssert::assert(5, 'var')->match('/a/');// EXCEPTION: pattern MUST be correct RegExpAssert::assert('a', 'var')->match('/a');
Check if value match glob pattern
// OKAssert::assert('aa', 'var')->glob('a*');// EXCEPTIONAssert::assert('bb', 'var')->glob('a*');// ----------// EXCEPTION: pattern MUST be not emptyAssert::assert('a', 'var')->glob('');// EXCEPTION: pattern MUST be stringAssert::assert('a', 'var')->glob(false);// EXCEPTION: var MUST be stringAssert::assert(5, 'var')->glob('/a/');
Check if value has length exactly $lengthArguments:
$length MUST be integer >= 0
// OKAssert::assert('aa', 'var')->length(2);// EXCEPTIONAssert::assert('bb', 'var')->length(5);// ----------// EXCEPTION: length MUST be intAssert::assert('a', 'var')->length(null);// EXCEPTION: length MUST be more >= 0Assert::assert('a', 'var')->length(-2);// EXCEPTION: var MUST be stringAssert::assert(5, 'var')->length(1);
Check if value has length less than $lengthArguments:
$length MUST be integer > 0
// OKAssert::assert('aa', 'var')->lengthLess(5);Assert::assert('bb', 'var')->lengthMore(1);// EXCEPTIONAssert::assert('bb', 'var')->lengthLess(1);Assert::assert('aa', 'var')->lengthMore(5);// ----------// EXCEPTION: length MUST be intAssert::assert('a', 'var')->lengthLess(null);Assert::assert('a', 'var')->lengthMore(null);// EXCEPTION: length MUST be more >= 0Assert::assert('a', 'var')->lengthLess(-2);Assert::assert('a', 'var')->lengthMore(-2);// EXCEPTION: var MUST be stringAssert::assert(5, 'var')->lengthLess(1);Assert::assert([], 'var')->lengthMore(1);
Check that value length is $from <= $value <= $toArguments:
$from MUST be integer >= 0$to MUST be integer >= 0$from MUST less than $to
// OKAssert::assert('aa', 'var')->lengthBetween(1, 5);// EXCEPTIONAssert::assert('bb', 'var')->lengthBetween(3, 10);// ----------// EXCEPTION: form MUST be intAssert::assert('a', 'var')->lengthBetween(null, 5);// EXCEPTION: to MUST be intAssert::assert('a', 'var')->lengthBetween(1, []);// EXCEPTION: form MUST be more >= 0Assert::assert('a', 'var')->lengthBetween(-2, 5);// EXCEPTION: form MUST be more than toAssert::assert('a', 'var')->lengthBetween(5, 1);// EXCEPTION: var MUST be stringAssert::assert(5, 'var')->lengthBetween(1);
All number MUST be int or float
Check if value is positive (not 0)Check if value is negative (not 0)
// OKAssert::assert(1, 'var')->positive();Assert::assert(-5, 'var')->negative();// EXCEPTIONAssert::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 floatAssert::assert('A', 'var')->positive();Assert::assert([], 'var')->negative();
Check if value is $value <= $number$value < $number$value >= $number$value > $numberArguments:
$number MUST be integer or float
// OKAssert::assert(1, 'var')->less(2);Assert::assert(10, 'var')->more(5);// EXCEPTIONAssert::assert(10, 'var')->less(5);Assert::assert(1, 'var')->more(2);// ----------// EXCEPTION: length MUST be int or floatAssert::assert(1, 'var')->less(null);Assert::assert(1, 'var')->more(null);// EXCEPTION: var MUST be int or floatAssert::assert('A', 'var')->less(1);Assert::assert([], 'var')->more(1);
Check that value is $from <= $value <= $to$from < $value < $toArguments:
$from MUST be int or float$to MUST be int or float$from MUST less than $to
// OKAssert::assert(2, 'var')->between(1, 5);// EXCEPTIONAssert::assert(2.5, 'var')->between(3, 10);// ----------// EXCEPTION: form MUST be intAssert::assert(2, 'var')->between(null, 5);// EXCEPTION: to MUST be intAssert::assert(2, 'var')->between(1, []);// EXCEPTION: form MUST be more than toAssert::assert(2, 'var')->between(5, 1);// EXCEPTION: var MUST be int or floatAssert::assert('A', 'var')->between(1);
Check if array key existsArguments:
$key MUST be string or int
// OKAssert::assert(['a' => 'b', 'c' => 'd'], 'data')->hasKey('a');// EXCEPTIONAssert::assert(['a' => 'b', 'c' => 'd'], 'data')->hasKey('e');// ----------// EXCEPTION: data MUST be an arrayAssert::assert('notArray', 'data')->hasKey(1);// EXCEPTION: key MUST be string or intAssert::assert(['a' => 'b', 'c' => 'd'], 'data')->hasKey(null);
Check if array elements count is same as $countArguments:
$count MUST be int and greater than 0
// OKAssert::assert(['a', 'b', 'c'], 'data')->count(3);// EXCEPTIONAssert::assert(['a', 'c', 'd'], 'data')->count(1);// ----------// EXCEPTION: data MUST be an arrayAssert::assert('notArray', 'data')->hasKey(1);// EXCEPTION: count MUST be intAssert::assert(['a', 'c', 'd'], 'data')->count(null);// EXCEPTION: count MUST be greater than 0Assert::assert(['a', 'c', 'd'], 'data')->count(-5);
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 arrayAssert::assert('some data', 'data')->forList(function (Assert $assert) {});// EXCEPTION: $data: key 'a' MUST be intAssert::assert(['a' => 'b'], 'data')->forList(function (Assert $assert) {});
Run callable function for each element in mapAttention: 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 arrayAssert::assert('some data', 'data')->forMap(function (Assert $keyAssert, Assert $valueAssert) {});
Returns value as is
// RETURN 'a'Assert::assert('a', 'var')->get();
Converts any type to bool
// RETURN trueAssert::assert('a', 'var')->toBool()->get();
Converts any type (except array) to floatValue MUST NOT be array
// RETURN 0.0Assert::assert('a', 'var')->toFloat()->get();// RETURN -15.2Assert::assert('-15.2', 'var')->toFloat()->get();// ----------// EXCEPTION: var MUST NOT be arrayAssert::assert([], 'var')->toFloat()->get();
Converts any type (except array) to intValue MUST NOT be array
// RETURN 0Assert::assert('a', 'var')->toInt()->get();// RETURN -15Assert::assert('-15.2', 'var')->toInt()->get();// ----------// EXCEPTION: var MUST NOT be arrayAssert::assert([], 'var')->toInt()->get();
Converts any type (except array) to stringValue MUST NOT be array
// RETURN ''Assert::assert(false, 'var')->toString()->get();// RETURN '-15'Assert::assert(-15, 'var')->toString()->get();// ----------// EXCEPTION: var MUST NOT be arrayAssert::assert([], 'var')->toString()->get();
make test