Blame | Last modification | View Log | Download
Webmozart Assert================[](https://travis-ci.org/webmozart/assert)[](https://ci.appveyor.com/project/webmozart/assert/branch/master)[](https://packagist.org/packages/webmozart/assert)[](https://packagist.org/packages/webmozart/assert)[](https://www.versioneye.com/php/webmozart:assert/1.2.0)Latest release: [1.2.0](https://packagist.org/packages/webmozart/assert#1.2.0)PHP >= 5.3.9This library contains efficient assertions to test the input and output ofyour methods. With these assertions, you can greatly reduce the amount of codingneeded to write a safe implementation.All assertions in the [`Assert`] class throw an `\InvalidArgumentException` ifthey fail.FAQ---**What's the difference to [beberlei/assert]?**This library is heavily inspired by Benjamin Eberlei's wonderful [assert package],but fixes a usability issue with error messages that can't be fixed there withoutbreaking backwards compatibility.This package features usable error messages by default. However, you can alsoeasily write custom error messages:```Assert::string($path, 'The path is expected to be a string. Got: %s');```In [beberlei/assert], the ordering of the `%s` placeholders is different forevery assertion. This package, on the contrary, provides consistent placeholderordering for all assertions:* `%s`: The tested value as string, e.g. `"/foo/bar"`.* `%2$s`, `%3$s`, ...: Additional assertion-specific values, e.g. theminimum/maximum length, allowed values, etc.Check the source code of the assertions to find out details about the additionalavailable placeholders.Installation------------Use [Composer] to install the package:```$ composer require webmozart/assert```Example-------```phpuse Webmozart\Assert\Assert;class Employee{public function __construct($id){Assert::integer($id, 'The employee ID must be an integer. Got: %s');Assert::greaterThan($id, 0, 'The employee ID must be a positive integer. Got: %s');}}```If you create an employee with an invalid ID, an exception is thrown:```phpnew Employee('foobar');// => InvalidArgumentException:// The employee ID must be an integer. Got: stringnew Employee(-10);// => InvalidArgumentException:// The employee ID must be a positive integer. Got: -10```Assertions----------The [`Assert`] class provides the following assertions:### Type AssertionsMethod | Description----------------------------------------------- | --------------------------------------------------`string($value, $message = '')` | Check that a value is a string`stringNotEmpty($value, $message = '')` | Check that a value is a non-empty string`integer($value, $message = '')` | Check that a value is an integer`integerish($value, $message = '')` | Check that a value casts to an integer`float($value, $message = '')` | Check that a value is a float`numeric($value, $message = '')` | Check that a value is numeric`boolean($value, $message = '')` | Check that a value is a boolean`scalar($value, $message = '')` | Check that a value is a scalar`object($value, $message = '')` | Check that a value is an object`resource($value, $type = null, $message = '')` | Check that a value is a resource`isCallable($value, $message = '')` | Check that a value is a callable`isArray($value, $message = '')` | Check that a value is an array`isTraversable($value, $message = '')` | Check that a value is an array or a `\Traversable``isInstanceOf($value, $class, $message = '')` | Check that a value is an `instanceof` a class`notInstanceOf($value, $class, $message = '')` | Check that a value is not an `instanceof` a class### Comparison AssertionsMethod | Description----------------------------------------------- | --------------------------------------------------`true($value, $message = '')` | Check that a value is `true``false($value, $message = '')` | Check that a value is `false``null($value, $message = '')` | Check that a value is `null``notNull($value, $message = '')` | Check that a value is not `null``isEmpty($value, $message = '')` | Check that a value is `empty()``notEmpty($value, $message = '')` | Check that a value is not `empty()``eq($value, $value2, $message = '')` | Check that a value equals another (`==`)`notEq($value, $value2, $message = '')` | Check that a value does not equal another (`!=`)`same($value, $value2, $message = '')` | Check that a value is identical to another (`===`)`notSame($value, $value2, $message = '')` | Check that a value is not identical to another (`!==`)`greaterThan($value, $value2, $message = '')` | Check that a value is greater than another`greaterThanEq($value, $value2, $message = '')` | Check that a value is greater than or equal to another`lessThan($value, $value2, $message = '')` | Check that a value is less than another`lessThanEq($value, $value2, $message = '')` | Check that a value is less than or equal to another`range($value, $min, $max, $message = '')` | Check that a value is within a range`oneOf($value, array $values, $message = '')` | Check that a value is one of a list of values### String AssertionsYou should check that a value is a string with `Assert::string()` before makingany of the following assertions.Method | Description--------------------------------------------------- | --------------------------------------------------`contains($value, $subString, $message = '')` | Check that a string contains a substring`startsWith($value, $prefix, $message = '')` | Check that a string has a prefix`startsWithLetter($value, $message = '')` | Check that a string starts with a letter`endsWith($value, $suffix, $message = '')` | Check that a string has a suffix`regex($value, $pattern, $message = '')` | Check that a string matches a regular expression`alpha($value, $message = '')` | Check that a string contains letters only`digits($value, $message = '')` | Check that a string contains digits only`alnum($value, $message = '')` | Check that a string contains letters and digits only`lower($value, $message = '')` | Check that a string contains lowercase characters only`upper($value, $message = '')` | Check that a string contains uppercase characters only`length($value, $length, $message = '')` | Check that a string has a certain number of characters`minLength($value, $min, $message = '')` | Check that a string has at least a certain number of characters`maxLength($value, $max, $message = '')` | Check that a string has at most a certain number of characters`lengthBetween($value, $min, $max, $message = '')` | Check that a string has a length in the given range`uuid($value, $message = '')` | Check that a string is a valid UUID### File AssertionsMethod | Description----------------------------------- | --------------------------------------------------`fileExists($value, $message = '')` | Check that a value is an existing path`file($value, $message = '')` | Check that a value is an existing file`directory($value, $message = '')` | Check that a value is an existing directory`readable($value, $message = '')` | Check that a value is a readable path`writable($value, $message = '')` | Check that a value is a writable path### Object AssertionsMethod | Description----------------------------------------------------- | --------------------------------------------------`classExists($value, $message = '')` | Check that a value is an existing class name`subclassOf($value, $class, $message = '')` | Check that a class is a subclass of another`implementsInterface($value, $class, $message = '')` | Check that a class implements an interface`propertyExists($value, $property, $message = '')` | Check that a property exists in a class/object`propertyNotExists($value, $property, $message = '')` | Check that a property does not exist in a class/object`methodExists($value, $method, $message = '')` | Check that a method exists in a class/object`methodNotExists($value, $method, $message = '')` | Check that a method does not exist in a class/object### Array AssertionsMethod | Description------------------------------------------- | --------------------------------------------------`keyExists($array, $key, $message = '')` | Check that a key exists in an array`keyNotExists($array, $key, $message = '')` | Check that a key does not exist in an array`count($array, $number, $message = '')` | Check that an array contains a specific number of elements### Function AssertionsMethod | Description------------------------------------------- | -----------------------------------------------------------------------------------------------------`throws($closure, $class, $message = '')` | Check that a function throws a certain exception. Subclasses of the exception class will be accepted.### Collection AssertionsAll of the above assertions can be prefixed with `all*()` to test the contentsof an array or a `\Traversable`:```phpAssert::allIsInstanceOf($employees, 'Acme\Employee');```### Nullable AssertionsAll of the above assertions can be prefixed with `nullOr*()` to run theassertion only if it the value is not `null`:```phpAssert::nullOrString($middleName, 'The middle name must be a string or null. Got: %s');```Authors-------* [Bernhard Schussek] a.k.a. [@webmozart]* [The Community Contributors]Contribute----------Contributions to the package are always welcome!* Report any bugs or issues you find on the [issue tracker].* You can grab the source code at the package's [Git repository].Support-------If you are having problems, send a mail to bschussek@gmail.com or shout out to[@webmozart] on Twitter.License-------All contents of this package are licensed under the [MIT license].[beberlei/assert]: https://github.com/beberlei/assert[assert package]: https://github.com/beberlei/assert[Composer]: https://getcomposer.org[Bernhard Schussek]: http://webmozarts.com[The Community Contributors]: https://github.com/webmozart/assert/graphs/contributors[issue tracker]: https://github.com/webmozart/assert[Git repository]: https://github.com/webmozart/assert[@webmozart]: https://twitter.com/webmozart[MIT license]: LICENSE[`Assert`]: src/Assert.php