Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Assert Laravel Package

webmozart/assert

webmozart/assert is a lightweight PHP assertion library for validating method input/output. It provides many type and value checks via a single Assert class and throws InvalidArgumentException with consistent, readable default error messages (or custom ones).

View on GitHub
Deep Wiki
Context7
2.1.6

Fixed

  • Corrected docblocks for list* methods.
2.1.5

Fixed

  • Fixed regression of instanceOf messages
2.1.4

Fixed

  • Use custom message for more internal calls.
2.1.3

Fixed

  • Corrected isList type documentation.
  • Corrected isAOf, isInstanceOf, etc type documentation.
2.1.2

Fixed

  • Changed all* assertion values back to mixed.
2.1.1

Fixed

  • Optimized stringNotEmpty by internally using notSame.
2.1.0

Fixed

  • Corrected [@param](https://github.com/param) declaration for isMap.
  • Pass custom message to internal assertion calls.
2.0.0

Changed

  • BREAKING Minimum PHP version is now 8.2 (was 7.2).
  • BREAKING Remove deprecated isTraversable, use isIterable or isInstanceOf instead.
  • BREAKING Added declare(strict_types=1) to all classes.
  • Updated CI/CD test matrix to test PHP 8.2, 8.3, 8.4, and 8.5.
  • Updated development tools (PHPUnit, Psalm, PHP-CS-Fixer) to supported versions.
  • Added explicit return types and parameter types to all methods in both source code and tests.

Added

  • All assertion methods now return the checked value.
  • Added notInArray and notOneOf.
  • Added isInitialized, to check if a class property is initialized.
  • Added negativeInteger and notNegativeInteger
  • Added isStatic and notStatic

Fixed

  • Corrected validation of emails with unicode characters.
1.11.0

Added

  • Added explicit (non-magic) allNullOr* methods, with [@psalm-assert](https://github.com/psalm-assert) annotations, for better Psalm support.

Changed

  • Trait methods will now check the assertion themselves, instead of using __callStatic
  • isList will now deal correctly with (modified) lists that contain NaN
  • reportInvalidArgument now has a return type of never.

Removed

  • Removed symfony/polyfill-ctype as a dependency, and require ext-ctype instead.
    • You can still require the symfony/polyfill-ctype in your project if you need it, as it provides ext-ctype
1.10.0

Added

  • On invalid assertion, we throw a Webmozart\Assert\InvalidArgumentException
  • Added Assert::positiveInteger()

Changed

  • Using a trait with real implementations of all*() and nullOr*() methods to improve psalm compatibility.

Removed

  • Support for PHP <7.2
1.9.1
1.9.0
  • added better Psalm support for all* & nullOr* methods
  • These methods are now understood by Psalm through a mixin. You may need a newer version of Psalm in order to use this
  • added [@psalm-pure](https://github.com/psalm-pure) annotation to Assert::notFalse()
  • added more [@psalm-assert](https://github.com/psalm-assert) annotations where appropriate
1.8.0

Added

  • added Assert::notStartsWith()
  • added Assert::notEndsWith()
  • added Assert::inArray()
  • added [@psalm-pure](https://github.com/psalm-pure) annotations to pure assertions

Fixed

  • Exception messages of comparisons between DateTime(Immutable) objects now display their date & time.
  • Custom Exception messages for Assert::count() now use the values to render the exception message.
1.7.0

Added

  • added Assert::notFalse()
  • added Assert::isAOf()
  • added Assert::isAnyOf()
  • added Assert::isNotA()
1.6.0

Added

  • added Assert::validArrayKey()
  • added Assert::isNonEmptyList()
  • added Assert::isNonEmptyMap()
  • added [@throws](https://github.com/throws) InvalidArgumentException annotations to all methods that throw.
  • added [@psalm-assert](https://github.com/psalm-assert) for the list type to the isList assertion.

Fixed

  • ResourceBundle & SimpleXMLElement now pass the isCountable assertions. They are countable, without implementing the Countable interface.
  • The doc block of range now has the proper variables.
  • An empty array will now pass isList and isMap. As it is a valid form of both. If a non-empty variant is needed, use isNonEmptyList or isNonEmptyMap.

Changed

  • Removed some [@psalm-assert](https://github.com/psalm-assert) annotations, that were 'side effect' assertions See:
  • If you use Psalm, the minimum version needed is 3.6.0. Which is enforced through a composer conflict. If you don't use Psalm, then this has no impact.
1.5.0

Added

  • added Assert::uniqueValues()
  • added Assert::unicodeLetters()
  • added: Assert::email()
  • added support for Psalm, by adding [@psalm-assert](https://github.com/psalm-assert) annotations where appropriate.

Fixed

  • Assert::endsWith() would not give the correct result when dealing with a multibyte suffix.
  • Assert::length(), minLength, maxLength, lengthBetween would not give the correct result when dealing with multibyte characters.

NOTE: These 2 changes may break your assertions if you relied on the fact that multibyte characters didn't behave correctly.

Changed

  • The names of some variables have been updated to better reflect what they are.
  • All function calls are now in their FQN form, slightly increasing performance.
  • Tests are now properly ran against HHVM-3.30 and PHP nightly.

Deprecation

  • deprecated Assert::isTraversable() in favor of Assert::isIterable()
    • This was already done in 1.3.0, but it was only done through a silenced trigger_error. It is now annotated as well.
1.4.0

Added

  • added Assert::ip()
  • added Assert::ipv4()
  • added Assert::ipv6()
  • added Assert::notRegex()
  • added Assert::interfaceExists()
  • added Assert::isList()
  • added Assert::isMap()
  • added polyfill for ctype

Fixed

  • Special case when comparing objects implementing __toString()
1.3.0

Added

  • added Assert::minCount()
  • added Assert::maxCount()
  • added Assert::countBetween()
  • added Assert::isCountable()
  • added Assert::notWhitespaceOnly()
  • added Assert::natural()
  • added Assert::notContains()
  • added Assert::isArrayAccessible()
  • added Assert::isInstanceOfAny()
  • added Assert::isIterable()

Fixed

  • stringNotEmpty will no longer report "0" is an empty string

Deprecation

  • deprecated Assert::isTraversable() in favor of Assert::isIterable()
1.2.0
  • added Assert::throws()
  • added Assert::count()
  • added extension point Assert::reportInvalidArgument() for custom subclasses
1.1.0
  • added Assert::object()
  • added Assert::propertyExists()
  • added Assert::propertyNotExists()
  • added Assert::methodExists()
  • added Assert::methodNotExists()
  • added Assert::uuid()
1.0.2
  • integrated Style CI
  • add tests for minimum package dependencies on Travis CI
1.0.1
  • added support for PHP 5.3.3
1.0.0
  • first stable release
1.0.0-beta
  • first beta release
Fixed
  • provisional support for PHP 8.0
Changed
  • the all* & nullOr* methods are now declared on an interface, instead of [@method](https://github.com/method) annotations. This interface is linked to the Assert class with a [@mixin](https://github.com/mixin) annotation. Most IDEs have supported this for a long time, and you should not lose any autocompletion capabilities. PHPStan has supported this since version 0.12.20. This package is marked incompatible (with a composer conflict) with phpstan version prior to that. If you do not use PHPStan than this does not matter.
1.12.1

Fixed

  • Exclude tools from export.
1.12.0

Fixed

  • Corrected messages and typos in various assertions.
  • Document void return type.
  • Prevent UUIDs with trailing newlines from validating.
  • Assert values are strings before ctype checks.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
davejamesmiller/laravel-breadcrumbs
artisanry/parsedown
christhompsontldr/phpsdk
enqueue/dsn
bunny/bunny
enqueue/test
enqueue/null
enqueue/amqp-tools
milesj/emojibase
bower-asset/punycode
bower-asset/inputmask
bower-asset/jquery
bower-asset/yii2-pjax
laravel/nova
spatie/laravel-mailcoach
spatie/laravel-superseeder
laravel/liferaft
nst/json-test-suite
danielmiessler/sec-lists
jackalope/jackalope-transport