Weave 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 provides efficient PHP assertions for method input and output, throwing Webmozart\Assert\InvalidArgumentException on failure. It reduces validation boilerplate and supports clear custom error messages with consistent placeholders.

View on GitHub
Deep Wiki
Context7
2.4.1

Fixed

  • Corrected uuid assertion to prevent braces and prefixes being inside the value.
2.4.0

Changed

  • Updated docblocks for many methods, improving psalm support and type hints.
2.3.0

Changed

  • Clarified documentation and testing of uniqueValues.

Added

  • All assertions now support string|callable for the message.
2.2.0

Added

  • Added isNotInstanceOfAny assertion.
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.
jinas/dhivatar
store-doc/laravel-storage-driver
plus-it/laravel-translation-manager
diephp/perhaps
diephp/telegraph
osmaviation/spreadsheet
microsoft/fluentui-system-icons
mmccook/php-json-canonicalization-scheme
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console
pnscripts/filament-broadquill-lite
pnscripts/laravel-sentfold-lite
vleap/mx-sdk-laravel-internal
twidpay/utils
htetmyathlaing/scout-elasticsearch-driver
artisan-toolbox/front-awesome
ls/client-assistant
users-au/laravel-client
cgv/localized-resource